devilhorns pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=8a516c4d4fabf2e0f04acbe3f79a09c3eca174a3
commit 8a516c4d4fabf2e0f04acbe3f79a09c3eca174a3 Author: Chris Michael <[email protected]> Date: Tue Sep 19 11:51:30 2017 -0400 evas-drm: Override eng_output_resize function This patch provides an override in the evas drm engine for the output resize function. We override this function so that we can reconfigure the output buffer. ref T5999 Signed-off-by: Chris Michael <[email protected]> --- src/modules/evas/engines/drm/evas_engine.c | 29 ++++++++++++++++++++++++++--- src/modules/evas/engines/drm/evas_engine.h | 2 ++ 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/modules/evas/engines/drm/evas_engine.c b/src/modules/evas/engines/drm/evas_engine.c index 5cbd5e14ba..c4dbe48bee 100644 --- a/src/modules/evas/engines/drm/evas_engine.c +++ b/src/modules/evas/engines/drm/evas_engine.c @@ -49,6 +49,10 @@ eng_output_setup(void *engine, void *einfo, unsigned int w, unsigned int h) ob->w, ob->h)) goto init_err; + evas_render_engine_software_generic_merge_mode_set(&re->generic); + + re->generic.ob->info = einfo; + return re; init_err: @@ -66,15 +70,33 @@ eng_output_info_setup(void *info) einfo->render_mode = EVAS_RENDER_MODE_BLOCKING; } -static int -eng_output_update(void *engine EINA_UNUSED, void *data, void *einfo, unsigned int w, unsigned int h) +static void +eng_output_resize(void *engine EINA_UNUSED, void *data, int w, int h) { - Evas_Engine_Info_Drm *info = einfo; Render_Engine *re = data; + Evas_Engine_Info_Drm *info; + + info = re->generic.ob->info; + if (!info) return; _outbuf_reconfigure(re->generic.ob, w, h, info->info.rotation, info->info.depth); + evas_common_tilebuf_free(re->generic.tb); + if ((re->generic.tb = evas_common_tilebuf_new(w, h))) + evas_common_tilebuf_set_tile_size(re->generic.tb, TILESIZE, TILESIZE); + + re->generic.w = w; + re->generic.h = h; +} + +static int +eng_output_update(void *engine, void *data, void *einfo EINA_UNUSED, unsigned int w, unsigned int h) +{ + Render_Engine *re = data; + + eng_output_resize(engine, data, w, h); + evas_render_engine_software_generic_update(&re->generic, re->generic.ob, w, h); @@ -227,6 +249,7 @@ module_open(Evas_Module *em) ORD(output_setup); ORD(output_update); ORD(output_free); + ORD(output_resize); ORD(image_plane_assign); ORD(image_plane_release); diff --git a/src/modules/evas/engines/drm/evas_engine.h b/src/modules/evas/engines/drm/evas_engine.h index 9891945781..5faf32b8f1 100644 --- a/src/modules/evas/engines/drm/evas_engine.h +++ b/src/modules/evas/engines/drm/evas_engine.h @@ -56,6 +56,8 @@ struct _Outbuf int w, h, bpp, rotation; unsigned int depth, format; + Evas_Engine_Info_Drm *info; + struct { int num; --
