There are several instances of the LibraryModel class used in the system. Each
of these creates a LibraryDirectoryModel instance, but only the instance held
by the main library is every used. Move this out of the LibraryModel class and
into the Library class.
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.
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.
* Closes#5567: Contextual album/artist search in library search, global search, and playlists.
* Change artist/album search to 'search for this' in globalsearch
* Change artist/album search to 'search for this' in library
* Applying patch from @Fat-Zer to allow search incl year
* Re-adding missing schema definition
* bring in playlist updates for potential fix
* define signal to handle organise playlist bugs
* work in progress
* fix wrong signal/slot
* next push forward on handling new song creation
* Reorganize signals/slots; still need to figure out why not all signals are being handled
* Get playlists to work when they're in memory
* more changes to playlist updates
* revert unnecessary changes and finalize fix
- Adds saved groupings to the Group by menu
- Currently missing a way to manage saved groupings
- Saved groupings are in a new section of the config file as
"GroupingName"->ByteArray serialization
I'll reference #4379
When viewing the library with album covers visible, the covers load very slowly the first time
as they have to wait on the tagreaders. If I scroll down the library, it takes minutes for the
tagreader to catch up. The nice thing is that the pixmaps are cached. However, once
Clementine is restarted, the whole process has to happen again.
This patch adds a persistent disk cache in the form of a QNetworkDiskCache to store the
pixmaps on disk and load them into the QPixmapCache as required.
I've noted literally night and day performance improvements, not only when scrolling through the library.
There is much better interface responsiveness when searching, and I no longer see the no_cover_icon
temporarily anymore.