Commit Graph

7540 Commits

Author SHA1 Message Date
John Maguire 011b36b64b Remove unsupported distros 2020-01-30 19:33:55 +00:00
Jim Broadus 4b37e0c577 Use qLogCat for GLog handler.
Provide the domain string from the GLog callback as the category.
2020-01-30 11:20:03 -08:00
Jim Broadus a2d2850884 Add a new qLogCat macro to specify category.
In some cases, such as message handling callback functions, the line and function
macros don't provide a lot of useful information. In other cases, we may want more
granularity of control withing a class. For these cases, add a qLogCat that takes
a category string. Print this string in the message and use it as the filter
category.
2020-01-30 11:19:58 -08:00
John Maguire aae7b01ea6
Merge pull request #6555 from jbroadus/logging-cleanup-1
Fix nomenclature in logging functions.
2020-01-30 17:29:22 +00:00
Jim Broadus 203d6425fd Fix nomenclature in logging functions.
The qLog macro passes the result of the __PRETTY_FUNCTION__ macro to the
CreateLogger* functions, but these all take an argument called class_name.
2020-01-30 08:50:06 -08:00
John Maguire 0598b81c42
Merge pull request #6554 from jbroadus/fix-unc-paths
Fix UNC paths.
2020-01-29 11:20:01 +00:00
Jim Broadus d3d6c1ff3c Fix UNC paths.
The fix-up for URLs for files that that begin with // no longer works since the
QUrl class determines that these modifications are invalid, resulting in an
empty string when converted. Instead of attempting to modify the QUrl, add a
utility function that makes the correction on the encoded byte array at time of
usage.
2020-01-29 00:38:43 -08:00
John Maguire e575a1da9f
Merge pull request #6552 from jonaski/https
Use HTTPS
2020-01-27 22:58:28 +00:00
Jonas Kvinge f674847431 Use HTTPS 2020-01-27 22:46:38 +01:00
John Maguire a207501e35
Merge pull request #6550 from jbroadus/remove-dir-by-id
Remove directory by id.
2020-01-27 09:29:33 +00:00
Jim Broadus feaca363a7 Remove directory by id.
Eliminate need to create temporary Directory object when removing a directory.
2020-01-25 18:22:16 -08:00
John Maguire 03f2395739
Merge pull request #6546 from jbroadus/cancel-scan-on-remove
Cancel scan when directory is removed.
2020-01-25 15:35:24 +00:00
Jim Broadus 1c6e43509c Cancel scan when directory is removed.
When a directory is removed from the library during a scan, the scan continues
until complete. This change cancels the scan immediately, unblocking the watcher
thread, then signals the watcher to remove the directory.

A second issue occurs when a previously scanned device is removed during a
scan. All remaining files will be marked as deleted. This change mitigates
this issue, but a timing hole still remains here.
2020-01-24 10:28:51 -08:00
Clementine Buildbot fcd147b574 Automatic merge of translations from Transifex (https://www.transifex.com/projects/p/clementine/resource/clementineplayer) 2020-01-24 10:41:42 +00:00
John Maguire 865c4b4358
Merge pull request #6543 from jbroadus/cancel-transaction
Add ability to cancel scan per directory.
2020-01-24 10:39:30 +00:00
Jim Broadus c40a1f7738 Pass album_art map to ImageForSong as pointer instead of reference.
Requested as part of PR 6543.
2020-01-23 09:15:39 -08:00
Jim Broadus 4ebd3c8c0a Add ability to cancel scan per directory.
Store a boolean along with watched directories to indicate active. Use this flag
to provide a mechanism to halt scans on a per-directory basis.
2020-01-23 09:15:36 -08:00
John Maguire 97ffae2e70
Merge pull request #6541 from jbroadus/cleanup-lister-thread
Delete DeviceLister worker thread.
2020-01-22 11:05:51 +00:00
John Maguire 960c61ef14
Merge pull request #6540 from jbroadus/scan-transaction-takes-directory
Pass a Directory reference to ScanTransaction instead of a directory id.
2020-01-22 11:05:20 +00:00
Jim Broadus 83d756356c Delete DeviceLister worker thread.
This isn't a serious leak since the lister is only destroyed when Clementine
exits.
2020-01-21 21:26:59 -08:00
Jim Broadus 52c3ce70ea Pass a Directory reference to ScanTransaction instead of a directory id.
This is can be done without protecting the directory reference since the method
that removes directories from the watch list is only called on the same thread
as the scan, and never during the life of the ScanTransaction object.
2020-01-21 17:27:01 -08:00
John Maguire d15777ea15
Merge pull request #6537 from jbroadus/scan-sanity-check
Prevent runaway cover art searches.
2020-01-19 17:12:13 +00:00
John Maguire 1723fba173
Merge pull request #6536 from jbroadus/fix-canceled-scan
Fix hung progress indicator on device disconnect.
2020-01-19 17:10:07 +00:00
Jim Broadus 1484afb038 Prevent runaway cover art searches.
When scanning a device such as a mobile phone, it's likely that a directory
containing both image and audio files will be found. Besides the appearance of a
hung scan, it's unlikely that a relevant image will be found.

In the case where filters for relevant filenames don't yield results, set a
sanity limit on the number of images. If the list size is beyond than that
threshold, return an empty path.
2020-01-18 22:46:24 -08:00
Jim Broadus 9e40c5e1a9 Fix hung progress indicator on device disconnect.
When a device is removed during a scan, the scan is cancelled, but the task is
not set to finished.
2020-01-18 20:32:41 -08:00
John Maguire 969c158cee
Merge pull request #6533 from jbroadus/inotify-errors
Inotify errors
2020-01-18 13:04:55 +00:00
Jim Broadus 34a2e86b4b Handle FileSystemWatcherInterface::AddPath errors.
On Linux systems, failure to watch a path may be caused by the limit set in
/proc/sys/fs/inotify/max_user_watches. This can be demonstrated by creating
a directory with a large number of empty subdirectories and adding that test
directory as a library.

Check that a file is readable before adding a watch. If adding the watch fails,
report the error to the user only once. Only add the path to subdir_mapping_
if watch succeeds.
2020-01-17 16:26:09 -08:00
Jim Broadus 26e12f5006 Support newlines in error dialog.
Translate "\n" to "<br>" in error dialog HTML.
2020-01-16 21:06:11 -08:00
Jim Broadus fe84ad4e66 Return boolean from FileSystemWatcherInterface::AddPath to indicate success.
QFileSystemWatcher::addPath returns a boolean to indicate success. Modify
QtFSListener::AddPath to reflect that. For now, the MacFSListener version will
always return true.
2020-01-16 21:06:11 -08:00
John Maguire 0d1a976b62
Merge pull request #6532 from jbroadus/broken-mtp
Broken mtp
2020-01-16 23:06:38 +00:00
Jim Broadus 4bb7d41ec9 Fix mtp and gphoto2 device mounts from gvfs.
Using libmtp or libgphoto2 to access a device that gvfs has mounted causes the
connection to fail. libmtp is calling libusb_claim_interface which, according to
libusb documentation, will return LIBUSB_ERROR_BUSY if claimed by a different
program. For mtp and gphoto2 devices discovered by the GioLister, use the file
scheme and access the device through the gvfs mount.
2020-01-16 13:11:49 -08:00
Jim Broadus 5efba58f02 Decode gvfs uris.
The uri returned from g_file_get_uri is percent encoded. This causes the regex
in GioLister::MakeDeviceUrls to fail and causes the URL to be invalid. In this
case, it falls back to the file scheme. Newer versions of gvfs obtain the serial
id from udev instead of using the bus and device IDs.

Note that this bug covers a different issue where mtp is failing to connect. The
result is actually desired behavior. The follow-up change will address this.
2020-01-16 13:11:44 -08:00
John Maguire 9bf90bf95a
Merge pull request #6530 from jbroadus/fix-query-crash
Fix LibraryModel async query crash.
2020-01-15 09:48:45 +00:00
Jim Broadus 6a9276ec0a Fix LibraryModel async query crash.
A LibraryBackend may be deleted while an associated LibraryModel object is using
it. An example is an async query running while a connected device is removed.
To prevent this, use a share pointer for the LibraryBackend.

This fixes one case where LibraryBackend is used after deletion. However, the
raw pointer is still passed around in several other places. These should be
evaluated on a case-by-case basis to insure that circular depencencies aren't
introduced.
2020-01-14 21:47:31 -08:00
John Maguire 4563149482
Merge pull request #6528 from clementine-player/mac-style
Add mac style plugin
2020-01-13 17:54:29 +00:00
John Maguire acda1bc1db
Add mac style plugin 2020-01-13 17:02:13 +00:00
John Maguire fd64a5a807
Merge pull request #6527 from jbroadus/wait-for-query-thread
Prevent deletion of LibraryModel object while async query is running.
2020-01-13 10:00:55 +00:00
Jim Broadus f817e0de48 Prevent deletion of LibraryModel object while async query is running.
Create a thread pool for each LibraryModel object and block destruction until
all threads that are operating on this object are complete.

Note that this is not a complete solution. The async query also uses the library
backend which may still be deleted before the thread exits. This will be
addressed in a future change.
2020-01-12 12:24:21 -08:00
John Maguire 9a9cf08a63
Merge pull request #6525 from jbroadus/reenable-lastfm-bionic
Use qt5 version of liblastfm dev package for Debian and Ubuntu builds.
2020-01-12 13:58:27 +00:00
John Maguire 56a043a9ec
Merge pull request #6524 from jbroadus/closure-timing-hole
Fix closure timing hole.
2020-01-12 13:58:04 +00:00
Jim Broadus 2f41a969c2 Use qt5 version of liblastfm dev package for Debian and Ubuntu builds. 2020-01-11 13:18:50 -08:00
Jim Broadus dbe67bf32b Fix closure timing hole.
When a closure involves an ObjectHelper, a connection is made from the
receiver's destroyed signal and the helper object's deleteLater slot. Since
the signal between the sender and the helper object isn't disconnected until
either object is actually destroyed, this leaves a hole where the helper
holds a pointer to an invalid receiver object, but is still able to receive
the signal connected to its Invoke slot.

Instead of connecting the destroyed signal to deleteLater, connect it to a new
TearDown slot that immediately disconnects the signal then calls deleteLater.
2020-01-11 00:53:35 -08:00
Clementine Buildbot a97080a809 Automatic merge of translations from Transifex (https://www.transifex.com/projects/p/clementine/resource/clementineplayer) 2020-01-08 10:45:49 +00:00
John Maguire 8cfbc5bad7
Merge pull request #6521 from jbroadus/handle-connect-error-from-dialog
Properly handle connect errors when initiated from properties dialog.
2020-01-08 10:42:55 +00:00
Jim Broadus 8a88a0a57e Properly handle connect errors when initiated from properties dialog.
If connection fails when initiated from the device properties dialog, the
connected page is shown after the update formats worker thread completes.
2020-01-07 23:20:04 -08:00
Jim Broadus 79b7e3fe13 Fix abort from Mtp loader thread.
A commit in qt 5.7 changes a qWarning to a qFatal if a QThread is still running
when it's deleted. When we get the LoadFinished signal in MtpDevice, stop
the loader thread's event loop to avoid this situation.

See qtbase commit c8277b6e532
2020-01-07 22:29:59 +00:00
Pavel Liavonau 3f4c788339 Fixed lastfm workflow with "now playing" and scrobbling feature
(Maybe Issue #2672)
2020-01-07 22:29:23 +00:00
Jim Broadus 39e75071bf Remove unhelpful debug message.
Message contains no context and appears to be a remnant of a debug session.
2020-01-05 16:51:11 -08:00
John Maguire 008c90ff29
Merge pull request #6516 from jonaski/sizeinbytes
Use QImage::sizeInBytes() with Qt 5.10 and above
2020-01-06 00:12:02 +00:00
John Maguire 57841cf947
Merge pull request #6515 from jonaski/child
Replace QModelIndex::child() with QAbstractItemModel::index()
2020-01-06 00:11:22 +00:00