Qnx: Fix lifecycle of the BlackBerryConfigurationManager

This fixes a crash when this class tries to show a UI while it is
destructed.

Task-number: QTCREATORBUG-11712
Change-Id: If4aca14a3ca4792bec1a45903a1f38287d16dbc4
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
This commit is contained in:
Tobias Hunger
2014-03-19 12:04:04 +01:00
parent bfd6040224
commit 0e67b293b7
20 changed files with 94 additions and 102 deletions

View File

@@ -93,6 +93,7 @@ bool QNXPlugin::initialize(const QStringList &arguments, QString *errorString)
Q_UNUSED(errorString)
// Handles BlackBerry
addAutoReleasedObject(new BlackBerryConfigurationManager);
addAutoReleasedObject(new BlackBerryQtVersionFactory);
addAutoReleasedObject(new BlackBerryDeployConfigurationFactory);
addAutoReleasedObject(new BlackBerryDeviceConfigurationFactory);
@@ -134,7 +135,8 @@ bool QNXPlugin::initialize(const QStringList &arguments, QString *errorString)
}
addAutoReleasedObject(new BarDescriptorEditorFactory);
connect(ProjectExplorer::KitManager::instance(), SIGNAL(kitsLoaded()), &BlackBerryConfigurationManager::instance(), SLOT(loadSettings()));
connect(ProjectExplorer::KitManager::instance(), SIGNAL(kitsLoaded()),
BlackBerryConfigurationManager::instance(), SLOT(loadSettings()));
return true;
}
@@ -479,12 +481,12 @@ void QNXPlugin::testConfigurationManager_data()
void QNXPlugin::testConfigurationManager()
{
BlackBerryConfigurationManager &manager = BlackBerryConfigurationManager::instance();
BlackBerryConfigurationManager *manager = BlackBerryConfigurationManager::instance();
QCOMPARE(manager.apiLevels().count(), 0);
QCOMPARE(manager.activeApiLevels().count(), 0);
QCOMPARE(manager.defaultApiLevel(), static_cast<BlackBerryApiLevelConfiguration*>(0));
QVERIFY(manager.newestApiLevelEnabled());
QCOMPARE(manager->apiLevels().count(), 0);
QCOMPARE(manager->activeApiLevels().count(), 0);
QCOMPARE(manager->defaultApiLevel(), static_cast<BlackBerryApiLevelConfiguration*>(0));
QVERIFY(manager->newestApiLevelEnabled());
QFETCH(QVariantMap, newerConfiguration);
QFETCH(QVariantMap, olderConfiguration);
@@ -495,32 +497,32 @@ void QNXPlugin::testConfigurationManager()
BlackBerryApiLevelConfiguration *oldConfig =
new BlackBerryApiLevelConfiguration(olderConfiguration);
QVERIFY(manager.addApiLevel(oldConfig));
QVERIFY(manager.newestApiLevelEnabled());
QCOMPARE(manager.defaultApiLevel(), oldConfig);
QVERIFY(manager->addApiLevel(oldConfig));
QVERIFY(manager->newestApiLevelEnabled());
QCOMPARE(manager->defaultApiLevel(), oldConfig);
manager.setDefaultConfiguration(oldConfig);
manager->setDefaultConfiguration(oldConfig);
QCOMPARE(manager.defaultApiLevel(), oldConfig);
QCOMPARE(manager.apiLevels().first(), oldConfig);
QVERIFY(!manager.newestApiLevelEnabled());
QCOMPARE(manager->defaultApiLevel(), oldConfig);
QCOMPARE(manager->apiLevels().first(), oldConfig);
QVERIFY(!manager->newestApiLevelEnabled());
QVERIFY(manager.addApiLevel(newerConfig));
QCOMPARE(manager.apiLevels().first(), newerConfig);
QCOMPARE(manager.defaultApiLevel(), oldConfig);
QVERIFY(manager->addApiLevel(newerConfig));
QCOMPARE(manager->apiLevels().first(), newerConfig);
QCOMPARE(manager->defaultApiLevel(), oldConfig);
manager.setDefaultConfiguration(0);
QVERIFY(manager.newestApiLevelEnabled());
QCOMPARE(manager.defaultApiLevel(), newerConfig);
manager->setDefaultConfiguration(0);
QVERIFY(manager->newestApiLevelEnabled());
QCOMPARE(manager->defaultApiLevel(), newerConfig);
manager.setDefaultConfiguration(oldConfig);
manager.removeApiLevel(oldConfig);
QCOMPARE(manager.defaultApiLevel(), newerConfig);
QVERIFY(manager.newestApiLevelEnabled());
manager->setDefaultConfiguration(oldConfig);
manager->removeApiLevel(oldConfig);
QCOMPARE(manager->defaultApiLevel(), newerConfig);
QVERIFY(manager->newestApiLevelEnabled());
manager.removeApiLevel(newerConfig);
QCOMPARE(manager.defaultApiLevel(), static_cast<BlackBerryApiLevelConfiguration*>(0));
QVERIFY(manager.newestApiLevelEnabled());
manager->removeApiLevel(newerConfig);
QCOMPARE(manager->defaultApiLevel(), static_cast<BlackBerryApiLevelConfiguration*>(0));
QVERIFY(manager->newestApiLevelEnabled());
}
#endif