Replace ecore_thread_main_loop_* functions with alternatives 80/239180/1
authorJi-hoon Lee <dalton.lee@samsung.com>
Fri, 17 Jul 2020 12:29:55 +0000 (21:29 +0900)
committerJi-hoon Lee <dalton.lee@samsung.com>
Wed, 22 Jul 2020 07:24:44 +0000 (16:24 +0900)
Change-Id: Ied3b35f41bb7c9f8bc74bc24d42e5a92e3b4b551

plugins/wakeup-manager/inc/wakeup_policy_default.h
plugins/wakeup-manager/src/wakeup_policy_default.cpp

index d4b36b7..914c539 100644 (file)
@@ -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;
index e07374c..45b5caa 100644 (file)
@@ -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<CWakeupPolicyDefault*>(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<CWakeupPolicyDefault*>(data);
+                       if (!policy) return;
+
+                       Ecore_Timer* timer = ecore_timer_add(policy->get_delay(), timer_func, data);
+                       policy->set_timer(timer);
+               }, this);
        }
 }