only init devices after their parents have been set up

This commit is contained in:
Michael Zanetti 2018-03-27 22:31:50 +02:00
parent b2a47036e4
commit 12ff672216

View File

@ -1149,14 +1149,28 @@ void DeviceManager::loadConfiguredDevices()
// We always add the device to the list in this case. If its in the storedDevices
// it means that it was working at some point so lets still add it as there might
// be rules associated with this device. Device::setupCompleted() will be false.
DeviceSetupStatus status = setupDevice(device);
// be rules associated with this device.
m_configuredDevices.insert(device->id(), device);
}
settings.endGroup();
QHash<DeviceId, Device*> setupList = m_configuredDevices;
while (!setupList.isEmpty()) {
Device *device = nullptr;
foreach (Device *d, setupList) {
if (d->parentId().isNull() || !setupList.contains(d->parentId())) {
device = d;
setupList.take(d->id());
break;
}
}
Q_ASSERT(device != nullptr);
DeviceSetupStatus status = setupDevice(device);
if (status == DeviceSetupStatus::DeviceSetupStatusSuccess)
postSetupDevice(device);
}
settings.endGroup();
}
void DeviceManager::storeConfiguredDevices()