devilhorns pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=47a2602af7554c8876ad078bc49d029a292aa715
commit 47a2602af7554c8876ad078bc49d029a292aa715 Author: Chris Michael <cp.mich...@samsung.com> Date: Wed Jun 3 14:30:10 2015 -0400 evas-gl-drm: Readd support for pre_swap/post_swap callbacks Summary: The pre/post swap callbacks were forgotten when doing the engine rewrite, so readd them @fix Signed-off-by: Chris Michael <cp.mich...@samsung.com> --- src/modules/evas/engines/gl_drm/Evas_Engine_GL_Drm.h | 7 +++++++ src/modules/evas/engines/gl_drm/evas_engine.c | 6 ++++++ src/modules/evas/engines/gl_drm/evas_engine.h | 2 ++ src/modules/evas/engines/gl_drm/evas_outbuf.c | 10 +++++----- 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/modules/evas/engines/gl_drm/Evas_Engine_GL_Drm.h b/src/modules/evas/engines/gl_drm/Evas_Engine_GL_Drm.h index 6cb7923..17fe8cb 100644 --- a/src/modules/evas/engines/gl_drm/Evas_Engine_GL_Drm.h +++ b/src/modules/evas/engines/gl_drm/Evas_Engine_GL_Drm.h @@ -29,6 +29,13 @@ struct _Evas_Engine_Info_GL_Drm unsigned char swap_mode : 4; } info; + struct + { + void (*pre_swap)(void *data, Evas *evas); + void (*post_swap)(void *data, Evas *evas); + void *data; + } callback; + /* non-blocking or blocking mode */ Evas_Engine_Render_Mode render_mode; }; diff --git a/src/modules/evas/engines/gl_drm/evas_engine.c b/src/modules/evas/engines/gl_drm/evas_engine.c index 280035d..835417c 100644 --- a/src/modules/evas/engines/gl_drm/evas_engine.c +++ b/src/modules/evas/engines/gl_drm/evas_engine.c @@ -794,6 +794,8 @@ eng_setup(Evas *evas, void *in) return 0; } + ob->evas = evas; + if (!evas_render_engine_gl_generic_init(&re->generic, ob, evas_outbuf_buffer_state_get, evas_outbuf_rot_get, @@ -861,6 +863,8 @@ eng_setup(Evas *evas, void *in) evas_outbuf_use(ob); if (ob) { + ob->evas = evas; + evas_render_engine_software_generic_update(&re->generic.software, ob, epd->output.w, epd->output.h); @@ -889,6 +893,8 @@ eng_setup(Evas *evas, void *in) evas_outbuf_use(ob); if (ob) { + ob->evas = evas; + evas_render_engine_software_generic_update(&re->generic.software, ob, epd->output.w, epd->output.h); diff --git a/src/modules/evas/engines/gl_drm/evas_engine.h b/src/modules/evas/engines/gl_drm/evas_engine.h index b00cf38..3aa25e4 100644 --- a/src/modules/evas/engines/gl_drm/evas_engine.h +++ b/src/modules/evas/engines/gl_drm/evas_engine.h @@ -66,6 +66,8 @@ struct _Outbuf Evas_Engine_Info_GL_Drm *info; Evas_Engine_GL_Context *gl_context; + Evas *evas; // used for pre_swap, post_swap + int w, h; unsigned int rotation, depth; Render_Engine_Swap_Mode swap_mode; diff --git a/src/modules/evas/engines/gl_drm/evas_outbuf.c b/src/modules/evas/engines/gl_drm/evas_outbuf.c index 124a356..4365efe 100644 --- a/src/modules/evas/engines/gl_drm/evas_outbuf.c +++ b/src/modules/evas/engines/gl_drm/evas_outbuf.c @@ -214,7 +214,7 @@ evas_outbuf_new(Evas_Engine_Info_GL_Drm *info, int w, int h, Render_Engine_Swap_ ob->depth = info->info.depth; ob->rotation = info->info.rotation; ob->destination_alpha = info->info.destination_alpha; - ob->vsync = info->info.vsync; + /* ob->vsync = info->info.vsync; */ ob->gbm = info->info.gbm; ob->surface = info->info.surface; ob->swap_mode = swap_mode; @@ -528,8 +528,8 @@ evas_outbuf_flush(Outbuf *ob, Tilebuf_Rect *rects EINA_UNUSED, Evas_Render_Mode ob->vsync = 1; } - /* if (ob->info->callback.pre_swap) */ - /* ob->info->callback.pre_swap(ob->info->callback.data, ob->evas); */ + if (ob->info->callback.pre_swap) + ob->info->callback.pre_swap(ob->info->callback.data, ob->evas); // TODO: Check eglSwapBuffersWithDamage for gl_drm and apply #if 0 @@ -592,8 +592,8 @@ evas_outbuf_flush(Outbuf *ob, Tilebuf_Rect *rects EINA_UNUSED, Evas_Render_Mode #endif eglSwapBuffers(ob->egl.disp, ob->egl.surface[0]); - /* if (ob->info->callback.post_swap) */ - /* ob->info->callback.post_swap(ob->info->callback.data, ob->evas); */ + if (ob->info->callback.post_swap) + ob->info->callback.post_swap(ob->info->callback.data, ob->evas); //Flush GL Surface data to Framebuffer _evas_outbuf_buffer_swap(ob, NULL, 0); --