diff options
| -rw-r--r-- | src/qmmp/metadatamanager.cpp | 9 | ||||
| -rw-r--r-- | src/qmmp/metadatamanager.h | 16 | ||||
| -rw-r--r-- | src/qmmp/soundcore.cpp | 1 |
3 files changed, 9 insertions, 17 deletions
diff --git a/src/qmmp/metadatamanager.cpp b/src/qmmp/metadatamanager.cpp index ffacd817f..9080a25f6 100644 --- a/src/qmmp/metadatamanager.cpp +++ b/src/qmmp/metadatamanager.cpp @@ -22,6 +22,7 @@ #include <QFileInfo> #include <QBuffer> #include <QMutexLocker> +#include <QCoreApplication> #include "decoder.h" #include "decoderfactory.h" #include "abstractengine.h" @@ -35,16 +36,12 @@ MetaDataManager* MetaDataManager::m_instance = nullptr; MetaDataManager::MetaDataManager() : m_mutex(QMutex::Recursive) { - if(m_instance) - qFatal("MetaDataManager is already created"); - m_instance = this; m_settings = QmmpSettings::instance(); } MetaDataManager::~MetaDataManager() { clearCoverCache(); - m_instance = nullptr; } QList<TrackInfo *> MetaDataManager::createPlayList(const QString &path, TrackInfo::Parts parts, QStringList *ignoredPaths) const @@ -310,7 +307,10 @@ void MetaDataManager::prepareForAnotherThread() MetaDataManager *MetaDataManager::instance() { if(!m_instance) + { m_instance = new MetaDataManager(); + qAddPostRoutine(&MetaDataManager::destroy); + } return m_instance; } @@ -318,4 +318,5 @@ void MetaDataManager::destroy() { if(m_instance) delete m_instance; + m_instance = nullptr; } diff --git a/src/qmmp/metadatamanager.h b/src/qmmp/metadatamanager.h index 031a2e55c..fdce4ab1d 100644 --- a/src/qmmp/metadatamanager.h +++ b/src/qmmp/metadatamanager.h @@ -42,14 +42,6 @@ class QMMP_EXPORT MetaDataManager { public: /*! - * Constructor. Use MetaDataManager::instance() instead. - */ - MetaDataManager(); - /*! - * Destructor. Use MetaDataManager::destroy() instead. - */ - ~MetaDataManager(); - /*! * Extracts metadata and audio information from file \b path and returns a list of FileInfo items. * One file may contain several playlist items (for example: cda disk or flac with embedded cue) * @param path Local file path or URL. @@ -114,12 +106,12 @@ public: * Returns a pointer to the MetaDataManager instance. */ static MetaDataManager* instance(); - /*! - * Destroys MetaDataManager object. - */ - static void destroy(); private: + MetaDataManager(); + ~MetaDataManager(); + static void destroy(); + struct CoverCacheItem { QString url; diff --git a/src/qmmp/soundcore.cpp b/src/qmmp/soundcore.cpp index a535b1b71..611d597fe 100644 --- a/src/qmmp/soundcore.cpp +++ b/src/qmmp/soundcore.cpp @@ -63,7 +63,6 @@ SoundCore::SoundCore(QObject *parent) SoundCore::~SoundCore() { stop(); - MetaDataManager::destroy(); m_instance = nullptr; } |
