raster pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=f05686c051424e53a28cab064601676d94efbe78
commit f05686c051424e53a28cab064601676d94efbe78 Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com> Date: Tue Oct 6 14:37:10 2015 +0900 evas engines - fix partial swap to not skip swaps if full mode used @fix --- src/modules/evas/engines/gl_x11/evas_x_main.c | 3 ++- src/modules/evas/engines/software_generic/evas_engine.c | 4 +++- src/modules/evas/engines/wayland_egl/evas_wl_main.c | 3 ++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/modules/evas/engines/gl_x11/evas_x_main.c b/src/modules/evas/engines/gl_x11/evas_x_main.c index 78aab8f..75db343 100644 --- a/src/modules/evas/engines/gl_x11/evas_x_main.c +++ b/src/modules/evas/engines/gl_x11/evas_x_main.c @@ -1556,7 +1556,8 @@ eng_outbuf_flush(Outbuf *ob, Tilebuf_Rect *rects, Evas_Render_Mode render_mode) { ob->info->callback.pre_swap(ob->info->callback.data, ob->evas); } - if ((glsym_eglSwapBuffersWithDamage) && (ob->swap_mode != MODE_FULL)) + if ((glsym_eglSwapBuffersWithDamage) && (rects) && + (ob->swap_mode != MODE_FULL)) { EGLint num = 0, *result = NULL, i = 0; Tilebuf_Rect *r; diff --git a/src/modules/evas/engines/software_generic/evas_engine.c b/src/modules/evas/engines/software_generic/evas_engine.c index 769eadc..0fa92f1 100644 --- a/src/modules/evas/engines/software_generic/evas_engine.c +++ b/src/modules/evas/engines/software_generic/evas_engine.c @@ -3594,7 +3594,9 @@ eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, i surface = re->outbuf_new_region_for_update(re->ob, *x, *y, *w, *h, cx, cy, cw, ch); - if ((!re->cur_rect) || (!surface)) + if ((re->swap_mode == MODE_AUTO) || + (re->swap_mode == MODE_FULL) || + (!surface)) { evas_common_tilebuf_free_render_rects(re->rects); re->rects = NULL; diff --git a/src/modules/evas/engines/wayland_egl/evas_wl_main.c b/src/modules/evas/engines/wayland_egl/evas_wl_main.c index 1c2730f..6b8322f 100644 --- a/src/modules/evas/engines/wayland_egl/evas_wl_main.c +++ b/src/modules/evas/engines/wayland_egl/evas_wl_main.c @@ -508,7 +508,8 @@ eng_outbuf_flush(Outbuf *ob, Tilebuf_Rect *rects, Evas_Render_Mode render_mode) if (ob->info->callback.pre_swap) ob->info->callback.pre_swap(ob->info->callback.data, ob->evas); - if ((glsym_eglSwapBuffersWithDamage) && (ob->swap_mode != MODE_FULL)) + if ((glsym_eglSwapBuffersWithDamage) && (rects) && + (ob->swap_mode != MODE_FULL)) { EGLint num = 0, *result = NULL, i = 0; Tilebuf_Rect *r; --