[ecore_evas_x.c] apply ECORE_EVAS_GL_SYNC_DRAW_DONE env for the MALI DDK
authorGwanglim Lee <gl77.lee@samsung.com>
Sat, 5 Feb 2011 12:56:29 +0000 (21:56 +0900)
committerGwanglim Lee <gl77.lee@samsung.com>
Sat, 5 Feb 2011 12:56:29 +0000 (21:56 +0900)
Change-Id: Ife0216beb7a017d769952930abeb956741a4169a

debian/changelog
src/lib/ecore_evas/ecore_evas_private.h
src/lib/ecore_evas/ecore_evas_x.c

index bb6fdca..00d7e6e 100644 (file)
@@ -1,3 +1,12 @@
+ecore (1.0.0.001+svn.56239slp2+build04) unstable; urgency=low
+
+  * [ecore_evas_x.c] apply ECORE_EVAS_GL_SYNC_DRAW_DONE env.
+     + check whether GL driver sends SYNC_DRAW_DONE msg after buffer copy.
+  * Git: 165.213.180.234:slp/pkgs/e/ecore
+  * Tag: ecore_1.0.0.001+svn.56239slp2+build04
+
+ -- Gwanglim Lee <gl77.lee@samsung.com>  Sat, 05 Feb 2011 17:29:55 +0900
+
 ecore (1.0.0.001+svn.56239slp2+build03) unstable; urgency=low
 
   * ee->no_comp_sync = 0 
index 6344be5..38a4776 100644 (file)
@@ -349,8 +349,9 @@ struct _Ecore_Evas
 
    unsigned char ignore_events : 1;
    unsigned char manual_render : 1;
-   unsigned char registered : 1;
+   unsigned char registered    : 1;
    unsigned char no_comp_sync  : 1;
+   int           gl_sync_draw_done; // added by gl77.lee
 };
 
 #ifdef BUILD_ECORE_EVAS_X11
index befba5a..62669b2 100644 (file)
@@ -1057,6 +1057,17 @@ _ecore_evas_x_event_window_show(void *data __UNUSED__, int type __UNUSED__, void
    ee = ecore_event_window_match(e->win);
    if (!ee) return ECORE_CALLBACK_PASS_ON; /* pass on event */
    if (e->win != ee->prop.window) return ECORE_CALLBACK_PASS_ON;
+   /* some GL drivers are doing buffer copy in a separate thread.
+    * we need to check whether GL driver sends SYNC_DRAW_DONE msg afger copying
+    * that are required in order to exactly render. - added by gl77.lee
+    */
+   if (ee->gl_sync_draw_done < 0)
+     {
+        if (getenv("ECORE_EVAS_GL_SYNC_DRAW_DONE"))
+           ee->gl_sync_draw_done = atoi(getenv("ECORE_EVAS_GL_SYNC_DRAW_DONE"));
+        else
+           ee->gl_sync_draw_done = 0;
+     }
    if (first_map_bug < 0)
      {
         if (getenv("ECORE_EVAS_GL_FIRST_MAP_BUG"))
@@ -3068,6 +3079,7 @@ _ecore_evas_x_flush_post(void *data, Evas *e __UNUSED__, void *event_info __UNUS
 
    if (ee->no_comp_sync) return;
    if (!_ecore_evas_app_comp_sync) return;
+   if (ee->gl_sync_draw_done) return; // added by gl77.lee
    if (ee->engine.x.sync_counter)
      {
         if (ee->engine.x.sync_began)
@@ -3502,6 +3514,8 @@ ecore_evas_gl_x11_options_new(const char *disp_name, Ecore_X_Window parent,
 
    ECORE_MAGIC_SET(ee, ECORE_MAGIC_EVAS);
 
+   ee->gl_sync_draw_done = -1; // added by gl77.lee
+
    _ecore_evas_x_init();
 
    ee->engine.func = (Ecore_Evas_Engine_Func *)&_ecore_x_engine_func;