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;

-- 


Reply via email to