[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [E-devel] Evas GL engine patch



Just forgot to say that if you want to try to reproduce the bug, you
can run "etk_test --etk-engine=ecore_evas_gl_x11" to run the etk_test
app with the GL engine.

Simon


On Sun, 10 Dec 2006 12:37:20 +0100,
Simon TRENY <simon.treny@free.fr> wrote :

> Hi,
> 
> The GL engine of Evas has an annoying bug when you want to create
> several windows using this engine: when you create or resize a window,
> all the other windows already created are not redrawn correcly, only
> the last created/resized window has no problem. I've attached a
> shot that shows what happens when you create a new window while there
> is an existing window that already uses the GL engine. Please have a
> look at it if you want to understand the problem.
> 
> So, in this example, the "Etk Test Application" is created first,
> and when the "Entry" button is clicked, the "Etk Entry Test" window is
> created. You can see that the "Etk Test Application" is no longer
> rendered correctly. Actually, only the part of the window that is
> inside the red rectangle (added with the Gimp) is correctly refreshed,
> the other part of the window does not refresh anymore. You can also
> notice that the red rectangle has exactly the same size as the "Etk
> Entry Test" window.
> 
> In fact, the problem is that when you create/resize a window,
> _evas_gl_common_viewport_set() is called, and this function changes
> the GL viewport and the view matrices. The thing is, these changes
> affect all the windows, not only the created/resized window. A way to
> fix that would be to call _evas_gl_common_viewport_set() each time a
> window is rendered, before the rendering process begins (at the start
> of the function evas_render_updates_internal() for example). Only
> thing, I can't see a function that is called at the start of the
> rendering process in the engine API (something like pre_render()).
> 
> I've written a small patch that calls _evas_gl_common_viewport_set()
> in the eng_output_redraws_rect_add() method of the gl_x11 engine
> (because this method is called at the start of the rendering process)
> just as a proof that it could fix the bug, but this is definitely not
> the place to put this code. The patch is attached.
> 
> Please tell me what you think.
> 
> Cheers,
> Simon TRENY <MoOm>