raster pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=b2ca7a96dcb49aec273d5655aee1140ea80464b3

commit b2ca7a96dcb49aec273d5655aee1140ea80464b3
Author: Carsten Haitzler (Rasterman) <[email protected]>
Date:   Fri Apr 28 11:24:48 2017 +0900

    thread fence code - move elsewhere in file to avoid conflicts
---
 src/lib/evas/common/evas_thread_render.c   | 82 +++++++++++++++---------------
 src/lib/evas/include/evas_common_private.h |  3 +-
 2 files changed, 43 insertions(+), 42 deletions(-)

diff --git a/src/lib/evas/common/evas_thread_render.c 
b/src/lib/evas/common/evas_thread_render.c
index 2104042..bbde81a 100644
--- a/src/lib/evas/common/evas_thread_render.c
+++ b/src/lib/evas/common/evas_thread_render.c
@@ -18,6 +18,47 @@ static int init_count = 0;
 #define SHUTDOWN_TIMEOUT_CHECK (1)
 #define SHUTDOWN_TIMEOUT (3000)
 
+struct fence_stuff {
+   Eina_Lock lock;
+   Eina_Condition cond;
+};
+
+static void
+_evas_thread_queue_fence(void *data)
+{
+   struct fence_stuff *f;
+
+   f = data;
+
+   eina_lock_take(&f->lock);
+   eina_condition_signal(&f->cond);
+   eina_lock_release(&f->lock);
+}
+
+EAPI void
+evas_thread_queue_wait(void)
+{
+   struct fence_stuff f;
+
+   /* No shortcuts here - if the thread queue looks empty it could just mean
+    * it's being processed.  Need a round trip.
+    */
+   if (!eina_lock_new(&f.lock)) return;
+   if (!eina_condition_new(&f.cond, &f.lock))
+     {
+        eina_lock_free(&f.lock);
+        return;
+     }
+
+   eina_lock_take(&f.lock);
+   evas_thread_queue_flush(_evas_thread_queue_fence, &f);
+   eina_condition_wait(&f.cond);
+   eina_lock_release(&f.lock);
+
+   eina_lock_free(&f.lock);
+   eina_condition_free(&f.cond);
+}
+
 static Eina_Bool
 _shutdown_timeout(double *time, int mode, int timeout_ms)
 {
@@ -72,47 +113,6 @@ evas_thread_queue_flush(Evas_Thread_Command_Cb cb, void 
*data)
    evas_thread_queue_append(cb, data, EINA_TRUE);
 }
 
-struct fence_stuff {
-   Eina_Lock lock;
-   Eina_Condition cond;
-};
-
-static void
-_evas_thread_queue_fence(void *data)
-{
-   struct fence_stuff *f;
-
-   f = data;
-
-   eina_lock_take(&f->lock);
-   eina_condition_signal(&f->cond);
-   eina_lock_release(&f->lock);
-}
-
-EAPI void
-evas_thread_queue_wait(void)
-{
-   struct fence_stuff f;
-
-   /* No shortcuts here - if the thread queue looks empty it could just mean
-    * it's being processed.  Need a round trip.
-    */
-   if (!eina_lock_new(&f.lock)) return;
-   if (!eina_condition_new(&f.cond, &f.lock))
-     {
-        eina_lock_free(&f.lock);
-        return;
-     }
-
-   eina_lock_take(&f.lock);
-   evas_thread_queue_flush(_evas_thread_queue_fence, &f);
-   eina_condition_wait(&f.cond);
-   eina_lock_release(&f.lock);
-
-   eina_lock_free(&f.lock);
-   eina_condition_free(&f.cond);
-}
-
 static void*
 evas_thread_worker_func(void *data EINA_UNUSED, Eina_Thread thread EINA_UNUSED)
 {
diff --git a/src/lib/evas/include/evas_common_private.h 
b/src/lib/evas/include/evas_common_private.h
index ceb1095..6a7d57c 100644
--- a/src/lib/evas/include/evas_common_private.h
+++ b/src/lib/evas/include/evas_common_private.h
@@ -1320,6 +1320,8 @@ Tilebuf_Rect *evas_common_regionbuf_rects_get (Regionbuf 
*rb);
 
 void              evas_font_dir_cache_free(void);
 
+EAPI void         evas_thread_queue_wait(void);
+
 EAPI int          evas_async_events_process_blocking(void);
 void             evas_render_rendering_wait(Evas_Public_Data *evas);
 void              evas_all_sync(void);
@@ -1328,7 +1330,6 @@ int               evas_thread_init(void);
 int               evas_thread_shutdown(void);
 EAPI void         evas_thread_cmd_enqueue(Evas_Thread_Command_Cb cb, void 
*data);
 EAPI void         evas_thread_queue_flush(Evas_Thread_Command_Cb cb, void 
*data);
-EAPI void         evas_thread_queue_wait(void);
 
 typedef enum _Evas_Render_Mode
 {

-- 


Reply via email to