+void DeviceManager::release_driver(struct sr_dev_driver *const driver)
+{
+ assert(driver);
+ for (map<sr_dev_inst*, SigSession*>::iterator i = _used_devices.begin();
+ i != _used_devices.end(); i++)
+ if((*i).first->driver == driver)
+ {
+ // Notify the current owner of the device
+ (*i).second->release_device((*i).first);
+
+ // Remove it from the used device list
+ _used_devices.erase(i);
+
+ // Close the device instance
+ sr_dev_close((*i).first);
+ }
+
+ // Clear all the old device instances from this driver
+ sr_dev_clear(driver);
+}
+