canvas proxy: fix a missing case that proxy not updated properly.
authorHermet Park <chuneon.park@samsung.com>
Thu, 12 Mar 2020 11:39:12 +0000 (20:39 +0900)
committerJongmin Lee <jm105.lee@samsung.com>
Fri, 13 Mar 2020 00:18:32 +0000 (09:18 +0900)
Very complex to say, if its source object is remained as chaged state in pending object
in rendering stage, the proxy object could miss to update in the next frame because
source object won't be changed again in evas_object_change().

Thus we need to double-check if the proxy missed update or not just in the rendering.
Not clean but this is a compromised solution to not be burden for finding/checking proxies
in object trees every time.

@fix

src/lib/evas/canvas/evas_render.c

index e9a1b33..b7aab1c 100644 (file)
@@ -384,6 +384,9 @@ _evas_proxy_redraw_set(Evas_Public_Data *e, Evas_Object_Protected_Data *obj,
 
         if (render)
           {
+             /* Not good... but make it sure if the proxies have missed at update
+                if its sources are remained changed as pending objects in the prev frame. */
+             evas_object_change(eo_proxy, proxy);
              proxy->func->render_pre(eo_proxy, proxy, proxy->private_data);
              _evas_render_prev_cur_clip_cache_add(e, proxy);
           }