summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQt Continuous Integration System <qt-info@nokia.com>2011-09-26 08:21:07 (GMT)
committerQt Continuous Integration System <qt-info@nokia.com>2011-09-26 08:21:07 (GMT)
commitdd41d37937ee9849808258308312bd7c6ea06d05 (patch)
tree9c6c2111e254d328a8d5c4535caa5562c48e4d68
parenta85340bfb53e8fcc1df30e35c5bfcfcc0b0ef621 (diff)
parent8d9e63130767858287331d7e19d732919d620607 (diff)
downloadQt-dd41d37937ee9849808258308312bd7c6ea06d05.zip
Qt-dd41d37937ee9849808258308312bd7c6ea06d05.tar.gz
Qt-dd41d37937ee9849808258308312bd7c6ea06d05.tar.bz2
Merge branch 'master' of git://scm.dev.nokia.troll.no/qt/qt-symbian-team
* 'master' of git://scm.dev.nokia.troll.no/qt/qt-symbian-team: Fix plugin implicit loading when calling QPluginLoader::instance().
-rw-r--r--src/corelib/plugin/qpluginloader.cpp2
-rw-r--r--tests/auto/qpluginloader/tst_qpluginloader.cpp29
2 files changed, 21 insertions, 10 deletions
diff --git a/src/corelib/plugin/qpluginloader.cpp b/src/corelib/plugin/qpluginloader.cpp
index bbb64e4..9f9ea1a 100644
--- a/src/corelib/plugin/qpluginloader.cpp
+++ b/src/corelib/plugin/qpluginloader.cpp
@@ -198,7 +198,7 @@ QPluginLoader::~QPluginLoader()
*/
QObject *QPluginLoader::instance()
{
- if (!isLoaded() && !load())
+ if (!load())
return 0;
if (!d->inst && d->instance)
d->inst = d->instance();
diff --git a/tests/auto/qpluginloader/tst_qpluginloader.cpp b/tests/auto/qpluginloader/tst_qpluginloader.cpp
index d2d92a5..152d1f4 100644
--- a/tests/auto/qpluginloader/tst_qpluginloader.cpp
+++ b/tests/auto/qpluginloader/tst_qpluginloader.cpp
@@ -272,10 +272,10 @@ void tst_QPluginLoader::loadHints()
void tst_QPluginLoader::deleteinstanceOnUnload()
{
- for (int pass = 0; pass < 2; ++pass) {
+ for (int pass = 0; pass < 4; ++pass) {
QPluginLoader loader1;
loader1.setFileName( sys_qualifiedLibraryName("theplugin")); //a plugin
- if (pass == 0)
+ if (pass < 2)
loader1.load(); // not recommended, instance() should do the job.
PluginInterface *instance1 = qobject_cast<PluginInterface*>(loader1.instance());
QVERIFY(instance1);
@@ -283,21 +283,32 @@ void tst_QPluginLoader::deleteinstanceOnUnload()
QPluginLoader loader2;
loader2.setFileName( sys_qualifiedLibraryName("theplugin")); //a plugin
- if (pass == 0)
+ if (pass < 2)
loader2.load(); // not recommended, instance() should do the job.
PluginInterface *instance2 = qobject_cast<PluginInterface*>(loader2.instance());
QCOMPARE(instance2->pluginName(), QLatin1String("Plugin ok"));
QSignalSpy spy1(loader1.instance(), SIGNAL(destroyed()));
QSignalSpy spy2(loader2.instance(), SIGNAL(destroyed()));
- if (pass == 0) {
- QCOMPARE(loader2.unload(), false); // refcount not reached 0, not really unloaded
- QCOMPARE(spy1.count(), 0);
- QCOMPARE(spy2.count(), 0);
- }
+
+ // refcount not reached 0, not really unloaded
+ if (pass % 2)
+ QCOMPARE(loader1.unload(), false);
+ else
+ QCOMPARE(loader2.unload(), false);
+
+ QCOMPARE(spy1.count(), 0);
+ QCOMPARE(spy2.count(), 0);
+
QCOMPARE(instance1->pluginName(), QLatin1String("Plugin ok"));
QCOMPARE(instance2->pluginName(), QLatin1String("Plugin ok"));
- QVERIFY(loader1.unload()); // refcount reached 0, did really unload
+
+ // refcount reached 0, did really unload
+ if (pass % 2)
+ QVERIFY(loader2.unload());
+ else
+ QVERIFY(loader1.unload());
+
QCOMPARE(spy1.count(), 1);
QCOMPARE(spy2.count(), 1);
}