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: Bastiaan Jacques
Subject: Re: [Gnash-commit] gnash ChangeLog backend/render_handler.h backen...
Date: Tue, 24 Oct 2006 14:45:43 +0200

On Mon, 2006-10-23 at 20:03 +0200, Udo Giacomozzi wrote:
> 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.

> Also, my
> implementation does not require that the renderer to do perfect
> clipping.

I don't understand how a Gui could do a better job at clipping than the
renderer. Nor do I understand how my commit changes the situation.

>  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.

In this commit, I have moved the Gui-specific parts of
set_invalidated_region() into the relevant glues. So that accounts for
the anti-aliasing correction I think you are referring to.

On a sidenote, I have moved the clipping related Gui code into the
relevant glues, because interfacing with the renderer is a glue's job.

[moved]
> 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).

> 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 that sounds like we should have something like this in
Gui::display():

if (this->glueImplementsClipping()) {
  _renderer->set_invalidated_region(changed_bounds);
}

Bastiaan





reply via email to

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