diff --git a/src/Device.cpp b/src/Device.cpp index 8efe3b5f1..37443cded 100644 --- a/src/Device.cpp +++ b/src/Device.cpp @@ -18,26 +18,36 @@ #include "Device.h" -static QMap devices; +typedef QMap DevicesMap; + +static DevicesMap *devicesPtr; + +inline DevicesMap & +devices() +{ + if (devicesPtr == NULL) + devicesPtr = new QMap; + return *devicesPtr; +} QList Device::deviceTypes() { - return devices.keys(); + return devices().keys(); } Device & Device::device(const QString &deviceType) { - assert(devices.contains(deviceType)); - return *devices.value(deviceType); + assert(devices().contains(deviceType)); + return *devices().value(deviceType); } bool Device::addDevice(const QString &deviceType, Device *device) { - assert(!devices.contains(deviceType)); - devices.insert(deviceType, device); + assert(!devices().contains(deviceType)); + devices().insert(deviceType, device); return true; }