diff options
author | Uwe Klotz <uklotz@mixxx.org> | 2019-11-02 10:32:17 +0100 |
---|---|---|
committer | Uwe Klotz <uklotz@mixxx.org> | 2019-11-21 11:27:42 +0100 |
commit | d643918e52b9ed5b36fd2f7917bc0e277786d568 (patch) | |
tree | 7bfcecea51d32b6e9a6ca89121b780d88ac40e90 | |
parent | b9b10382606837faf45e9933278a24fbc4e36428 (diff) |
Get or add single tracks via TrackCollection
-rw-r--r-- | src/analyzer/trackanalysisscheduler.cpp | 2 | ||||
-rw-r--r-- | src/library/autodj/autodjfeature.cpp | 2 | ||||
-rw-r--r-- | src/library/banshee/bansheeplaylistmodel.cpp | 5 | ||||
-rw-r--r-- | src/library/baseexternalplaylistmodel.cpp | 5 | ||||
-rw-r--r-- | src/library/baseexternaltrackmodel.cpp | 5 | ||||
-rw-r--r-- | src/library/baseplaylistfeature.cpp | 2 | ||||
-rw-r--r-- | src/library/baseplaylistfeature.h | 4 | ||||
-rw-r--r-- | src/library/basesqltablemodel.cpp | 4 | ||||
-rw-r--r-- | src/library/basesqltablemodel.h | 2 | ||||
-rw-r--r-- | src/library/basetrackcache.cpp | 1 | ||||
-rw-r--r-- | src/library/basetrackcache.h | 1 | ||||
-rw-r--r-- | src/library/browse/browsetablemodel.cpp | 10 | ||||
-rw-r--r-- | src/library/dao/autodjcratesdao.cpp | 4 | ||||
-rw-r--r-- | src/library/dao/trackdao.cpp | 56 | ||||
-rw-r--r-- | src/library/dao/trackdao.h | 28 | ||||
-rw-r--r-- | src/library/library.cpp | 4 | ||||
-rw-r--r-- | src/library/mixxxlibraryfeature.cpp | 15 | ||||
-rw-r--r-- | src/library/mixxxlibraryfeature.h | 1 | ||||
-rw-r--r-- | src/library/trackcollection.cpp | 23 | ||||
-rw-r--r-- | src/library/trackcollection.h | 6 | ||||
-rw-r--r-- | src/test/autodjprocessor_test.cpp | 2 |
21 files changed, 102 insertions, 80 deletions
diff --git a/src/analyzer/trackanalysisscheduler.cpp b/src/analyzer/trackanalysisscheduler.cpp index 8c91fdb8c9..45179a6105 100644 --- a/src/analyzer/trackanalysisscheduler.cpp +++ b/src/analyzer/trackanalysisscheduler.cpp @@ -275,7 +275,7 @@ bool TrackAnalysisScheduler::submitNextTrack(Worker* worker) { DEBUG_ASSERT(nextTrackId.isValid()); if (nextTrackId.isValid()) { TrackPointer nextTrack = - m_library->trackCollection().getTrackDAO().getTrack(nextTrackId); + m_library->trackCollection().getTrackById(nextTrackId); if (nextTrack) { if (m_pendingTrackIds.insert(nextTrackId).second) { if (worker->submitNextTrack(std::move(nextTrack))) { diff --git a/src/library/autodj/autodjfeature.cpp b/src/library/autodj/autodjfeature.cpp index bcf7b4d014..dd055d84a1 100644 --- a/src/library/autodj/autodjfeature.cpp +++ b/src/library/autodj/autodjfeature.cpp @@ -254,7 +254,7 @@ void AutoDJFeature::slotAddRandomTrack() { } if (randomTrackId.isValid()) { - pRandomTrack = m_pTrackCollection->getTrackDAO().getTrack(randomTrackId); + pRandomTrack = m_pTrackCollection->getTrackById(randomTrackId); VERIFY_OR_DEBUG_ASSERT(pRandomTrack) { qWarning() << "Track does not exist:" << randomTrackId; diff --git a/src/library/banshee/bansheeplaylistmodel.cpp b/src/library/banshee/bansheeplaylistmodel.cpp index d2e2453cf1..7c6a1256a0 100644 --- a/src/library/banshee/bansheeplaylistmodel.cpp +++ b/src/library/banshee/bansheeplaylistmodel.cpp @@ -315,8 +315,9 @@ TrackPointer BansheePlaylistModel::getTrack(const QModelIndex& index) const { } bool track_already_in_library = false; - TrackPointer pTrack = m_pTrackCollection->getTrackDAO() - .getOrAddTrack(location, true, &track_already_in_library); + TrackPointer pTrack = m_pTrackCollection->getOrAddTrack( + TrackRef::fromFileInfo(location), + &track_already_in_library); // If this track was not in the Mixxx library it is now added and will be // saved with the metadata from Banshee. If it was already in the library diff --git a/src/library/baseexternalplaylistmodel.cpp b/src/library/baseexternalplaylistmodel.cpp index 2ba94fe30b..8b557777af 100644 --- a/src/library/baseexternalplaylistmodel.cpp +++ b/src/library/baseexternalplaylistmodel.cpp @@ -31,8 +31,9 @@ TrackPointer BaseExternalPlaylistModel::getTrack(const QModelIndex& index) const } bool track_already_in_library = false; - TrackPointer pTrack = m_pTrackCollection->getTrackDAO() - .getOrAddTrack(location, true, &track_already_in_library); + TrackPointer pTrack = m_pTrackCollection->getOrAddTrack( + TrackRef::fromFileInfo(location), + &track_already_in_library); // If this track was not in the Mixxx library it is now added and will be // saved with the metadata from iTunes. If it was already in the library diff --git a/src/library/baseexternaltrackmodel.cpp b/src/library/baseexternaltrackmodel.cpp index 3dfd3df083..00893fbb46 100644 --- a/src/library/baseexternaltrackmodel.cpp +++ b/src/library/baseexternaltrackmodel.cpp @@ -56,8 +56,9 @@ TrackPointer BaseExternalTrackModel::getTrack(const QModelIndex& index) const { } bool track_already_in_library = false; - TrackPointer pTrack = m_pTrackCollection->getTrackDAO() - .getOrAddTrack(location, true, &track_already_in_library); + TrackPointer pTrack = m_pTrackCollection->getOrAddTrack( + TrackRef::fromFileInfo(location), + &track_already_in_library); if (pTrack) { // If this track was not in the Mixxx library it is now added and will be diff --git a/src/library/baseplaylistfeature.cpp b/src/library/baseplaylistfeature.cpp index c8cfd0e318..39c4bf9521 100644 --- a/src/library/baseplaylistfeature.cpp +++ b/src/library/baseplaylistfeature.cpp @@ -5,6 +5,7 @@ #include <QFileInfo> #include <QStandardPaths> +#include "library/dao/playlistdao.h" #include "library/export/trackexportwizard.h" #include "library/library.h" #include "library/parser.h" @@ -26,7 +27,6 @@ BasePlaylistFeature::BasePlaylistFeature(QObject* parent, : LibraryFeature(pConfig, parent), m_pTrackCollection(pTrackCollection), m_playlistDao(pTrackCollection->getPlaylistDAO()), - m_trackDao(pTrackCollection->getTrackDAO()), m_pPlaylistTableModel(NULL), m_rootViewName(rootViewName) { m_pCreatePlaylistAction = new QAction(tr("Create New Playlist"),this); diff --git a/src/library/baseplaylistfeature.h b/src/library/baseplaylistfeature.h index 23bb45d334..0164fba853 100644 --- a/src/library/baseplaylistfeature.h +++ b/src/library/baseplaylistfeature.h @@ -12,12 +12,11 @@ #include <QString> #include "library/libraryfeature.h" -#include "library/dao/playlistdao.h" -#include "library/dao/trackdao.h" #include "track/track.h" class WLibrary; class KeyboardEventFilter; +class PlaylistDAO; class PlaylistTableModel; class TrackCollection; class TreeItem; @@ -89,7 +88,6 @@ class BasePlaylistFeature : public LibraryFeature { TrackCollection* m_pTrackCollection; PlaylistDAO &m_playlistDao; - TrackDAO &m_trackDao; PlaylistTableModel* m_pPlaylistTableModel; QAction *m_pCreatePlaylistAction; QAction *m_pDeletePlaylistAction; diff --git a/src/library/basesqltablemodel.cpp b/src/library/basesqltablemodel.cpp index 6c107958f9..c712633608 100644 --- a/src/library/basesqltablemodel.cpp +++ b/src/library/basesqltablemodel.cpp @@ -844,7 +844,7 @@ bool BaseSqlTableModel::setData( // TODO(rryan) ugly and only works because the mixxx library tables are the // only ones that aren't read-only. This should be moved into BTC. - TrackPointer pTrack = m_pTrackCollection->getTrackDAO().getTrack(trackId); + TrackPointer pTrack = m_pTrackCollection->getTrackById(trackId); if (!pTrack) { return false; } @@ -920,7 +920,7 @@ TrackId BaseSqlTableModel::getTrackId(const QModelIndex& index) const { } TrackPointer BaseSqlTableModel::getTrack(const QModelIndex& index) const { - return m_pTrackCollection->getTrackDAO().getTrack(getTrackId(index)); + return m_pTrackCollection->getTrackById(getTrackId(index)); } QString BaseSqlTableModel::getTrackLocation(const QModelIndex& index) const { diff --git a/src/library/basesqltablemodel.h b/src/library/basesqltablemodel.h index 8b54a5f36c..19a69f5e19 100644 --- a/src/library/basesqltablemodel.h +++ b/src/library/basesqltablemodel.h @@ -56,7 +56,7 @@ class BaseSqlTableModel : public QAbstractTableModel, public TrackModel { // Functions that might be reimplemented/overridden in derived classes /////////////////////////////////////////////////////////////////////////// // This class also has protected variables that should be used in children - // m_database, m_pTrackCollection, m_trackDAO + // m_database, m_pTrackCollection // calls readWriteFlags() by default, reimplement this if the child calls // should be readOnly diff --git a/src/library/basetrackcache.cpp b/src/library/basetrackcache.cpp index 7aba40a0fa..61e9e09890 100644 --- a/src/library/basetrackcache.cpp +++ b/src/library/basetrackcache.cpp @@ -30,7 +30,6 @@ BaseTrackCache::BaseTrackCache(TrackCollection* pTrackCollection, m_columnCache(columns), m_bIndexBuilt(false), m_bIsCaching(isCaching), - m_trackDAO(pTrackCollection->getTrackDAO()), m_database(pTrackCollection->database()), m_pQueryParser(new SearchQueryParser(pTrackCollection)) { m_searchColumns << "artist" diff --git a/src/library/basetrackcache.h b/src/library/basetrackcache.h index 1d77420d6b..ac7c7a4d4d 100644 --- a/src/library/basetrackcache.h +++ b/src/library/basetrackcache.h @@ -147,7 +147,6 @@ class BaseTrackCache : public QObject { bool m_bIndexBuilt; bool m_bIsCaching; QHash<TrackId, QVector<QVariant> > m_trackInfo; - TrackDAO& m_trackDAO; QSqlDatabase m_database; SearchQueryParser* m_pQueryParser; ControlProxy* m_pKeyNotationCP; diff --git a/src/library/browse/browsetablemodel.cpp b/src/library/browse/browsetablemodel.cpp index a7a7d52df2..49c3296714 100644 --- a/src/library/browse/browsetablemodel.cpp +++ b/src/library/browse/browsetablemodel.cpp @@ -153,13 +153,13 @@ void BrowseTableModel::setPath(const MDir& path) { } TrackPointer BrowseTableModel::getTrack(const QModelIndex& index) const { - QString track_location = getTrackLocation(index); - if (m_pRecordingManager->getRecordingLocation() == track_location) { + QString trackLocation = getTrackLocation(index); + if (m_pRecordingManager->getRecordingLocation() == trackLocation) { QMessageBox::critical( 0, tr("Mixxx Library"), tr("Could not load the following file because" " it is in use by Mixxx or another application.") - + "\n" +track_location); + + "\n" + trackLocation); return TrackPointer(); } // NOTE(uklotzde, 2015-12-08): Accessing tracks from the browse view @@ -170,8 +170,8 @@ TrackPointer BrowseTableModel::getTrack(const QModelIndex& index) const { // them edit the tracks in a way that persists across sessions // and we didn't want to edit the files on disk by default // unless the user opts in to that. - return m_pTrackCollection->getTrackDAO() - .getOrAddTrack(track_location, true, NULL); + return m_pTrackCollection->getOrAddTrack( + TrackRef::fromFileInfo(trackLocation)); } QString BrowseTableModel::getTrackLocation(const QModelIndex& index) const { diff --git a/src/library/dao/autodjcratesdao.cpp b/src/library/dao/autodjcratesdao.cpp index 64e0949267..84c9b4d3d0 100644 --- a/src/library/dao/autodjcratesdao.cpp +++ b/src/library/dao/autodjcratesdao.cpp @@ -710,8 +710,8 @@ TrackId AutoDJCratesDAO::getRandomTrackIdFromAutoDj(int percentActive) { // Signaled by the track DAO when a track's information is updated. void AutoDJCratesDAO::slotTrackDirty(TrackId trackId) { // Update our record of the number of times played, if that changed. - TrackPointer pTrack = m_pTrackCollection->getTrackDAO().getTrack(trackId); - if (pTrack == NULL) { + TrackPointer pTrack = m_pTrackCollection->getTrackById(trackId); + if (!pTrack) { return; } const PlayCounter playCounter(pTrack->getPlayCounter()); diff --git a/src/library/dao/trackdao.cpp b/src/library/dao/trackdao.cpp index 55a2cc07b5..b804a477cd 100644 --- a/src/library/dao/trackdao.cpp +++ b/src/library/dao/trackdao.cpp @@ -1182,12 +1182,22 @@ struct ColumnPopulator { #define ARRAYLENGTH(x) (sizeof(x) / sizeof(*x)) -TrackPointer TrackDAO::getTrackFromDB(TrackId trackId) const { +TrackPointer TrackDAO::getTrackById(TrackId trackId) const { if (!trackId.isValid()) { return TrackPointer(); } - ScopedTimer t("TrackDAO::getTrackFromDB"); + // The GlobalTrackCache is only locked while executing the following line. + auto pTrack = GlobalTrackCacheLocker().lookupTrackById(trackId); + if (pTrack) { + return pTrack; + } + + // Accessing the database is a time consuming operation that should not + // be executed with a lock on the GlobalTrackCache. The GlobalTrackCache + // will be locked again after the query has been executed (see below) + // and potential race conditions will be resolved. + ScopedTimer t("TrackDAO::getTrackById"); QSqlQuery query(m_database); ColumnPopulator columns[] = { @@ -1281,7 +1291,7 @@ TrackPointer TrackDAO::getTrackFromDB(TrackId trackId) const { const QString trackLocation(queryRecord.value(0).toString()); GlobalTrackCacheResolver cacheResolver(TrackFile(trackLocation), trackId); - TrackPointer pTrack = cacheResolver.getTrack(); + pTrack = cacheResolver.getTrack(); VERIFY_OR_DEBUG_ASSERT(pTrack) { // Just to be safe, but this should never happen!! return pTrack; @@ -1394,18 +1404,6 @@ TrackPointer TrackDAO::getTrackFromDB(TrackId trackId) const { return pTrack; } -TrackPointer TrackDAO::getTrack(TrackId trackId) const { - //qDebug() << "TrackDAO::getTrack" << QThread::currentThread() << m_database.connectionName(); - - // The GlobalTrackCache is only locked while executing the following line. - TrackPointer pTrack = GlobalTrackCacheLocker().lookupTrackById(trackId); - // Accessing the database is a time consuming operation that should - // not be executed with a lock on the GlobalTrackCache. The GlobalTrackCache will - // be locked again after the query has been executed and potential - // race conditions will be resolved in getTrackFromDB() - return pTrack ? pTrack : getTrackFromDB(trackId); -} - // Saves a track's info back to the database bool TrackDAO::updateTrack(Track* pTrack) { const TrackId trackId = pTrack->getId(); @@ -1971,18 +1969,17 @@ void TrackDAO::detectCoverArtForTracksWithoutCover(volatile const bool* pCancel, } } -TrackPointer TrackDAO::getOrAddTrack(const QString& trackLocation, - bool processCoverArt, - bool* pAlreadyInLibrary) { +TrackPointer TrackDAO::getOrAddTrackByLocation( + const QString& trackLocation, + bool* pAlreadyInLibrary) { const TrackId trackId = getTrackId(trackLocation); - const bool trackAlreadyInLibrary = trackId.isValid(); if (pAlreadyInLibrary) { - *pAlreadyInLibrary = trackAlreadyInLibrary; + *pAlreadyInLibrary = trackId.isValid(); } TrackPointer pTrack; - if (trackAlreadyInLibrary) { - pTrack = getTrack(trackId); + if (trackId.isValid()) { + pTrack = getTrackById(trackId); if (!pTrack) { qWarning() << "Failed to load track" << trackLocation; @@ -1996,15 +1993,12 @@ TrackPointer TrackDAO::getOrAddTrack(const QString& trackLocation, << trackLocation; return pTrack; } - DEBUG_ASSERT(pTrack); - // If the track wasn't in the library already then it has not yet been - // checked for cover art. If processCoverArt is true then we should request - // cover processing via CoverArtCache asynchronously. - if (processCoverArt) { - CoverArtCache* pCache = CoverArtCache::instance(); - if (pCache != nullptr) { - pCache->requestGuessCover(pTrack); - } + // If the track wasn't in the library already then it has not yet + // been checked for cover art. + CoverArtCache* pCache = CoverArtCache::instance(); + if (pCache) { + // Process cover art asynchronously + pCache->requestGuessCover(pTrack); } } diff --git a/src/library/dao/trackdao.h b/src/library/dao/trackdao.h index 0e7a2e9968..03814044da 100644 --- a/src/library/dao/trackdao.h +++ b/src/library/dao/trackdao.h @@ -52,9 +52,6 @@ class TrackDAO : public QObject, public virtual DAO, public virtual GlobalTrackC ResolveTrackIdFlags flags); QList<TrackId> getAllTrackIds(const QDir& rootDir); - // WARNING: Only call this from the main thread instance of TrackDAO. - TrackPointer getTrack(TrackId trackId) const; - // Returns a set of all track locations in the library. QSet<QString> getTrackLocations(); QString getTrackLocation(TrackId trackId); @@ -82,16 +79,6 @@ class TrackDAO : public QObject, public virtual DAO, public virtual GlobalTrackC void afterPurgingTracks( const QList<TrackId>& trackIds); - // Fetches trackLocation from the database or adds it. If searchForCoverArt - // is true, searches the track and its directory for cover art via - // asynchronous request to CoverArtCache. If adding or fetching the track - // fails, returns a transient TrackPointer for trackLocation. If - // pAlreadyInLibrary is non-NULL, sets it to whether trackLocation was - // already in the database. - TrackPointer getOrAddTrack(const QString& trackLocation, - bool processCoverArt, - bool* pAlreadyInLibrary); - void markTracksAsMixxxDeleted(const QString& dir); // Scanning related calls. Should be elsewhere or private somehow. @@ -134,7 +121,20 @@ class TrackDAO : public QObject, public virtual DAO, public virtual GlobalTrackC void slotTrackClean(Track* pTrack); private: - TrackPointer getTrackFromDB(TrackId trackId) const; + friend class TrackCollection; + + // WARNING: Only call this from the main thread instance of TrackDAO. + TrackPointer getTrackById(TrackId trackId) const; + + // Fetches trackLocation from the database or adds it. If searchForCoverArt + // is true, searches the track and its directory for cover art via + // asynchronous request to CoverArtCache. If adding or fetching the track + // fails, returns a transient TrackPointer for trackLocation. If + // pAlreadyInLibrary is non-NULL, sets it to whether trackLocation was + // already in the database. + TrackPointer getOrAddTrackByLocation( + const QString& trackLocation, + bool* pAlreadyInLibrary = nullptr); bool updateTrack(Track* pTrack); diff --git a/src/library/library.cpp b/src/library/library.cpp index d152c0f79b..041e797b76 100644 --- a/src/library/library.cpp +++ b/src/library/library.cpp @@ -452,8 +452,8 @@ void Library::slotLoadTrack(TrackPointer pTrack) { } void Library::slotLoadLocationToPlayer(QString location, QString group) { - TrackPointer pTrack = m_pTrackCollection->getTrackDAO() - .getOrAddTrack(location, true, NULL); + auto trackRef = TrackRef::fromFileInfo(location); + TrackPointer pTrack = m_pTrackCollection->getOrAddTrack(trackRef); if (pTrack) { emit(loadTrackToPlayer(pTrack, group)); } diff --git a/src/library/mixxxlibraryfeature.cpp b/src/library/mixxxlibraryfeature.cpp index 46a5ab9d7d..0d77aeb21a 100644 --- a/src/library/mixxxlibraryfeature.cpp +++ b/src/library/mixxxlibraryfeature.cpp @@ -30,7 +30,6 @@ MixxxLibraryFeature::MixxxLibraryFeature(Library* pLibrary, m_pLibrary(pLibrary), m_pMissingView(NULL), m_pHiddenView(NULL), - m_trackDao(pTrackCollection->getTrackDAO()), m_pConfig(pConfig), m_pTrackCollection(pTrackCollection), m_icon(":/images/library/ic_library_tracks.svg") { @@ -91,27 +90,29 @@ MixxxLibraryFeature::MixxxLibraryFeature(Library* pLibrary, BaseTrackCache* pBaseTrackCache = new BaseTrackCache( pTrackCollection, tableName, LIBRARYTABLE_ID, columns, true); - connect(&m_trackDao, + + auto pTrackDAO = &pTrackCollection.getTrackDAO(); + connect(pTrackDAO, &TrackDAO::trackDirty, pBaseTrackCache, &BaseTrackCache::slotTrackDirty); - connect(&m_trackDao, + connect(pTrackDAO, &TrackDAO::trackClean, pBaseTrackCache, &BaseTrackCache::slotTrackClean); - connect(&m_trackDao, + connect(pTrackDAO, &TrackDAO::trackChanged, pBaseTrackCache, &BaseTrackCache::slotTrackChanged); - connect(&m_trackDao, + connect(pTrackDAO, &TrackDAO::tracksAdded, pBaseTrackCache, &BaseTrackCache::slotTracksAdded); - connect(&m_trackDao, + connect(pTrackDAO, &TrackDAO::tracksRemoved, pBaseTrackCache, &BaseTrackCache::slotTracksRemoved); - connect(&m_trackDao, + connect(pTrackDAO, &TrackDAO::dbTrackAdded, pBaseTrackCache, &BaseTrackCache::slotDbTrackAdded); diff --git a/src/library/mixxxlibraryfeature.h b/src/library/mixxxlibraryfeature.h index 28ba9ee620..f449830002 100644 --- a/src/library/mixxxlibraryfeature.h +++ b/src/library/mixxxlibraryfeature.h @@ -60,7 +60,6 @@ class MixxxLibraryFeature : public LibraryFeature { DlgMissing* m_pMissingView; DlgHidden* m_pHiddenView; TreeItemModel m_childModel; - TrackDAO& m_trackDao; UserSettingsPointer m_pConfig; TrackCollection* m_pTrackCollection; QIcon m_icon; diff --git a/src/library/trackcollection.cpp b/src/library/trackcollection.cpp index b2eb305647..fdd6bfcf66 100644 --- a/src/library/trackcollection.cpp +++ b/src/library/trackcollection.cpp @@ -443,3 +443,26 @@ void TrackCollection::saveTrack(Track* pTrack) { m_trackDao.saveTrack(pTrack); } + +TrackPointer TrackCollection::getTrackById( + const TrackId& trackId) const { + return m_trackDao.getTrackById(trackId); +} + +TrackPointer TrackCollection::getOrAddTrack( + const TrackRef& trackRef, + bool* pAlreadyInLibrary) { + TrackPointer pTrack; + if (trackRef.hasId()) { + pTrack = getTrackById(trackRef.getId()); + if (pAlreadyInLibrary) { + *pAlreadyInLibrary = pTrack != nullptr; + } + } + if (!pTrack && trackRef.hasLocation()) { + pTrack = m_trackDao.getOrAddTrackByLocation( + trackRef.getLocation(), + pAlreadyInLibrary); + } + return pTrack; +} diff --git a/src/library/trackcollection.h b/src/library/trackcollection.h index 7e36f79bc0..b4b48c9317 100644 --- a/src/library/trackcollection.h +++ b/src/library/trackcollection.h @@ -84,6 +84,12 @@ class TrackCollection : public QObject, bool updateAutoDjCrate(CrateId crateId, bool isAutoDjSource); + TrackPointer getTrackById( + const TrackId& trackId) const; + TrackPointer getOrAddTrack( + const TrackRef& trackRef, + bool* pAlreadyInLibrary = nullptr); + // Might be called from any thread void exportTrackMetadata(Track* pTrack) const; diff --git a/src/test/autodjprocessor_test.cpp b/src/test/autodjprocessor_test.cpp index 60c25e2a9f..75b814ebfb 100644 --- a/src/test/autodjprocessor_test.cpp +++ b/src/test/autodjprocessor_test.cpp @@ -606,7 +606,7 @@ TEST_F(AutoDJProcessorTest, EnabledSuccess_DecksStopped) { // Load the track and mark it playing (as the loadTrackToPlayer signal would // have connected to this eventually). - TrackPointer pTrack = collection()->getTrackDAO().getTrack(testId); + TrackPointer pTrack = collection()->getTrackById(testId); deck1.slotLoadTrack(pTrack, true); // Signal that the request to load pTrack succeeded. |