I just tested your sample but it works fine here. what efl version did u use? I'm using the latest git source. ------------------------------------ -Regards, Hermet-
-----Original Message----- From: "Rafael Antognolli"<antogno...@gmail.com> To: "Enlightenment developer list"<enlightenment-devel@lists.sourceforge.net>; Cc: Sent: 2013-05-11 (토) 05:47:58 Subject: [E-devel] Proxy render doesn't work on GL Guys, there's a corner case for the proxy render that won't work on GL engines. The test is attached and is very simple. Basically, it creates an Edje object, with a black rectangle and a green rectangle, and this green rectangle has a map applied to it. This Edje object is moved almost entirely off the screen, and a proxy is created to draw this Edje object, but only the green rectangle is seen (not the black one). If the order of the rectangles inside the .edc is changed (the mapped one is created first), things work correctly. If the Edje object starts all visible, it also works. The important part is: I really think that when the surface for the mapped object is created, it is making something wrong with the proxy surface, and resetting its content. After some investigation, I noticed the following scenario, when evas_render is called: 1) proxy object creates a surface for rendering the proxy content; 2) the black rectangle is rendered on this surface; 3) the green rectangle (mapped) creates a new surface for rendering itself; <-- I think this is wrong somehow 4) the green rectangle surface is drawn over the proxy surface; 5) the proxy surface is rendered on the screen. Of course there are many other things involved, but I found that these are the most important ones affecting things. If we change the order of things, when the green rectangle surface is created, it can reset the proxy surface content but the black rectangle will be drawn only after that, so everything looks good. If the Edje starts inside the canvas geometry, then the green rectangle surface is created and used before the proxy surface is created, so everything looks ok too. In other words, I think that the following behavior works ok: 1) surface is created 2) surface content is rendered 3) surface is drawn somewhere 4) new surface is created 5) new surface content is rendered 6) new surface is drawn somewhere But the following one does not work: 1) surface is created 2) surface content is rendered 3) new surface is created 4) new surface content is rendered 5) new surface is rendered on the previous one 6) surface is drawn somewhere On the last scheme, even if I remove 4) and 5), just the fact of creating the new surface makes the content of the first one vanish. Please take a look at _pool_tex_render_new() and related functions, the bug may be somewhere there. Thanks, -- Rafael Antognolli ------------------------------------------------------------------------------ Learn Graph Databases - Download FREE O'Reilly Book "Graph Databases" is the definitive new guide to graph databases and their applications. This 200-page book is written by three acclaimed leaders in the field. The early access version is available now. Download your free book today! http://p.sf.net/sfu/neotech_d2d_may _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel ------------------------------------------------------------------------------ AlienVault Unified Security Management (USM) platform delivers complete security visibility with the essential security capabilities. Easily and efficiently configure, manage, and operate all of your security controls from a single console and one unified framework. Download a free trial. http://p.sf.net/sfu/alienvault_d2d _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel