diff options
author | Uwe Klotz <uklotz@mixxx.org> | 2018-02-23 00:39:32 +0100 |
---|---|---|
committer | Uwe Klotz <uklotz@mixxx.org> | 2018-02-23 00:49:27 +0100 |
commit | 6c19f05560e33cbff2ba9414028471ee9e70bc2a (patch) | |
tree | 4378319451f626a452f9d35ceb36b683399b92d9 /src/library/library.cpp | |
parent | b6e2f63ec5b6471173ce68c8fde48043c1528c23 (diff) |
Do not delete shared track pointers until expired/released
Diffstat (limited to 'src/library/library.cpp')
-rw-r--r-- | src/library/library.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/library/library.cpp b/src/library/library.cpp index 8cdd1a02ed..409c4c2975 100644 --- a/src/library/library.cpp +++ b/src/library/library.cpp @@ -422,7 +422,9 @@ void Library::slotSetTrackTableRowHeight(int rowHeight) { emit(setTrackTableRowHeight(rowHeight)); } -void Library::deleteCachedTrack(Track* pTrack) noexcept { +void Library::deleteCachedTrack( + Track* pTrack, + delete_fun_t deleteFn) noexcept { // It can produce dangerous signal loops if the track is still // sending signals while being saved! All references to this // track have been dropped at this point, so there is no need @@ -461,13 +463,16 @@ void Library::deleteCachedTrack(Track* pTrack) noexcept { // depending on the thread from which this method has // been invoked! Qt::AutoConnection, - Q_ARG(Track*, pTrack)); + Q_ARG(Track*, pTrack), + Q_ARG(GlobalTrackCacheDeleter::delete_fun_t, deleteFn)); } -void Library::saveAndDeleteTrack(Track* pTrack) { +void Library::saveAndDeleteTrack( + Track* pTrack, + GlobalTrackCacheDeleter::delete_fun_t deleteFn) { // Update the database m_pTrackCollection->saveTrack(pTrack); // Finally schedule the track for deletion - GlobalTrackCache::deleteTrack(pTrack); + deleteFn(pTrack); } |