diff options
author | Chris Michael <cp.michael@samsung.com> | 2014-08-18 16:11:15 -0400 |
---|---|---|
committer | Chris Michael <cp.michael@samsung.com> | 2014-08-18 16:11:15 -0400 |
commit | b44a068b4b8fe55d700274655b3a6f003e47beec (patch) | |
tree | 502f8eb6f32e449da7273e2a07e08368f709b790 | |
parent | 958a14e416e3624f7310d9f5dd2543c192fd4a92 (diff) | |
download | efl-b44a068b4b8fe55d700274655b3a6f003e47beec.tar.gz |
evas-wayland-egl: Fix wayland egl engine not rendering
Reset the Outbuf's Engine information pointer.
We also don't need to do an eng_window_free during reconfigure because the
software_generic_update function will free it anyway.
We should also re-setup the tilebuffer during eng_setup.
Fix gl_context resize to work even if there is no wl_egl window setup
yet.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
-rw-r--r-- | src/modules/evas/engines/wayland_egl/evas_engine.c | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/src/modules/evas/engines/wayland_egl/evas_engine.c b/src/modules/evas/engines/wayland_egl/evas_engine.c index ef0471b204..59f72408b2 100644 --- a/src/modules/evas/engines/wayland_egl/evas_engine.c +++ b/src/modules/evas/engines/wayland_egl/evas_engine.c @@ -666,6 +666,7 @@ eng_setup(Evas *evas, void *info) ob = eng_get_ob(re); if ((ob) && (_re_wincheck(ob))) { + ob->info = inf; if ((ob->info->info.display != ob->disp) || (ob->info->info.surface != ob->surface) || (ob->info->info.win != ob->win) || @@ -678,9 +679,6 @@ eng_setup(Evas *evas, void *info) ob = eng_window_new(evas, inf, epd->output.w, epd->output.h, swap_mode); if (!ob) goto ob_err; - - eng_window_free(eng_get_ob(re)); - re->generic.software.ob = NULL; eng_window_use(ob); @@ -694,13 +692,6 @@ eng_setup(Evas *evas, void *info) { eng_outbuf_reconfigure(ob, epd->output.w, epd->output.h, ob->info->info.rotation, 0); - if (re->generic.software.tb) - evas_common_tilebuf_free(re->generic.software.tb); - re->generic.software.tb = - evas_common_tilebuf_new(epd->output.w, epd->output.h); - if (re->generic.software.tb) - evas_common_tilebuf_set_tile_size(re->generic.software.tb, - TILESIZE, TILESIZE); } } } @@ -718,7 +709,14 @@ eng_setup(Evas *evas, void *info) } if (re->generic.software.tb) + evas_common_tilebuf_free(re->generic.software.tb); + re->generic.software.tb = + evas_common_tilebuf_new(epd->output.w, epd->output.h); + + if (re->generic.software.tb) { + evas_common_tilebuf_set_tile_size(re->generic.software.tb, + TILESIZE, TILESIZE); evas_render_engine_software_generic_tile_strict_set (&re->generic.software, EINA_TRUE); } @@ -816,10 +814,10 @@ eng_output_resize(void *data, int w, int h) wl_egl_window_resize(ob->win, h, w, dx, dy); else wl_egl_window_resize(ob->win, w, h, dx, dy); - - glsym_evas_gl_common_context_resize(ob->gl_context, w, h, ob->rot); } + glsym_evas_gl_common_context_resize(ob->gl_context, w, h, ob->rot); + if (re->generic.software.tb) evas_common_tilebuf_free(re->generic.software.tb); |