221 |
= Device::getDeviceIDs(pMainForm->client(), Device::Midi); |
= Device::getDeviceIDs(pMainForm->client(), Device::Midi); |
222 |
// hide and delete status forms whose device has been destroyed |
// hide and delete status forms whose device has been destroyed |
223 |
std::map<int, DeviceStatusForm *>::iterator iter = g_instances.begin(); |
std::map<int, DeviceStatusForm *>::iterator iter = g_instances.begin(); |
224 |
for ( ; iter != g_instances.end(); ++iter) { |
while (iter != g_instances.end()) { |
225 |
if (deviceIDs.find(iter->first) == deviceIDs.end()) { |
if (deviceIDs.find(iter->first) == deviceIDs.end()) { |
226 |
iter->second->hide(); |
iter->second->hide(); |
227 |
delete iter->second; |
delete iter->second; |
228 |
g_instances.erase(iter); |
// postfix increment here to avoid iterator invalidation (crash) |
229 |
} |
g_instances.erase(iter++); |
230 |
|
} else ++iter; |
231 |
} |
} |
232 |
// create status forms for new devices |
// create status forms for new devices |
233 |
std::set<int>::iterator it = deviceIDs.begin(); |
std::set<int>::iterator it = deviceIDs.begin(); |