Merge pull request #4532

8f22e808 device: destroy device objects on exit (moneromooo-monero)
This commit is contained in:
Riccardo Spagni 2018-10-08 22:30:50 +02:00
commit 31155115d2
No known key found for this signature in database
GPG Key ID: 55432DF31CCD4FCD
1 changed files with 16 additions and 9 deletions

View File

@ -41,13 +41,26 @@ namespace hw {
/* SETUP */
/* ======================================================================= */
static std::unique_ptr<device_registry> registry;
static device_registry *get_device_registry(bool clear = false){
static device_registry *registry = new device_registry();
if (clear)
{
delete registry;
registry = NULL;
}
return registry;
}
static void clear_device_registry(){
get_device_registry(true);
}
device_registry::device_registry(){
hw::core::register_all(registry);
#ifdef WITH_DEVICE_LEDGER
hw::ledger::register_all(registry);
#endif
atexit(clear_device_registry);
}
bool device_registry::register_device(const std::string & device_name, device * hw_device){
@ -80,18 +93,12 @@ namespace hw {
}
device& get_device(const std::string & device_descriptor) {
if (!registry){
registry.reset(new device_registry());
}
device_registry *registry = get_device_registry();
return registry->get_device(device_descriptor);
}
bool register_device(const std::string & device_name, device * hw_device){
if (!registry){
registry.reset(new device_registry());
}
device_registry *registry = get_device_registry();
return registry->register_device(device_name, hw_device);
}