evas: Fix rare issue with recursive proxy src invisible 14/81414/2
authorJean-Philippe Andre <jp.andre@samsung.com>
Mon, 4 Jul 2016 07:06:04 +0000 (16:06 +0900)
committerHermet Park <chuneon.park@samsung.com>
Thu, 1 Sep 2016 09:44:11 +0000 (02:44 -0700)
Scenario:
  smart {
    text
    proxy -> text, src_invisible
  }
  proxy -> smart

What we should see:
  smart {
    (blank)
    proxy -> text
  }
  proxy -> {
    (blank)
    proxy -> text
  }

What we saw:
  smart {
    (blank)
    proxy -> text
  }
  proxy -> {
    text
    proxy -> text
  }

Solution:
Check in evas render, when we're inside a proxy render, and the
proxy src_invisible flag is on (evas_object_source_visible_set(0),
that we're rendering the object itself to its proxy surface. If not,
it means we're rendering another proxy surface, ie. a parent smart
object's proxy surface.

Still loving evas render.

Fixes T4006.

@fix

Change-Id: I18b7e7140bc5f2a6dc2e6a715015ef6e277a43b8
Signed-off-by: Awadhesh Singh <awadhesh1.s@samsung.com>
src/lib/evas/canvas/evas_render.c

index 710189c3bedbf8d83e4079c2c016a01eb9cf25d8..bd90d3b5668f57e4484e5eddcb7561d256d1864e 100755 (executable)
@@ -1386,6 +1386,13 @@ evas_render_mapped(Evas_Public_Data *evas, Evas_Object *eo_obj,
                        RD(level, "}\n");
                        return clean_them;
                     }
+                  else if (proxy_render_data && (surface != obj->proxy->surface) &&
+                           obj->proxy->src_invisible)
+                    {
+                       RD(level, "  src_invisible + not proxy surface (recursive proxies)\n");
+                       RD(level, "}\n");
+                       return clean_them;
+                    }
                }
           }
         else if (!evas_object_is_proxy_visible(eo_obj, obj) ||