From: Mu-Woong Lee Date: Mon, 26 Jun 2017 07:18:02 +0000 (+0900) Subject: Remove thread switching of sensor events X-Git-Tag: submit/tizen/20170703.044536^2~5 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F34%2F135734%2F1;p=platform%2Fcore%2Fcontext%2Fsensor-recorder.git Remove thread switching of sensor events 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 --- diff --git a/src/server/SensorRecorderService.cpp b/src/server/SensorRecorderService.cpp index bb1ae60..9846d00 100644 --- a/src/server/SensorRecorderService.cpp +++ b/src/server/SensorRecorderService.cpp @@ -61,7 +61,7 @@ bool SensorRecorderService::prepare() if (!SensorDatabase::open(util::getActiveUid())) return false; - SensorTimer::init(__serviceRunner->getMainContext()); + SensorTimer::init(); SensorProvider::init(); return true; diff --git a/src/server/SensorTimer.cpp b/src/server/SensorTimer.cpp index 2e83968..acf2bfa 100644 --- a/src/server/SensorTimer.cpp +++ b/src/server/SensorTimer.cpp @@ -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); diff --git a/src/server/SensorTimer.h b/src/server/SensorTimer.h index 3f258a3..752f86d 100644 --- a/src/server/SensorTimer.h +++ b/src/server/SensorTimer.h @@ -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); diff --git a/src/server/legacy/SensorProxy.cpp b/src/server/legacy/SensorProxy.cpp index 53afe65..fb29fbd 100644 --- a/src/server/legacy/SensorProxy.cpp +++ b/src/server/legacy/SensorProxy.cpp @@ -23,11 +23,6 @@ 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(cbData); - - if (sensorEvent->listener->sensorType == HUMAN_PEDOMETER_SENSOR) { - sensorEvent->data = static_cast(g_memdup(eventData, sizeof(sensor_pedometer_data_t))); - } else { - sensorEvent->data = static_cast(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(data); - - sensorEvent->listener->onEvent(sensorEvent->data); - - g_free(sensorEvent->data); - delete sensorEvent; - - return G_SOURCE_REMOVE; + static_cast(cbData)->onEvent(eventData); } diff --git a/src/server/legacy/SensorProxy.h b/src/server/legacy/SensorProxy.h index e2e4af5..7ae1c87 100644 --- a/src/server/legacy/SensorProxy.h +++ b/src/server/legacy/SensorProxy.h @@ -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); }; }