evas: Fix rare issue with recursive proxy src invisible

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
This commit is contained in:
Jean-Philippe Andre 2016-07-04 16:06:04 +09:00
parent 3671dd64c6
commit 07ea964e9f
1 changed files with 7 additions and 0 deletions

View File

@ -1388,6 +1388,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) ||