Commit Graph

318 Commits

Author SHA1 Message Date
luz.paz fb93ae4b02 Fix misc. source comment typos
Typos found via `codespell`
2019-08-21 23:43:16 -04:00
John Maguire e3609b27cd
Merge pull request #6296 from ShFil119/impr/simplify
Simplify some statements
2019-04-10 11:12:09 +01:00
Jim Broadus d041da18cc Handle case where a lister adds a device before loaded from database.
There is a small chance that a device lister is able to discover and add a
previously known device before it is added by the database loader thread.
In this case, copy the data that is user-settable to the existing DeviceInfo
object and destroy the object created from the database query.

This adds and utilizes a new FindEquivalentDevice method that compares the
device unique IDs. This could probably be made more robust as the unique
IDs for some listers may change. However, this is a problem with the database
storage implementation in general.
2019-02-24 00:05:18 -08:00
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
Filip Gawin be827f4f7f Simplify some statements 2019-02-22 18:49:48 +01:00
Jim Broadus 248f1d8596 Prevent UI hang during device scan. (#6291)
When unmounting a device, the ConnectedDevice object is destroyed. The
FileSystemDevice destructor waits on its worker thread. If a scan is in
progress, this will block until completion.

There is an existing Stop method in the LibraryWatcher class that is intended to
stop long running operations. To fix, or at least significantly shorten this
hang, we'll call this before waiting for the thread to exit. Also add a
stop_requested check in the cover art scan.

In addition, add a call to Stop in the Library destructor, which has a similar
usage.
2019-02-20 19:03:44 +11: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
Jonas Kvinge 8d78dae9b6 Quit thread before deleting the loader (#6254) 2019-01-15 17:57:00 +00:00
Jim Broadus 74fa386c90 Try to obtain USB bus and device number from device name if unavailable in URI. (#6243)
In 1.37.2, gvfs switched to URIs that remain consistent across USB device
re-enumerations. This removed the usb bus and device numbers from the URI. In
the case that these values aren't found in the URI, try to parse Unix device
name property and pass results as query params on the URL. Pay attention to
these params in MtpConnection.

See gvfs commits 3a7bb06b and efc76d0c for reference.
2019-01-02 15:06:22 +00:00
Jim Broadus 95187ed0a1 Fix encoding of GError messages when logging. (#6228)
GError messages contain non-ascii characters. This normally just produces some garbage when we use the default QString contructor that assumes ASCII for logging. However, when a message includes the right double quote, UTF-8 sequence 0xE2 0x80 0x9D, the final byte is OSC. VT100 expects a command sequence to follow and stops echoing output until it sees ST or BEL character, which may never come. Thus, the console output is halted.

This change uses QString::fromLocal8Bit instead of depending on the default constructor. About half of the sites in the codebase had already been converted.

One side effect is that log messages are quoted. There are additional options to control this, but those were only introduced in Qt 5.4.
2018-12-02 09:51:19 +00:00
Jim Broadus 122d28eab9 Fix device loader error messages. (#6215)
GPodLoader and MtpLoader Error signals were connected to Error signals in their repective device classes, but the actual signal definition in ConnectedDevice was removed in a refactor several years ago. This change adds LoaderError slots to these device classes and reports the error in the manner of the refactored code.
2018-11-28 10:23:31 +00:00
Mattias Andersson 3e53e23bb8 Fix formatting 2018-07-06 17:09:21 +01:00
Mattias Andersson 84f1b7bae0 Load the audio cd in a separate thread 2018-07-06 17:09:21 +01:00
Mattias Andersson 4458d45200 Give the cd device some more time to spin up 2018-07-06 17:09:21 +01:00
Allan Nordhøy b89ccb04f2 Spelling: D-Bus (#5838) 2017-08-28 23:37:47 +02:00
Allan Nordhøy 050813bf9c Spelling: D-Bus (#5837) 2017-08-28 23:37:25 +02:00
Morris Hafner 8a6cc8b506 Add missing <functional> includes (#5630) 2017-02-13 16:46:46 +00:00
John Maguire 6f356592a5 Fixes for cross compiling for mac. 2016-12-15 11:36:05 +00:00
John Maguire 1f95a23fd4 Remove non-static data member initializers 2016-07-06 14:26:45 +01:00
John Maguire 6b90f69894 Fix typo 2016-06-01 11:46:52 +01:00
John Maguire b90fb73480 Merge pull request #5394 from Chemrat/udisks2
Udisks2 support
2016-06-01 00:10:26 +01:00
Valeriy ecaa9de788 fix variable names 2016-05-31 20:31:39 +03:00
Valeriy 1812f089b0 feed udisks2lister.* through format.py
add copyright headers
2016-05-31 18:31:00 +03:00
Valeriy 0172f7265b fix code style 2016-05-31 18:19:46 +03:00
Valeriy cc6a99ef92 handle our unmount responses because those unmount jobs expire too fast
for jobs use dbus interface when possible
clean up the code a bit
2016-05-30 18:24:02 +03:00
Valeriy ed986d3863 UDisks2.Job interface support 2016-05-22 23:44:22 +03:00
Valeriy 68001ff7e8 udisks2: handle unmount jobs too, more verbose logging 2016-05-21 23:29:18 +03:00
Valeriy d4e932db9a udisks2 support for devicemanager (refs #3264) 2016-05-17 22:56:16 +03:00
Valeriy cbc7092ed9 fix code style 2016-05-17 14:47:02 +03:00
Valeriy 806e689d1d replace foreach with range-based for 2016-05-11 19:00:30 +03:00
Valeriy 948140fab5 disconnect GVolumeMonitor signals from GioLister before destroying it
fixes #5369
2016-05-11 17:58:12 +03:00
John Maguire f300946c81 Remove most usages of QFutureWatcher 2015-11-27 14:28:12 +00:00
narunlifescience dd953fd86c check custom icon location, then system theme & then fallback theme
icons added & replaced
2015-10-13 22:35:49 -05:00
Chocobozzz 8fba1c30f4 Make format 2014-11-05 13:05:58 +01:00
Chocobozzz da99c55eed Use constructor for QString 2014-11-05 12:25:55 +01:00
Chocobozzz 2e64b24290 Revert "Use constructor for QString and make format"
This reverts commit 5a2348fae6.
2014-11-05 12:25:09 +01:00
Chocobozzz 5a2348fae6 Use constructor for QString and make format 2014-11-05 11:51:38 +01:00
Chocobozzz 942fda88bf Check if there is a current icon item in the device manager. Fixes #4604 #4555 2014-11-04 21:46:10 +01:00
Arnaud Bienner 7ac9e4c6d1 Fix a bug in InsertItems functions that makes Cdda tracks to not be saved/restored correctly when restarting Clementine 2014-10-26 17:08:12 +01:00
Arnaud Bienner 5a7c462fc3 Remove useless includes 2014-10-26 03:37:17 +01:00
Arnaud Bienner dc0d3436c8 Finish CD integration update to Gstreamer 1.0
Move everything related to CDDA to a seperate class, so we can more easily reuse it in SongLoader
2014-10-26 03:32:37 +01:00
Arnaud Bienner a8266173c5 Start to reactivate audio CD support 2014-10-26 00:28:03 +02:00
David Sansome 39d99247a2 gstreamer-cdda is in gst-plugins-base in 1.0 and has a different header name.
This still doesn't work because the API has changed and track listings are
now delivered via a bus message instead of direct access to the struct's
members.
2014-09-22 22:28:53 +10:00
Mattias Andersson 0be0498e94 Reset the model during init of CddaDevice
This ensures that the track list in the device tab is correctly updated when a
disc is replaced with one that doesn't exist in the MusicBrainz database.
2014-05-24 13:54:07 +02:00
John Maguire 5146bcdebc Some more NULL -> nullptr conversions. 2014-02-21 17:30:46 +01:00
John Maguire 192b60d965 Use nullptr as parent parameter default everywhere 2014-02-10 16:03:54 +01: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