From 2bcad9b6372db5005f2ba0258a349ec43d114a8d Mon Sep 17 00:00:00 2001 From: Jonas Kvinge Date: Tue, 12 May 2020 18:45:24 +0200 Subject: [PATCH] Do AddOrUpdateSongs in database thread --- src/collection/collectionbackend.cpp | 4 ++++ src/collection/collectionbackend.h | 2 ++ src/internet/internetsongsview.cpp | 2 +- src/internet/internettabsview.cpp | 6 +++--- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/collection/collectionbackend.cpp b/src/collection/collectionbackend.cpp index a12454407..afaa49643 100644 --- a/src/collection/collectionbackend.cpp +++ b/src/collection/collectionbackend.cpp @@ -411,6 +411,10 @@ void CollectionBackend::AddOrUpdateSubdirs(const SubdirectoryList &subdirs) { } +void CollectionBackend::AddOrUpdateSongsAsync(const SongList &songs) { + metaObject()->invokeMethod(this, "AddOrUpdateSongs", Qt::QueuedConnection, Q_ARG(SongList, songs)); +} + void CollectionBackend::AddOrUpdateSongs(const SongList &songs) { QMutexLocker l(db_->Mutex()); diff --git a/src/collection/collectionbackend.h b/src/collection/collectionbackend.h index 33a806f4c..3c0a2b45f 100644 --- a/src/collection/collectionbackend.h +++ b/src/collection/collectionbackend.h @@ -186,6 +186,8 @@ class CollectionBackend : public CollectionBackendInterface { Song::Source Source() const; + void AddOrUpdateSongsAsync(const SongList &songs); + public slots: void Exit(); void LoadDirectories(); diff --git a/src/internet/internetsongsview.cpp b/src/internet/internetsongsview.cpp index 46b0db569..12fe44bec 100644 --- a/src/internet/internetsongsview.cpp +++ b/src/internet/internetsongsview.cpp @@ -130,7 +130,7 @@ void InternetSongsView::SongsFinished(const SongList &songs, const QString &erro service_->songs_collection_backend()->DeleteAll(); ui_->stacked->setCurrentWidget(ui_->internetcollection_page); ui_->status->clear(); - service_->songs_collection_backend()->AddOrUpdateSongs(songs); + service_->songs_collection_backend()->AddOrUpdateSongsAsync(songs); } } diff --git a/src/internet/internettabsview.cpp b/src/internet/internettabsview.cpp index 9196c8394..bc8256d04 100644 --- a/src/internet/internettabsview.cpp +++ b/src/internet/internettabsview.cpp @@ -231,7 +231,7 @@ void InternetTabsView::ArtistsFinished(const SongList &songs, const QString &err service_->artists_collection_backend()->DeleteAll(); ui_->artists_collection->stacked()->setCurrentWidget(ui_->artists_collection->internetcollection_page()); ui_->artists_collection->status()->clear(); - service_->artists_collection_backend()->AddOrUpdateSongs(songs); + service_->artists_collection_backend()->AddOrUpdateSongsAsync(songs); } } @@ -274,7 +274,7 @@ void InternetTabsView::AlbumsFinished(const SongList &songs, const QString &erro service_->albums_collection_backend()->DeleteAll(); ui_->albums_collection->stacked()->setCurrentWidget(ui_->albums_collection->internetcollection_page()); ui_->albums_collection->status()->clear(); - service_->albums_collection_backend()->AddOrUpdateSongs(songs); + service_->albums_collection_backend()->AddOrUpdateSongsAsync(songs); } } @@ -317,7 +317,7 @@ void InternetTabsView::SongsFinished(const SongList &songs, const QString &error service_->songs_collection_backend()->DeleteAll(); ui_->songs_collection->stacked()->setCurrentWidget(ui_->songs_collection->internetcollection_page()); ui_->songs_collection->status()->clear(); - service_->songs_collection_backend()->AddOrUpdateSongs(songs); + service_->songs_collection_backend()->AddOrUpdateSongsAsync(songs); } }