aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/libs/extensionsystem/iplugin.cpp62
-rw-r--r--src/libs/extensionsystem/iplugin.h4
-rw-r--r--src/libs/extensionsystem/iplugin_p.h5
-rw-r--r--tests/auto/extensionsystem/pluginmanager/circularplugins/plugin1/plugin1.cpp7
-rw-r--r--tests/auto/extensionsystem/pluginmanager/circularplugins/plugin1/plugin1.h9
-rw-r--r--tests/auto/extensionsystem/pluginmanager/circularplugins/plugin2/plugin2.cpp6
-rw-r--r--tests/auto/extensionsystem/pluginmanager/circularplugins/plugin2/plugin2.h9
-rw-r--r--tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin1/plugin1.cpp20
-rw-r--r--tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin1/plugin1.h14
-rw-r--r--tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin2/plugin2.cpp20
-rw-r--r--tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin2/plugin2.h14
-rw-r--r--tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin3/plugin3.cpp20
-rw-r--r--tests/auto/extensionsystem/pluginmanager/correctplugins1/plugin3/plugin3.h14
-rw-r--r--tests/manual/pluginview/plugins/plugin1/plugin1.cpp19
-rw-r--r--tests/manual/pluginview/plugins/plugin1/plugin1.h14
-rw-r--r--tests/manual/pluginview/plugins/plugin2/plugin2.cpp19
-rw-r--r--tests/manual/pluginview/plugins/plugin2/plugin2.h14
-rw-r--r--tests/manual/pluginview/plugins/plugin3/plugin3.cpp21
-rw-r--r--tests/manual/pluginview/plugins/plugin3/plugin3.h14
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