From ebb0093eb98fdd6f04e70fcfa618140012b2db89 Mon Sep 17 00:00:00 2001 From: Gwanglim Lee Date: Sat, 5 Feb 2011 21:56:29 +0900 Subject: [PATCH] [ecore_evas_x.c] apply ECORE_EVAS_GL_SYNC_DRAW_DONE env for the MALI DDK Change-Id: Ife0216beb7a017d769952930abeb956741a4169a --- debian/changelog | 9 +++++++++ src/lib/ecore_evas/ecore_evas_private.h | 3 ++- src/lib/ecore_evas/ecore_evas_x.c | 14 ++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index bb6fdca..00d7e6e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -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 Sat, 05 Feb 2011 17:29:55 +0900 + ecore (1.0.0.001+svn.56239slp2+build03) unstable; urgency=low * ee->no_comp_sync = 0 diff --git a/src/lib/ecore_evas/ecore_evas_private.h b/src/lib/ecore_evas/ecore_evas_private.h index 6344be5..38a4776 100644 --- a/src/lib/ecore_evas/ecore_evas_private.h +++ b/src/lib/ecore_evas/ecore_evas_private.h @@ -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 diff --git a/src/lib/ecore_evas/ecore_evas_x.c b/src/lib/ecore_evas/ecore_evas_x.c index befba5a..62669b2 100644 --- a/src/lib/ecore_evas/ecore_evas_x.c +++ b/src/lib/ecore_evas/ecore_evas_x.c @@ -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; -- 2.7.4