gnash-commit
[Top][All Lists]
Advanced

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

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


From: Udo Giacomozzi
Subject: [Gnash-commit] gnash backend/render_handler.h ChangeLog
Date: Fri, 13 Oct 2006 08:06:59 +0000

CVSROOT:        /cvsroot/gnash
Module name:    gnash
Changes by:     Udo Giacomozzi <udog>   06/10/13 08:06:58

Modified files:
        backend        : render_handler.h 
        .              : ChangeLog 

Log message:
        Added documentation

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/backend/render_handler.h?cvsroot=gnash&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.1180&r2=1.1181

Patches:
Index: backend/render_handler.h
===================================================================
RCS file: /cvsroot/gnash/gnash/backend/render_handler.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- backend/render_handler.h    12 Oct 2006 18:59:00 -0000      1.7
+++ backend/render_handler.h    13 Oct 2006 08:06:58 -0000      1.8
@@ -35,11 +35,13 @@
 // 
 //
 
-/* $Id: render_handler.h,v 1.7 2006/10/12 18:59:00 udog Exp $ */
+/* $Id: render_handler.h,v 1.8 2006/10/13 08:06:58 udog Exp $ */
 
 #ifndef RENDER_HANDLER_H
 #define RENDER_HANDLER_H
 
+/// \page render_handler_intro Render handler introduction
+///
 /// Information for writing new render handlers:
 ///
 /// There are two ways to write a new render handler:
@@ -122,6 +124,45 @@
 /// (like the AGG backend does too).    
   
 
+/// \page region_update Detection of updated regions
+///
+/// (this applies to the whole Gnash playback architecture)
+///
+/// After advancing the root movie (see Gui::advance_movie) it is checked
+/// which region of the stage has been changed visibly (by computing the 
+/// bounds around updated characters). This has two advantages:
+/// 
+/// 1st, it allows a renderer/gui combination to avoid re-rendering of
+/// unchanged parts in the scene. When supported by the rendering engine
+/// this can be a huge performance gain. The original Flash player does
+/// that too, btw. Altough he is able to define multiple smaller regions
+/// for one frame. This could be implemented in Gnash, too.
+/// 
+/// 2nd, it can detect still frames (like a stopped movie). gui.cpp can
+/// detect these and completely avoids to call any rendering function.
+/// 
+/// Of course, the most critical part is detection of changes. There is a 
+/// method called set_invalidated() which gets called whenever a critical
+/// property of a instance gets updated, like when it changes position, for
+/// example. It's really important to always call set_invalidated() whenever 
+/// code is added that changes the character instance in a visible way.
+/// 
+/// Even if no renderer really uses this information it has effects when
+/// skipping unchanged frames. If necessary, this feature can be switched
+/// off easily in gui.cpp (maybe using a runtime option?).
+///
+/// Note the updated region is only passed to the GUI, which is itself 
+/// responsible of informing the renderer. This is because it's pointless
+/// to have a renderer which updates only a small part of the stage when
+/// the GUI shows it all since the area aroung the region is undefined.
+/// However, there can be a GUI which supports update regions without needing
+/// the renderer to do so (for example, to save time during blitting).
+/// The GUI can also completely ignore the region information. 
+/// 
+/// As for the integer/float discussion: I used rect (floats) because all
+/// the bounds calculation involves floats anyway and so it's probably
+/// faster than converting between ints and floats all the way.
+
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"

Index: ChangeLog
===================================================================
RCS file: /cvsroot/gnash/gnash/ChangeLog,v
retrieving revision 1.1180
retrieving revision 1.1181
diff -u -b -r1.1180 -r1.1181
--- ChangeLog   13 Oct 2006 00:36:43 -0000      1.1180
+++ ChangeLog   13 Oct 2006 08:06:58 -0000      1.1181
@@ -1,7 +1,15 @@
+2006-10-13 Udo Giacomozzi <address@hidden>
+
+       * backend/render_handler.h: Added documentation
+
 2006-10-13 Markus Gothe <address@hidden>
 
        * macros/png.m4: Added pkg-config support.
        
+2006-10-12 Udo Giacomozzi <address@hidden>
+  
+       * render_handler_agg.cpp, gui/fb.cpp: Implemented clipping for AGG 
backend 
+
 2006-10-12  Rob Savoye  <address@hidden>
 
        * testsuite/libbase/Makefile.am: Redefine the check-DEJAGNU target




reply via email to

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