Remove thread switching of sensor events 34/135734/1
authorMu-Woong Lee <muwoong.lee@samsung.com>
Mon, 26 Jun 2017 07:18:02 +0000 (16:18 +0900)
committerMu-Woong Lee <muwoong.lee@samsung.com>
Mon, 26 Jun 2017 07:18:02 +0000 (16:18 +0900)
contextd is now single-threaded, thus sensor events don't need to be passed to the sensor-recorder's thread.

Change-Id: I261f2487c76ea74634b7a502b3a12d5b419f395e
Signed-off-by: Mu-Woong Lee <muwoong.lee@samsung.com>
src/server/SensorRecorderService.cpp
src/server/SensorTimer.cpp
src/server/SensorTimer.h
src/server/legacy/SensorProxy.cpp
src/server/legacy/SensorProxy.h

index bb1ae60..9846d00 100644 (file)
@@ -61,7 +61,7 @@ bool SensorRecorderService::prepare()
        if (!SensorDatabase::open(util::getActiveUid()))
                return false;
 
-       SensorTimer::init(__serviceRunner->getMainContext());
+       SensorTimer::init();
        SensorProvider::init();
 
        return true;
index 2e83968..acf2bfa 100644 (file)
@@ -27,9 +27,9 @@ SensorTimer::SensorTimer()
 {
 }
 
-void SensorTimer::init(GMainContext* mainContext)
+void SensorTimer::init()
 {
-       __timer = new Timer(mainContext);
+       __timer = new Timer();
 }
 
 void SensorTimer::release()
@@ -37,11 +37,6 @@ void SensorTimer::release()
        delete __timer;
 }
 
-unsigned int SensorTimer::addIdle(GSourceFunc callback, gpointer userData)
-{
-       return __timer->addIdle(callback, userData);
-}
-
 unsigned int SensorTimer::addAlarm(unsigned int intervalMin, ITimerListener* listener)
 {
        return __timer->addAlarm(intervalMin, listener, NULL);
index 3f258a3..752f86d 100644 (file)
@@ -26,10 +26,9 @@ namespace ctx {
 
        class SensorTimer {
        public:
-               static void init(GMainContext* mainContext);
+               static void init();
                static void release();
 
-               static unsigned int addIdle(GSourceFunc callback, gpointer userData);
                static unsigned int addAlarm(unsigned int intervalMin, ITimerListener* listener);
                static void cancel(unsigned int timerId);
 
index 53afe65..fb29fbd 100644 (file)
 
 using namespace ctx;
 
-struct SensorEvent {
-       SensorProxy* listener;
-       sensor_data_t* data;
-};
-
 SensorProxy::SensorProxy() :
        sensorHandle(-1),
        sensorType(UNKNOWN_SENSOR),
@@ -125,32 +120,5 @@ bool SensorProxy::isSupported(sensor_type_t type)
 
 void SensorProxy::__eventCb(sensor_t sensor, unsigned int eventType, sensor_data_t *eventData, void *cbData)
 {
-       SensorEvent* sensorEvent = new SensorEvent;
-       sensorEvent->listener = static_cast<SensorProxy*>(cbData);
-
-       if (sensorEvent->listener->sensorType == HUMAN_PEDOMETER_SENSOR) {
-               sensorEvent->data = static_cast<sensor_data_t*>(g_memdup(eventData, sizeof(sensor_pedometer_data_t)));
-       } else {
-               sensorEvent->data = static_cast<sensor_data_t*>(g_memdup(eventData, sizeof(sensor_data_t)));
-       }
-
-       if (!sensorEvent->data) {
-               _E_ALLOC;
-               delete sensorEvent;
-               return;
-       }
-
-       SensorTimer::addIdle(__threadSwitcher, sensorEvent);
-}
-
-gboolean SensorProxy::__threadSwitcher(gpointer data)
-{
-       SensorEvent* sensorEvent = static_cast<SensorEvent*>(data);
-
-       sensorEvent->listener->onEvent(sensorEvent->data);
-
-       g_free(sensorEvent->data);
-       delete sensorEvent;
-
-       return G_SOURCE_REMOVE;
+       static_cast<SensorProxy*>(cbData)->onEvent(eventData);
 }
index e2e4af5..7ae1c87 100644 (file)
@@ -52,7 +52,6 @@ namespace ctx {
 
        private:
                static void __eventCb(sensor_t sensor, unsigned int eventType, sensor_data_t *eventData, void *cbData);
-               static gboolean __threadSwitcher(gpointer data);
        };
 
 }