ecore: prevent one last spurious wakeup.
authorcedric <cedric@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Tue, 27 Sep 2011 06:16:11 +0000 (06:16 +0000)
committercedric <cedric@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Tue, 27 Sep 2011 06:16:11 +0000 (06:16 +0000)
git-svn-id: http://svn.enlightenment.org/svn/e/trunk/ecore@63619 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/ecore/ecore.c

index 2560d91..b9ab179 100644 (file)
@@ -406,7 +406,7 @@ ecore_thread_main_loop_end(void)
    eina_lock_release(&_thread_mutex);
 
    eina_lock_take(&_thread_feedback_mutex);
-   while (current_id == _thread_id)
+   while (current_id == _thread_id && _thread_id != -1)
      eina_condition_wait(&_thread_feedback_cond);
    eina_lock_release(&_thread_feedback_mutex);
 
@@ -686,11 +686,12 @@ _thread_callback(void *data __UNUSED__,
               eina_condition_wait(&_thread_cond);
              eina_lock_release(&_thread_mutex);
 
-            _thread_id = -1;
-
              eina_main_loop_define();
 
             eina_lock_take(&_thread_feedback_mutex);
+
+            _thread_id = -1;
+
             eina_condition_broadcast(&_thread_feedback_cond);
             eina_lock_release(&_thread_feedback_mutex);