sachiel pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=ef360e16847f22ad84114657850e40d0aec91876

commit ef360e16847f22ad84114657850e40d0aec91876
Author: Mike Blumenkrantz <zm...@samsung.com>
Date:   Mon Feb 17 16:51:46 2014 -0500

    resize damage tiler on resize
    
    this fixes render races which occur when damages and resizes happen in 
quick succession
---
 src/bin/e_comp_object.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/src/bin/e_comp_object.c b/src/bin/e_comp_object.c
index 75e87a6..a04b6db 100644
--- a/src/bin/e_comp_object.c
+++ b/src/bin/e_comp_object.c
@@ -817,6 +817,12 @@ _e_comp_intercept_resize(void *data, Evas_Object *obj, int 
w, int h)
         //INF("CALLBACK: REQ(%dx%d) != CUR(%dx%d)", w - fw, h - fh, pw, ph);
         evas_object_smart_callback_call(obj, "client_resize", NULL);
         e_comp_object_frame_wh_adjust(obj, pw, ph, &w, &h);
+        if ((cw->w == w) && (cw->h == h))
+          {
+             /* going to be a noop resize which won't trigger smart resize */
+             RENDER_DEBUG("DAMAGE RESIZE(%p): %", cw->ec, cw->ec->client.w, 
cw->ec->client.h);
+             if (cw->updates) eina_tiler_area_size_set(cw->updates, 
cw->ec->client.w, cw->ec->client.h);
+          }
         evas_object_resize(obj, w, h);
      }
    else
@@ -1985,9 +1991,15 @@ _e_comp_smart_resize(Evas_Object *obj, int w, int h)
           evas_object_geometry_set(cw->input_obj, cw->x + cw->input_rect.x, 
cw->y + cw->input_rect.y, cw->input_rect.w, cw->input_rect.h);
         if (!first)
           {
+             RENDER_DEBUG("DAMAGE UNFULL: %p", cw->ec);
              cw->updates_full = 0;
              if (cw->updates) eina_tiler_clear(cw->updates);
           }
+        else
+          {
+             RENDER_DEBUG("DAMAGE RESIZE(%p): %dx%d", cw->ec, 
cw->ec->client.w, cw->ec->client.h);
+             if (cw->updates) eina_tiler_area_size_set(cw->updates, 
cw->ec->client.w, cw->ec->client.h);
+          }
      }
    else
      {

-- 


Reply via email to