OSDN Git Service

QFactoryLoader does not need QObject as base class
authorIvailo Monev <xakepa10@gmail.com>
Sat, 11 Jun 2022 19:40:02 +0000 (22:40 +0300)
committerIvailo Monev <xakepa10@gmail.com>
Sat, 11 Jun 2022 19:40:02 +0000 (22:40 +0300)
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
src/core/plugin/qfactoryloader.cpp
src/core/plugin/qfactoryloader_p.h

index 97fe599..b403473 100644 (file)
@@ -40,12 +40,12 @@ Q_GLOBAL_STATIC(QList<QFactoryLoader *>, qt_factory_loaders)
 
 static std::recursive_mutex qGlobalFactoryLoaderMutex;
 
-class QFactoryLoaderPrivate : public QObjectPrivate
+class QFactoryLoaderPrivate
 {
-    Q_DECLARE_PUBLIC(QFactoryLoader)
 public:
-    QFactoryLoaderPrivate(){}
+    QFactoryLoaderPrivate();
     ~QFactoryLoaderPrivate();
+
     mutable QMutex mutex;
     QByteArray iid;
     QList<QLibraryPrivate*> libraryList;
@@ -56,6 +56,10 @@ public:
     QStringList loadedPaths;
 };
 
+QFactoryLoaderPrivate::QFactoryLoaderPrivate()
+{
+}
+
 QFactoryLoaderPrivate::~QFactoryLoaderPrivate()
 {
     foreach (QLibraryPrivate *library, libraryList)
@@ -65,7 +69,7 @@ QFactoryLoaderPrivate::~QFactoryLoaderPrivate()
 QFactoryLoader::QFactoryLoader(const char *iid,
                                const QString &suffix,
                                Qt::CaseSensitivity cs)
-    : QObject(*new QFactoryLoaderPrivate)
+    : d_ptr(new QFactoryLoaderPrivate())
 {
     Q_D(QFactoryLoader);
     d->iid = iid;
@@ -185,6 +189,7 @@ QFactoryLoader::~QFactoryLoader()
 {
     std::lock_guard<std::recursive_mutex> locker(qGlobalFactoryLoaderMutex);
     qt_factory_loaders()->removeAll(this);
+    delete d_ptr;
 }
 
 QStringList QFactoryLoader::keys() const
@@ -216,8 +221,6 @@ void QFactoryLoader::refreshAll()
     }
 }
 
-#include "moc_qfactoryloader_p.h"
-
 QT_END_NAMESPACE
 
 #endif // QT_NO_LIBRARY
index 161d14f..ccc6e5c 100644 (file)
@@ -43,11 +43,8 @@ QT_BEGIN_NAMESPACE
 
 class QFactoryLoaderPrivate;
 
-class Q_CORE_EXPORT QFactoryLoader : public QObject
+class Q_CORE_EXPORT QFactoryLoader
 {
-    Q_OBJECT
-    Q_DECLARE_PRIVATE(QFactoryLoader)
-
 public:
     QFactoryLoader(const char *iid,
                    const QString &suffix,
@@ -61,6 +58,11 @@ public:
     void updateDir(const QString &pluginDir);
 
     static void refreshAll();
+
+private:
+    QFactoryLoaderPrivate *d_ptr;
+    Q_DECLARE_PRIVATE(QFactoryLoader)
+
 };
 
 QT_END_NAMESPACE