gnash-commit
[Top][All Lists]
Advanced

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

Re: [Gnash-commit] gnash ChangeLog backend/render_handler.h backen...


From: Udo Giacomozzi
Subject: Re: [Gnash-commit] gnash ChangeLog backend/render_handler.h backen...
Date: Mon, 23 Oct 2006 20:03:05 +0200

Hello Bastiaan,

Monday, October 23, 2006, 12:53:28 AM, you wrote:
BJ> Log message:
BJ>                 * backend/render_handler.h: Add get_invalidated_region().
BJ>                 * backend/render_handler_agg.cpp: Implement 
get_invalidated_region().
BJ>                 * gui/{gtk.cpp, gtk_glue_agg.cpp, gtk_glue_agg.h, gtksup.h, 
gui.cpp,
BJ>                 gui.h}: Remove duplicate implementation of 
set_invalidated_region();
BJ>                 instead, call get_invalidate_region() from the relevant 
glue. Call
BJ>                 render_handler::set_invalidated_region() directly instead 
of the Gui
BJ>                 implementation.
BJ>                 * gui/sdl_agg_glue{.cpp, .h}: Implement region clipping 
based
BJ>                 rendering.

Wait a minute, I had a reason *not* to pass the invalidated region to
the renderer!

The whole GUI / renderer combo must support invalidated regions. When
the GUI does not support invalidated regions then it may be bad to let
the renderer do clipping (which might slow down rendering). Also, my
implementation does not require that the renderer to do perfect
clipping. In the case of AGG, it's even a bad idea because clipping
happens at sub-pixel level and this may lead to unexpected results
(anti-aliasing pixels summing up and such) along the clipping
rectangle.
When only the clipped region of the AGG buffer is blitted to the
screen (as with GTK-AGG), this normally is not a problem. But if the
complete buffer is blitted (any future GUI), then the result can be
different (which should never happen). 

So, it should be up to the GUI to decide whether (and how!) use
clipping or not.

Udo





reply via email to

[Prev in Thread] Current Thread [Next in Thread]