aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/qmmp/metadatamanager.cpp9
-rw-r--r--src/qmmp/metadatamanager.h16
-rw-r--r--src/qmmp/soundcore.cpp1
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;
}