From: Ji-hoon Lee Date: Fri, 17 Jul 2020 12:29:55 +0000 (+0900) Subject: Replace ecore_thread_main_loop_* functions with alternatives X-Git-Tag: submit/tizen/20200803.021302^2~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=eb0c49d73f42ef9d2adbad128bf0744b8807ba17;p=platform%2Fcore%2Fuifw%2Fmulti-assistant-service.git Replace ecore_thread_main_loop_* functions with alternatives Change-Id: Ied3b35f41bb7c9f8bc74bc24d42e5a92e3b4b551 --- diff --git a/plugins/wakeup-manager/inc/wakeup_policy_default.h b/plugins/wakeup-manager/inc/wakeup_policy_default.h index d4b36b7..914c539 100644 --- a/plugins/wakeup-manager/inc/wakeup_policy_default.h +++ b/plugins/wakeup-manager/inc/wakeup_policy_default.h @@ -40,12 +40,18 @@ public: bool valid() override; void set_assistant_priority(string appid, int priority); - void set_delay(float seconds); void wakeup_candidate(mas_wakeup_event_info wakeup_info) override; void select_candidate(mas_wakeup_event_info wakeup_info) override; void timer_expired(); + + void set_delay(float seconds); + float get_delay(); + + void set_timer(Ecore_Timer* timer); + Ecore_Timer* get_timer(); + private: typedef struct { string appid; diff --git a/plugins/wakeup-manager/src/wakeup_policy_default.cpp b/plugins/wakeup-manager/src/wakeup_policy_default.cpp index e07374c..45b5caa 100644 --- a/plugins/wakeup-manager/src/wakeup_policy_default.cpp +++ b/plugins/wakeup-manager/src/wakeup_policy_default.cpp @@ -45,12 +45,28 @@ void CWakeupPolicyDefault::set_delay(float seconds) mDelaySeconds = seconds; } +float CWakeupPolicyDefault::get_delay() +{ + return mDelaySeconds; +} + +void CWakeupPolicyDefault::set_timer(Ecore_Timer* timer) +{ + mTimer = timer; +} + +Ecore_Timer* CWakeupPolicyDefault::get_timer() +{ + return mTimer; +} + static Eina_Bool timer_func(void *data) { LOGD("[ENTER]"); if (data) { CWakeupPolicyDefault *policy = static_cast(data); policy->timer_expired(); + policy->set_timer(nullptr); } return ECORE_CALLBACK_CANCEL; } @@ -59,11 +75,13 @@ void CWakeupPolicyDefault::wakeup_candidate(mas_wakeup_event_info wakeup_info) { mWakeupInfos.push_back(wakeup_info); if (nullptr == mTimer) { - LOGD("Begin Ecore Thread Main Loop"); - ecore_thread_main_loop_begin(); - mTimer = ecore_timer_add(mDelaySeconds, timer_func, this); - LOGD("End Ecore Thread Main Loop"); - ecore_thread_main_loop_end(); + ecore_main_loop_thread_safe_call_async([](void* data) { + CWakeupPolicyDefault* policy = static_cast(data); + if (!policy) return; + + Ecore_Timer* timer = ecore_timer_add(policy->get_delay(), timer_func, data); + policy->set_timer(timer); + }, this); } }