Target: Make sure the kit pointer does not change

Change-Id: Id49519890cbc11a68a19a2072f45393bb00e2530
Reviewed-by: Niels Weber <niels.weber@theqtcompany.com>
This commit is contained in:
Tobias Hunger
2015-11-16 17:08:04 +01:00
parent 4a5ed881fa
commit e404aa2ec9

View File

@@ -80,21 +80,21 @@ namespace ProjectExplorer {
class TargetPrivate class TargetPrivate
{ {
public: public:
TargetPrivate(); TargetPrivate(Kit *k);
QList<DeployConfigurationFactory *> deployFactories() const; QList<DeployConfigurationFactory *> deployFactories() const;
bool m_isEnabled; bool m_isEnabled = true;
QIcon m_icon; QIcon m_icon;
QIcon m_overlayIcon; QIcon m_overlayIcon;
QString m_toolTip; QString m_toolTip;
QList<BuildConfiguration *> m_buildConfigurations; QList<BuildConfiguration *> m_buildConfigurations;
BuildConfiguration *m_activeBuildConfiguration; BuildConfiguration *m_activeBuildConfiguration = 0;
QList<DeployConfiguration *> m_deployConfigurations; QList<DeployConfiguration *> m_deployConfigurations;
DeployConfiguration *m_activeDeployConfiguration; DeployConfiguration *m_activeDeployConfiguration = 0;
QList<RunConfiguration *> m_runConfigurations; QList<RunConfiguration *> m_runConfigurations;
RunConfiguration* m_activeRunConfiguration; RunConfiguration* m_activeRunConfiguration = 0;
DeploymentData m_deploymentData; DeploymentData m_deploymentData;
BuildTargetInfoList m_appTargets; BuildTargetInfoList m_appTargets;
QVariantMap m_pluginSettings; QVariantMap m_pluginSettings;
@@ -103,20 +103,15 @@ public:
QPixmap m_readyToUsePixmap; QPixmap m_readyToUsePixmap;
QPixmap m_disconnectedPixmap; QPixmap m_disconnectedPixmap;
Kit *m_kit; Kit *const m_kit;
}; };
TargetPrivate::TargetPrivate() : TargetPrivate::TargetPrivate(Kit *k) :
m_isEnabled(true),
m_activeBuildConfiguration(0),
m_activeDeployConfiguration(0),
m_activeRunConfiguration(0),
m_connectedPixmap(QLatin1String(":/projectexplorer/images/DeviceConnected.png")), m_connectedPixmap(QLatin1String(":/projectexplorer/images/DeviceConnected.png")),
m_readyToUsePixmap(QLatin1String(":/projectexplorer/images/DeviceReadyToUse.png")), m_readyToUsePixmap(QLatin1String(":/projectexplorer/images/DeviceReadyToUse.png")),
m_disconnectedPixmap(QLatin1String(":/projectexplorer/images/DeviceDisconnected.png")), m_disconnectedPixmap(QLatin1String(":/projectexplorer/images/DeviceDisconnected.png")),
m_kit(0) m_kit(k)
{ { }
}
QList<DeployConfigurationFactory *> TargetPrivate::deployFactories() const QList<DeployConfigurationFactory *> TargetPrivate::deployFactories() const
{ {
@@ -125,10 +120,10 @@ QList<DeployConfigurationFactory *> TargetPrivate::deployFactories() const
Target::Target(Project *project, Kit *k) : Target::Target(Project *project, Kit *k) :
ProjectConfiguration(project, k->id()), ProjectConfiguration(project, k->id()),
d(new TargetPrivate) d(new TargetPrivate(k))
{ {
QTC_CHECK(d->m_kit);
connect(DeviceManager::instance(), &DeviceManager::updated, this, &Target::updateDeviceState); connect(DeviceManager::instance(), &DeviceManager::updated, this, &Target::updateDeviceState);
d->m_kit = k;
setDisplayName(d->m_kit->displayName()); setDisplayName(d->m_kit->displayName());
setIcon(d->m_kit->icon()); setIcon(d->m_kit->icon());
@@ -213,7 +208,6 @@ void Target::handleKitRemoval(Kit *k)
{ {
if (k != d->m_kit) if (k != d->m_kit)
return; return;
d->m_kit = 0;
project()->removeTarget(this); project()->removeTarget(this);
} }
@@ -793,9 +787,7 @@ bool Target::fromMap(const QVariantMap &map)
if (!ProjectConfiguration::fromMap(map)) if (!ProjectConfiguration::fromMap(map))
return false; return false;
d->m_kit = KitManager::find(id()); QTC_ASSERT(d->m_kit == KitManager::find(id()), return false);
if (!d->m_kit)
return false;
setDisplayName(d->m_kit->displayName()); // Overwrite displayname read from file setDisplayName(d->m_kit->displayName()); // Overwrite displayname read from file
setDefaultDisplayName(d->m_kit->displayName()); setDefaultDisplayName(d->m_kit->displayName());