sensord: fix to not loading sensor which is already loaded 68/72068/1
authorkibak.yoon <kibak.yoon@samsung.com>
Mon, 30 May 2016 10:58:51 +0000 (19:58 +0900)
committerkibak.yoon <kibak.yoon@samsung.com>
Mon, 30 May 2016 10:58:51 +0000 (19:58 +0900)
- a sensor has to be loaded just once.

Change-Id: I9cbd1897e6a582a85ed90cc8f36812503c2d08c3
Signed-off-by: kibak.yoon <kibak.yoon@samsung.com>
src/server/sensor_loader.cpp
src/server/sensor_loader.h

index 5e0e0f9..a873d71 100644 (file)
@@ -63,8 +63,8 @@ sensor_loader::~sensor_loader()
        sensor_device_map_t::iterator it_device;
        std::vector<void *>::iterator it_handle;
 
-       for (it_device = m_devices.begin(); it_device != m_devices.end();)
-               it_device = m_devices.erase(it_device);
+       for (it_device = m_active_devices.begin(); it_device != m_active_devices.end();)
+               it_device = m_active_devices.erase(it_device);
 
        for (it_handle = m_handles.begin(); it_handle != m_handles.end(); ++it_handle)
                dlclose(*it_handle);
@@ -220,6 +220,9 @@ void sensor_loader::create_physical_sensors(sensor_type_t type)
                std::shared_ptr<sensor_base> sensor_ptr(sensor);
                m_sensors.insert(std::make_pair(_type, sensor_ptr));
 
+               m_active_devices[it->first] = it->second;
+               m_devices.erase(it->first);
+
                _I("created [%s] sensor", sensor->get_name());
        }
 }
index c10c4bb..4d9f179 100644 (file)
@@ -56,6 +56,7 @@ private:
 
        sensor_map_t m_sensors;
        sensor_device_map_t m_devices;
+       sensor_device_map_t m_active_devices;
        std::vector<void *> m_handles;
 public:
        static sensor_loader& get_instance(void);