Commit Graph

90 Commits

Author SHA1 Message Date
Jim Broadus a62062127e Fix thread-safety issues when initially loading devices from the database.
When DeviceManager initializes, it creates a thread to load device information
from the database. Part of this process includes use of QPixMap for icons which
produced a warning message:

22:32:53.763 WARN  unknown                          QPixmap: It is not safe to use pixmaps outside the GUI thread

In addition, the device is added to the view using beginInsertRows and
endInsertRows. This could contend with a device added by a lister signaling
PhysicalDeviceAdded.

To solve these problems, this change moves the icon loading and insertion to the
main thread. LoadAllDevices reads the data from the database and creates the
DeviceInfo object, then sends a signal to the main thread. In the signal
handler, the icon is loaded and the device is added to the master list and view.
2019-02-24 00:03:45 -08:00
Jonas Kvinge ed3d462674 Fix memory leak and use ItemToIndex / IndexToItem (#6262) 2019-01-21 21:38:46 +00:00
Jonas Kvinge 7e25a7c7e4 Convert devices manager(model) to QAbstractItemModel (#6260) 2019-01-21 09:06:48 +00:00
Jim Broadus 6c159481ed Handle MTP connection failures more gracefully. (#6256)
Currently, the failure to connect to an MTP device results in the UI displaying
an open device that appears empty. This change introduces a method
ConnectedDevice::ConnectAsync() that is expected to handle any connecting tasks
that could block asynchronously. Upon completion, this emits a ConnectFinished
signal that indicates success or failure. The row in the UI is only updated
after the successful response is received. Upon failure, DeviceManager will
clean up and the row in UI is left in the pre-connect state.

Currently, only the MtpDevice utilizes this mechanism. All other devices use a
default implementation that immediately reports success.
2019-01-15 21:10:05 +00:00
John Maguire 6f356592a5 Fixes for cross compiling for mac. 2016-12-15 11:36:05 +00:00
Valeriy d4e932db9a udisks2 support for devicemanager (refs #3264) 2016-05-17 22:56:16 +03:00
narunlifescience dd953fd86c check custom icon location, then system theme & then fallback theme
icons added & replaced
2015-10-13 22:35:49 -05:00
John Maguire 3323c2d094 Convert all instances of foreach() to a C++11 for
find ext src -name '*.cpp' -exec \
    sed -i -e 's/foreach(\([^,]\+\),/for (\1 :/' {} \;
2014-02-10 14:43:32 +01:00
Krzysztof A. Sobiecki 0ecf1e76a6 Reformat done with clang-3.5 svn200967 2014-02-07 17:08:31 +01:00
John Maguire bebd781fdf Reformat all non-3rd-party C/C++/Objective-C++.
Command line:
find src ext -regex '.*\.\(h\|cpp\|mm\)' -exec clang-format -i
 -style='{BasedOnStyle: Google, DerivePointerBinding: false}' {} \;
2014-02-07 16:34:20 +01:00
John Maguire 71893e4847 Use nullptr instead of NULL everywhere. 2014-02-06 17:29:59 +01:00
John Maguire d309d4ab27 Use c++11 instead of boost where possible. 2014-02-06 16:51:39 +01:00
David Sansome eb20fb5945 Remove all the soruce for WMDM devices. Fixes issue 3748 2013-06-30 08:25:12 +00:00
John Maguire 3d434f1c88 Remove iDevice support as it doesn't work well for modern devices and libgpod shows no signs of updating to support them.
Fixes issue #3683
2013-05-17 15:30:56 +02:00
John Maguire 42e7e4ff6f Use boost::bind in DeviceManager. 2012-11-21 17:21:20 +01:00
John Maguire 543a6bf2fa Remove use of linked SAC shim and depend on DLL version (which doesn't exist yet) 2012-11-13 17:04:54 +01:00
Arnaud Bienner 0e3dc5a8be Add new ConcurrentRun templates for void functions, and functions with 3 arguments + corresponding test cases.
+ SongLoader now has its own QThreadPool to load folders/playlist in background.
Update issue 2598
This should fix slowliness problems reported.
2012-07-16 00:06:55 +02:00
John Maguire 905ef90882 Add missing header. 2012-06-29 17:06:47 +02:00
John Maguire 20b11961f9 Set the max size of the DeviceManager thread pool to 1. 2012-06-29 16:58:30 +02:00
John Maguire 58a3a6831a Move loading of devices from the database onto a different thread. 2012-06-29 16:56:17 +02:00
David Sansome 526a9d9960 Fix compilation of the WMDM device lister on windows 2012-02-26 16:00:00 +00:00
David Sansome 48f15c9fc7 Refactoring: instead of passing individual pointers to useful core classes (like TaskManager or LibraryBackend) to each class that uses them, pass one singleton-like Application instance everywhere. 2012-02-26 14:40:51 +00:00
Руслан Ижбулатов 5c45e22e28 Make SAC and WMDM optional 2012-01-22 14:35:22 +00:00
John Maguire 50824cafe9 Make AskForScan() per-device rather than per device lister and fix cddadevice to use the url rather than the unique id. 2011-08-11 22:10:14 +02:00
John Maguire b458c9d24c Merge branch 'master' of https://code.google.com/p/clementine-player
Conflicts:
	src/devices/devicemanager.cpp
2011-08-11 21:46:48 +02:00
John Maguire 47a171fca7 Detect cd insertion on mac. 2011-08-11 21:37:09 +02:00
Arnaud Bienner 1a4aa8f641 Make the 'dont ask on first connect' more generic 2011-08-11 00:59:34 +02:00
David Sansome 082716e9c9 Don't try to compile audio CD support if libcdio isn't installed. 2011-08-10 16:30:36 +01:00
David Sansome cbc05354ee Merge branch 'master' of https://code.google.com/p/clementine-player 2011-08-05 08:33:42 +01:00
Black Jack 3de111d84f Fix a crash that occurs when mounting a device with an empty backends container. Fixes issue 2121 2011-08-05 08:20:04 +01:00
Arnaud Bienner c3c4e87827 Remove now useless debug message 2011-08-05 02:35:38 +02:00
Arnaud Bienner f7859f591c Adding CD devices in devices tab. Fixes issue 701. 2011-08-05 02:15:16 +02:00
David Sansome 9fadf57acc Revert "Move TaskManager::Task and UrlHandler::LoadResult structs out of their parent classes - PythonQt doesn't understand nested structs."
This reverts commit 5234798a7f.
2011-07-23 15:32:12 +01:00
David Sansome 5234798a7f Move TaskManager::Task and UrlHandler::LoadResult structs out of their parent classes - PythonQt doesn't understand nested structs. 2011-05-21 10:43:25 +00:00
David Sansome 3eedc916ad Add a new logging system 2011-04-22 16:50:29 +00:00
David Sansome e3a9bd7b26 Make DBUS bits optional on Linux. Thanks Nickollai. Fixes issue #1177 2010-12-26 13:38:35 +00:00
David Sansome ed1a25693c Add missing licenses to debian/copyright, and add copyright information to each source file 2010-11-20 13:27:10 +00:00
David Sansome 44f0934fed Don't crash when physically removing a device 2010-09-18 13:54:23 +00:00
David Sansome c2ac3f8f32 Don't mount GIO devices automatically, instead put them in a "not mounted" state in the GUI and mount them when double-clicked on. Fixes issue #719. Probably fixes issue #723. 2010-09-11 12:29:44 +00:00
David Sansome 28a7039977 Show a warning when the user tries to connect a MTP device or iPod when they've compiled out support for libmtp or libgpod 2010-09-04 12:57:34 +00:00
David Sansome e4efa8a93e Show the total song count on each device, instead of the mountpoint 2010-08-30 14:45:27 +00:00
David Sansome 4b381e00fd Transcode files when copying them to devices 2010-08-29 19:22:21 +00:00
David Sansome 5873fe80a6 Pick a good default format to transcode to 2010-08-29 16:12:55 +00:00
David Sansome d8ea4660e7 Store the device's transcode preference in the database 2010-08-29 15:32:36 +00:00
David Sansome 8306ddc90b Convert paths to native windows seperators in many places throughout the UI 2010-08-28 19:07:23 +00:00
David Sansome d980fd5ff8 Remove the pointless CreateInThread method from BackgroundThread and instead move objects to the right thread after creation. 2010-08-27 18:36:57 +00:00
John Maguire 2e03a2f093 *Fix device lister shutdown on mac
*Remove a bunch of debug
*Fix a windows translation
2010-08-23 10:26:00 +00:00
David Sansome 7821a48cb7 Get a list of songs from a WMDM device 2010-08-22 19:18:22 +00:00
David Sansome 8c3b16a93d Properly shut down the WMDM lister 2010-08-22 15:42:21 +00:00
David Sansome 78db71c02c Semi-working WMDM device lister 2010-08-15 23:26:04 +00:00