From e60c874f5d4a6dbeb6d23aa5d3b2913f0d09dc29 Mon Sep 17 00:00:00 2001 From: "kibak.yoon" Date: Mon, 30 May 2016 19:58:51 +0900 Subject: [PATCH] sensord: fix to not loading sensor which is already loaded - a sensor has to be loaded just once. Change-Id: I9cbd1897e6a582a85ed90cc8f36812503c2d08c3 Signed-off-by: kibak.yoon --- src/server/sensor_loader.cpp | 7 +++++-- src/server/sensor_loader.h | 1 + 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/server/sensor_loader.cpp b/src/server/sensor_loader.cpp index 5e0e0f9..a873d71 100644 --- a/src/server/sensor_loader.cpp +++ b/src/server/sensor_loader.cpp @@ -63,8 +63,8 @@ sensor_loader::~sensor_loader() sensor_device_map_t::iterator it_device; std::vector::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_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()); } } diff --git a/src/server/sensor_loader.h b/src/server/sensor_loader.h index c10c4bb..4d9f179 100644 --- a/src/server/sensor_loader.h +++ b/src/server/sensor_loader.h @@ -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 m_handles; public: static sensor_loader& get_instance(void); -- 2.7.4