diff options
19 files changed, 112 insertions, 193 deletions
diff --git a/src/libs/extensionsystem/iplugin.cpp b/src/libs/extensionsystem/iplugin.cpp index b22814a9e5..76704be823 100644 --- a/src/libs/extensionsystem/iplugin.cpp +++ b/src/libs/extensionsystem/iplugin.cpp @@ -61,21 +61,18 @@ \li All plugin libraries are loaded in \e{root-to-leaf} order of the dependency tree. \li All plugins' initialize functions are called in \e{root-to-leaf} order - of the dependency tree. This is a good place to put - objects in the plugin manager's object pool. + of the dependency tree. This is a good time to create objects + needed by other plugins and register them via appropriate core functions + or, if a weak dependency is neceessary to be implemented, to put + them into the global object pool. \li All plugins' extensionsInitialized functions are called in \e{leaf-to-root} order of the dependency tree. At this point, plugins can be sure that all plugins that depend on this plugin have - been initialized completely (implying that they have put - objects in the object pool, if they want that during the - initialization sequence). + been initialized completely and objects these plugins wish to + share have been registered or are available in the global object pool. \endlist If library loading or initialization of a plugin fails, all plugins that depend on that plugin also fail. - - Plugins have access to the plugin manager - (and its object pool) via the PluginManager::instance() - function. */ /*! @@ -102,8 +99,8 @@ In this function, the plugin can assume that plugins that depend on this plugin are fully 'up and running'. It is a good place to - look in the plugin manager's object pool for objects that have - been provided by dependent plugins. + look in the global object pool for objects that have been provided + by weakly dependent plugins. \sa initialize() \sa delayedInitialize() @@ -191,12 +188,8 @@ IPlugin::IPlugin() */ IPlugin::~IPlugin() { - foreach (QObject *obj, d->addedObjectsInReverseOrder) - PluginManager::removeObject(obj); - qDeleteAll(d->addedObjectsInReverseOrder); - d->addedObjectsInReverseOrder.clear(); delete d; - d = 0; + d = nullptr; } /*! @@ -222,40 +215,3 @@ PluginSpec *IPlugin::pluginSpec() const { return d->pluginSpec; } - -/*! - \fn void IPlugin::addObject(QObject *obj) - Convenience function that registers \a obj in the plugin manager's - plugin pool by just calling PluginManager::addObject(). -*/ -void IPlugin::addObject(QObject *obj) -{ - PluginManager::addObject(obj); -} - -/*! - \fn void IPlugin::addAutoReleasedObject(QObject *obj) - Convenience function for registering \a obj in the plugin manager's - plugin pool. Usually, registered objects must be removed from - the object pool and deleted by hand. - Objects added to the pool via addAutoReleasedObject are automatically - removed and deleted in reverse order of registration when - the IPlugin instance is destroyed. - \sa PluginManager::addObject() -*/ -void IPlugin::addAutoReleasedObject(QObject *obj) -{ - d->addedObjectsInReverseOrder.prepend(obj); - PluginManager::addObject(obj); -} - -/*! - \fn void IPlugin::removeObject(QObject *obj) - Convenience function that unregisters \a obj from the plugin manager's - plugin pool by just calling PluginManager::removeObject(). -*/ -void IPlugin::removeObject(QObject *obj) -{ - PluginManager::removeObject(obj); -} - diff --git a/src/libs/extensionsystem/iplugin.h b/src/libs/extensionsystem/iplugin.h index 42b4a564c7..dd1372130e 100644 --- a/src/libs/extensionsystem/iplugin.h +++ b/src/libs/extensionsystem/iplugin.h @@ -64,10 +64,6 @@ public: PluginSpec *pluginSpec() const; - void addObject(QObject *obj); - void addAutoReleasedObject(QObject *obj); - void removeObject(QObject *obj); - signals: void asynchronousShutdownFinished(); diff --git a/src/libs/extensionsystem/iplugin_p.h b/src/libs/extensionsystem/iplugin_p.h index 0c3824dd39..998539d7f0 100644 --- a/src/libs/extensionsystem/iplugin_p.h +++ b/src/libs/extensionsystem/iplugin_p.h @@ -27,11 +27,8 @@ #include "iplugin.h" -#include <QString> - namespace ExtensionSystem { -class PluginManager; class PluginSpec; namespace Internal { @@ -40,8 +37,6 @@ class IPluginPrivate { public: PluginSpec *pluginSpec; - - QList<QObject *> addedObjectsInReverseOrder; }; } // namespace Internal diff --git a/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin1/plugin1.cpp b/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin1/plugin1.cpp index 98cfc0e7d4..bd8c3fd50e 100644 --- a/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin1/plugin1.cpp +++ b/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin1/plugin1.cpp @@ -25,15 +25,8 @@ #include "plugin1.h" -#include <qplugin.h> -#include <QStringList> - using namespace Plugin1; -MyPlugin1::MyPlugin1() -{ -} - bool MyPlugin1::initialize(const QStringList &arguments, QString *errorString) { Q_UNUSED(arguments) diff --git a/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin1/plugin1.h b/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin1/plugin1.h index 556fc0ba6f..4fe8e95fc3 100644 --- a/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin1/plugin1.h +++ b/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin1/plugin1.h @@ -27,9 +27,6 @@ #include <extensionsystem/iplugin.h> -#include <QObject> -#include <QtGlobal> - #if defined(PLUGIN1_LIBRARY) # define PLUGIN1_EXPORT Q_DECL_EXPORT #else @@ -44,10 +41,10 @@ class PLUGIN1_EXPORT MyPlugin1 : public ExtensionSystem::IPlugin Q_PLUGIN_METADATA(IID "plugin" FILE "plugin1.json") public: - MyPlugin1(); + MyPlugin1() = default; - bool initialize(const QStringList &arguments, QString *errorString); - void extensionsInitialized(); + bool initialize(const QStringList &arguments, QString *errorString) final; + void extensionsInitialized() final; }; } // namespace Plugin1 diff --git a/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin2/plugin2.cpp b/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin2/plugin2.cpp index 4d1bb259b7..3e6367dc3d 100644 --- a/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin2/plugin2.cpp +++ b/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin2/plugin2.cpp @@ -25,14 +25,8 @@ #include "plugin2.h" -#include <qplugin.h> - using namespace Plugin2; -MyPlugin2::MyPlugin2() -{ -} - bool MyPlugin2::initialize(const QStringList &, QString *) { return true; diff --git a/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin2/plugin2.h b/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin2/plugin2.h index e5e38e3300..adaf926905 100644 --- a/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin2/plugin2.h +++ b/tests/auto/extensionsystem/pluginmanager/circularplugins/plugin2/plugin2.h @@ -27,9 +27,6 @@ #include <extensionsystem/iplugin.h> -#include <QObject> -#include <QtGlobal> - #if defined(PLUGIN2_LIBRARY) # define PLUGIN2_EXPORT Q_DECL_EXPORT #else @@ -44,10 +41,10 @@ class PLUGIN2_EXPORT MyPlugin2 : public ExtensionSystem::IPlugin Q_PLUGIN_METADATA(IID "plugin" FILE "plugin2.json") public: - MyPlugin2(); + MyPlugin2() = default; - bool initialize(const QStringList &arguments, QString *errorString); - void extensionsInitialized(); + bool initialize(const QStringList &arguments, QString *errorString) final; + void extensionsInitialized() final; }; } // Plugin2 diff --git a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin1/plugin1.cpp b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin1/plugin1.cpp index 6405c26668..0bb1fc8842 100644 --- a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin1/plugin1.cpp +++ b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin1/plugin1.cpp @@ -27,22 +27,20 @@ #include <extensionsystem/pluginmanager.h> -#include <qplugin.h> -#include <QObject> - using namespace Plugin1; -MyPlugin1::MyPlugin1() - : initializeCalled(false) +MyPlugin1::~MyPlugin1() { + ExtensionSystem::PluginManager::removeObject(object1); + ExtensionSystem::PluginManager::removeObject(object2); } bool MyPlugin1::initialize(const QStringList & /*arguments*/, QString *errorString) { initializeCalled = true; - QObject *obj = new QObject; - obj->setObjectName(QLatin1String("MyPlugin1")); - addAutoReleasedObject(obj); + object1 = new QObject(this); + object1->setObjectName(QLatin1String("MyPlugin1")); + ExtensionSystem::PluginManager::addObject(object1); bool found2 = false; bool found3 = false; @@ -70,8 +68,8 @@ void MyPlugin1::extensionsInitialized() if (!initializeCalled) return; // don't do this at home, it's just done here for the test - QObject *obj = new QObject; - obj->setObjectName(QLatin1String("MyPlugin1_running")); - addAutoReleasedObject(obj); + object2 = new QObject(this); + object2->setObjectName(QLatin1String("MyPlugin1_running")); + ExtensionSystem::PluginManager::addObject(object2); } diff --git a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin1/plugin1.h b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin1/plugin1.h index 6a0d4c7f09..a449f27954 100644 --- a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin1/plugin1.h +++ b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin1/plugin1.h @@ -27,9 +27,6 @@ #include <extensionsystem/iplugin.h> -#include <QObject> -#include <QtGlobal> - #if defined(PLUGIN1_LIBRARY) # define PLUGIN1_EXPORT Q_DECL_EXPORT #else @@ -44,13 +41,16 @@ class PLUGIN1_EXPORT MyPlugin1 : public ExtensionSystem::IPlugin Q_PLUGIN_METADATA(IID "plugin" FILE "plugin1.json") public: - MyPlugin1(); + MyPlugin1() = default; + ~MyPlugin1() final; - bool initialize(const QStringList &arguments, QString *errorString); - void extensionsInitialized(); + bool initialize(const QStringList &arguments, QString *errorString) final; + void extensionsInitialized() final; private: - bool initializeCalled; + bool initializeCalled = false; + QObject *object1 = nullptr; + QObject *object2 = nullptr; }; } // namespace Plugin1 diff --git a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin2/plugin2.cpp b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin2/plugin2.cpp index cefdec9d10..3a9b60099f 100644 --- a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin2/plugin2.cpp +++ b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin2/plugin2.cpp @@ -27,22 +27,20 @@ #include <extensionsystem/pluginmanager.h> -#include <qplugin.h> -#include <QObject> - using namespace Plugin2; -MyPlugin2::MyPlugin2() - : initializeCalled(false) +MyPlugin2::~MyPlugin2() { + ExtensionSystem::PluginManager::removeObject(object1); + ExtensionSystem::PluginManager::removeObject(object2); } bool MyPlugin2::initialize(const QStringList &, QString *) { initializeCalled = true; - QObject *obj = new QObject; - obj->setObjectName(QLatin1String("MyPlugin2")); - addAutoReleasedObject(obj); + object1 = new QObject(this); + object1->setObjectName("MyPlugin2"); + ExtensionSystem::PluginManager::addObject(object1); return true; } @@ -52,8 +50,8 @@ void MyPlugin2::extensionsInitialized() if (!initializeCalled) return; // don't do this at home, it's just done here for the test - QObject *obj = new QObject; - obj->setObjectName(QLatin1String("MyPlugin2_running")); - addAutoReleasedObject(obj); + object2 = new QObject(this); + object2->setObjectName("MyPlugin2_running"); + ExtensionSystem::PluginManager::addObject(object2); } diff --git a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin2/plugin2.h b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin2/plugin2.h index 1a5ff1eb5c..1cf5d217e9 100644 --- a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin2/plugin2.h +++ b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin2/plugin2.h @@ -27,9 +27,6 @@ #include <extensionsystem/iplugin.h> -#include <QObject> -#include <QtGlobal> - #if defined(PLUGIN2_LIBRARY) # define PLUGIN2_EXPORT Q_DECL_EXPORT #else @@ -44,13 +41,16 @@ class PLUGIN2_EXPORT MyPlugin2 : public ExtensionSystem::IPlugin Q_PLUGIN_METADATA(IID "plugin" FILE "plugin2.json") public: - MyPlugin2(); + MyPlugin2() = default; + ~MyPlugin2() final; - bool initialize(const QStringList &arguments, QString *errorString); - void extensionsInitialized(); + bool initialize(const QStringList &arguments, QString *errorString) final; + void extensionsInitialized() final; private: - bool initializeCalled; + bool initializeCalled = false; + QObject *object1 = nullptr; + QObject *object2 = nullptr; }; } // namespace Plugin2 diff --git a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin3/plugin3.cpp b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin3/plugin3.cpp index b5f32ea1c7..a75ee58241 100644 --- a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin3/plugin3.cpp +++ b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin3/plugin3.cpp @@ -27,22 +27,20 @@ #include <extensionsystem/pluginmanager.h> -#include <qplugin.h> -#include <QObject> - using namespace Plugin3; -MyPlugin3::MyPlugin3() - : initializeCalled(false) +MyPlugin3::~MyPlugin3() { + ExtensionSystem::PluginManager::removeObject(object1); + ExtensionSystem::PluginManager::removeObject(object2); } bool MyPlugin3::initialize(const QStringList & /*arguments*/, QString *errorString) { initializeCalled = true; - QObject *obj = new QObject; - obj->setObjectName(QLatin1String("MyPlugin3")); - addAutoReleasedObject(obj); + object1 = new QObject(this); + object1->setObjectName(QLatin1String("MyPlugin3")); + ExtensionSystem::PluginManager::addObject(object1); bool found2 = false; foreach (QObject *object, ExtensionSystem::PluginManager::allObjects()) { @@ -61,7 +59,7 @@ void MyPlugin3::extensionsInitialized() if (!initializeCalled) return; // don't do this at home, it's just done here for the test - QObject *obj = new QObject; - obj->setObjectName(QLatin1String("MyPlugin3_running")); - addAutoReleasedObject(obj); + object2 = new QObject(this); + object2->setObjectName(QLatin1String("MyPlugin3_running")); + ExtensionSystem::PluginManager::addObject(object2); } diff --git a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin3/plugin3.h b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin3/plugin3.h index a8bfb4e7b6..bbc1e4d54d 100644 --- a/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin3/plugin3.h +++ b/tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin3/plugin3.h @@ -27,9 +27,6 @@ #include <extensionsystem/iplugin.h> -#include <QObject> -#include <QtGlobal> - #if defined(PLUGIN3_LIBRARY) # define PLUGIN3_EXPORT Q_DECL_EXPORT #else @@ -44,13 +41,16 @@ class PLUGIN3_EXPORT MyPlugin3 : public ExtensionSystem::IPlugin Q_PLUGIN_METADATA(IID "plugin" FILE "plugin3.json") public: - MyPlugin3(); + MyPlugin3() = default; + ~MyPlugin3() final; - bool initialize(const QStringList &arguments, QString *errorString); - void extensionsInitialized(); + bool initialize(const QStringList &arguments, QString *errorString) final; + void extensionsInitialized() final; private: - bool initializeCalled; + bool initializeCalled = false; + QObject *object1 = nullptr; + QObject *object2 = nullptr; }; } // namespace Plugin3 diff --git a/tests/manual/pluginview/plugins/plugin1/plugin1.cpp b/tests/manual/pluginview/plugins/plugin1/plugin1.cpp index f6fd28006b..5308c8147e 100644 --- a/tests/manual/pluginview/plugins/plugin1/plugin1.cpp +++ b/tests/manual/pluginview/plugins/plugin1/plugin1.cpp @@ -27,21 +27,20 @@ #include <extensionsystem/pluginmanager.h> -#include <QObject> - using namespace Plugin1; -MyPlugin1::MyPlugin1() - : initializeCalled(false) +MyPlugin1::~MyPlugin1() { + ExtensionSystem::PluginManager::removeObject(object1); + ExtensionSystem::PluginManager::removeObject(object2); } bool MyPlugin1::initialize(const QStringList & /*arguments*/, QString *errorString) { initializeCalled = true; - QObject *obj = new QObject(this); - obj->setObjectName("MyPlugin1"); - addAutoReleasedObject(obj); + object1 = new QObject(this); + object1->setObjectName("MyPlugin1"); + ExtensionSystem::PluginManager::addObject(object1); bool found2 = false; bool found3 = false; @@ -69,7 +68,7 @@ void MyPlugin1::extensionsInitialized() if (!initializeCalled) return; // don't do this at home, it's just done here for the test - QObject *obj = new QObject(this); - obj->setObjectName("MyPlugin1_running"); - addAutoReleasedObject(obj); + object2 = new QObject(this); + object2->setObjectName("MyPlugin1_running"); + ExtensionSystem::PluginManager::addObject(object2); } diff --git a/tests/manual/pluginview/plugins/plugin1/plugin1.h b/tests/manual/pluginview/plugins/plugin1/plugin1.h index 5621421aea..68c819e118 100644 --- a/tests/manual/pluginview/plugins/plugin1/plugin1.h +++ b/tests/manual/pluginview/plugins/plugin1/plugin1.h @@ -27,9 +27,6 @@ #include <extensionsystem/iplugin.h> -#include <QObject> -#include <QString> - namespace Plugin1 { class MyPlugin1 : public ExtensionSystem::IPlugin @@ -38,13 +35,16 @@ class MyPlugin1 : public ExtensionSystem::IPlugin Q_PLUGIN_METADATA(IID "plugin" FILE "plugin1.json") public: - MyPlugin1(); + MyPlugin1() = default; + ~MyPlugin1() final; - bool initialize(const QStringList &arguments, QString *errorString); - void extensionsInitialized(); + bool initialize(const QStringList &arguments, QString *errorString) final; + void extensionsInitialized() final; private: - bool initializeCalled; + bool initializeCalled = false; + QObject *object1 = nullptr; + QObject *object2 = nullptr; }; } // namespace Plugin1 diff --git a/tests/manual/pluginview/plugins/plugin2/plugin2.cpp b/tests/manual/pluginview/plugins/plugin2/plugin2.cpp index 72e194fb91..19f63f57a7 100644 --- a/tests/manual/pluginview/plugins/plugin2/plugin2.cpp +++ b/tests/manual/pluginview/plugins/plugin2/plugin2.cpp @@ -27,22 +27,21 @@ #include <extensionsystem/pluginmanager.h> -#include <QObject> - using namespace Plugin2; -MyPlugin2::MyPlugin2() - : initializeCalled(false) +MyPlugin2::~MyPlugin2() { + ExtensionSystem::PluginManager::removeObject(object1); + ExtensionSystem::PluginManager::removeObject(object2); } bool MyPlugin2::initialize(const QStringList & /*arguments*/, QString *errorString) { Q_UNUSED(errorString) initializeCalled = true; - QObject *obj = new QObject(this); - obj->setObjectName("MyPlugin2"); - addAutoReleasedObject(obj); + object1 = new QObject(this); + object1->setObjectName("MyPlugin2"); + ExtensionSystem::PluginManager::addObject(object1); return true; } @@ -52,7 +51,7 @@ void MyPlugin2::extensionsInitialized() if (!initializeCalled) return; // don't do this at home, it's just done here for the test - QObject *obj = new QObject(this); - obj->setObjectName("MyPlugin2_running"); - addAutoReleasedObject(obj); + object2 = new QObject(this); + object2->setObjectName("MyPlugin2_running"); + ExtensionSystem::PluginManager::addObject(object2); } diff --git a/tests/manual/pluginview/plugins/plugin2/plugin2.h b/tests/manual/pluginview/plugins/plugin2/plugin2.h index c949b318f4..df6d1893a2 100644 --- a/tests/manual/pluginview/plugins/plugin2/plugin2.h +++ b/tests/manual/pluginview/plugins/plugin2/plugin2.h @@ -27,9 +27,6 @@ #include <extensionsystem/iplugin.h> -#include <QObject> -#include <QString> - namespace Plugin2 { class MyPlugin2 : public ExtensionSystem::IPlugin @@ -38,13 +35,16 @@ class MyPlugin2 : public ExtensionSystem::IPlugin Q_PLUGIN_METADATA(IID "plugin" FILE "plugin2.json") public: - MyPlugin2(); + MyPlugin2() = default; + ~MyPlugin2() final; - bool initialize(const QStringList &arguments, QString *errorString); - void extensionsInitialized(); + bool initialize(const QStringList &arguments, QString *errorString) final; + void extensionsInitialized() final; private: - bool initializeCalled; + bool initializeCalled = false; + QObject *object1 = nullptr; + QObject *object2 = nullptr; }; } // namespace Plugin2 diff --git a/tests/manual/pluginview/plugins/plugin3/plugin3.cpp b/tests/manual/pluginview/plugins/plugin3/plugin3.cpp index 10e44366fc..0ba714709f 100644 --- a/tests/manual/pluginview/plugins/plugin3/plugin3.cpp +++ b/tests/manual/pluginview/plugins/plugin3/plugin3.cpp @@ -27,24 +27,23 @@ #include <extensionsystem/pluginmanager.h> -#include <QObject> - using namespace Plugin3; -MyPlugin3::MyPlugin3() - : initializeCalled(false) +MyPlugin3::~MyPlugin3() { + ExtensionSystem::PluginManager::removeObject(object1); + ExtensionSystem::PluginManager::removeObject(object2); } bool MyPlugin3::initialize(const QStringList & /*arguments*/, QString *errorString) { initializeCalled = true; - QObject *obj = new QObject(this); - obj->setObjectName("MyPlugin3"); - addAutoReleasedObject(obj); + object1 = new QObject(this); + object1->setObjectName("MyPlugin3"); + ExtensionSystem::PluginManager::addObject(object1); bool found2 = false; - foreach (QObject *object, ExtensionSystem::PluginManager::instance()->allObjects()) { + foreach (QObject *object, ExtensionSystem::PluginManager::allObjects()) { if (object->objectName() == "MyPlugin2") found2 = true; } @@ -60,7 +59,7 @@ void MyPlugin3::extensionsInitialized() if (!initializeCalled) return; // don't do this at home, it's just done here for the test - QObject *obj = new QObject(this); - obj->setObjectName("MyPlugin3_running"); - addAutoReleasedObject(obj); + object2 = new QObject(this); + object2->setObjectName("MyPlugin3_running"); + ExtensionSystem::PluginManager::addObject(object2); } diff --git a/tests/manual/pluginview/plugins/plugin3/plugin3.h b/tests/manual/pluginview/plugins/plugin3/plugin3.h index 0678e698f0..8ce26fe575 100644 --- a/tests/manual/pluginview/plugins/plugin3/plugin3.h +++ b/tests/manual/pluginview/plugins/plugin3/plugin3.h @@ -27,9 +27,6 @@ #include <extensionsystem/iplugin.h> -#include <QObject> -#include <QString> - namespace Plugin3 { class MyPlugin3 : public ExtensionSystem::IPlugin @@ -38,13 +35,16 @@ class MyPlugin3 : public ExtensionSystem::IPlugin Q_PLUGIN_METADATA(IID "plugin" FILE "plugin3.json") public: - MyPlugin3(); + MyPlugin3() = default; + ~MyPlugin3(); - bool initialize(const QStringList &arguments, QString *errorString); - void extensionsInitialized(); + bool initialize(const QStringList &arguments, QString *errorString) final; + void extensionsInitialized() final; private: - bool initializeCalled; + bool initializeCalled = false; + QObject *object1 = nullptr; + QObject *object2 = nullptr; }; } // namespace Plugin3 |