diff --git a/src/lib/ecore_evas/ecore_evas_private.h b/src/lib/ecore_evas/ecore_evas_private.h index 9cd258ae39..6613970185 100644 --- a/src/lib/ecore_evas/ecore_evas_private.h +++ b/src/lib/ecore_evas/ecore_evas_private.h @@ -253,13 +253,24 @@ struct _Ecore_Evas double async_render_start; #endif + /* A flag to show if sync_draw_done is sent by gl or by ecore_evas. + Some GL drivers do buffer copy in a separate thread. We need to check + whether GL driver sends SYNC_DRAW_DONE message after buffer copy. + This is required to synchronize rendering and sync_draw_done message + sending. + + -1 : uninitialized + 0 : sync_draw_done is sent by ecore_evas + 1 : sync_draw_done is sent by gl + */ + char gl_sync_draw_done; + unsigned char ignore_events : 1; unsigned char manual_render : 1; unsigned char registered : 1; unsigned char no_comp_sync : 1; unsigned char semi_sync : 1; unsigned char deleted : 1; - int gl_sync_draw_done; unsigned char profile_supported : 1; unsigned char in_async_render : 1; unsigned char can_async_render : 1; diff --git a/src/modules/ecore_evas/engines/x/ecore_evas_x.c b/src/modules/ecore_evas/engines/x/ecore_evas_x.c index cfef9933b9..37957883c7 100644 --- a/src/modules/ecore_evas/engines/x/ecore_evas_x.c +++ b/src/modules/ecore_evas/engines/x/ecore_evas_x.c @@ -1433,10 +1433,6 @@ _ecore_evas_x_event_window_show(void *data EINA_UNUSED, int type EINA_UNUSED, vo 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. - */ if (ee->gl_sync_draw_done < 0) { if (getenv("ECORE_EVAS_GL_SYNC_DRAW_DONE"))