gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ChangeLog backend/render_handler_agg.cpp [release_0


From: Udo Giacomozzi
Subject: [Gnash-commit] gnash ChangeLog backend/render_handler_agg.cpp [release_0_7_2]
Date: Sat, 04 Nov 2006 12:24:36 +0000

CVSROOT:        /cvsroot/gnash
Module name:    gnash
Branch:         release_0_7_2
Changes by:     Udo Giacomozzi <udog>   06/11/04 12:24:36

Modified files:
        .              : ChangeLog 
        backend        : render_handler_agg.cpp 

Log message:
        optimized screen clearing

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&only_with_tag=release_0_7_2&r1=1.1412.2.72&r2=1.1412.2.73
http://cvs.savannah.gnu.org/viewcvs/gnash/backend/render_handler_agg.cpp?cvsroot=gnash&only_with_tag=release_0_7_2&r1=1.29.2.11&r2=1.29.2.12

Patches:
Index: ChangeLog
===================================================================
RCS file: /cvsroot/gnash/gnash/ChangeLog,v
retrieving revision 1.1412.2.72
retrieving revision 1.1412.2.73
diff -u -b -r1.1412.2.72 -r1.1412.2.73
--- ChangeLog   4 Nov 2006 10:52:44 -0000       1.1412.2.72
+++ ChangeLog   4 Nov 2006 12:24:35 -0000       1.1412.2.73
@@ -1,7 +1,7 @@
 2006-11-04 Udo Giacomozzi <address@hidden>
 
         * backend/render_handler_agg.cpp: removed compatibility include as
-        it is not enough anyway
+        it is not enough anyway; optimized screen clearing
 
 2006-11-04 Markus Gothe <address@hidden>
 

Index: backend/render_handler_agg.cpp
===================================================================
RCS file: /cvsroot/gnash/gnash/backend/render_handler_agg.cpp,v
retrieving revision 1.29.2.11
retrieving revision 1.29.2.12
diff -u -b -r1.29.2.11 -r1.29.2.12
--- backend/render_handler_agg.cpp      4 Nov 2006 10:52:44 -0000       
1.29.2.11
+++ backend/render_handler_agg.cpp      4 Nov 2006 12:24:36 -0000       
1.29.2.12
@@ -16,7 +16,7 @@
 
  
 
-/* $Id: render_handler_agg.cpp,v 1.29.2.11 2006/11/04 10:52:44 udog Exp $ */
+/* $Id: render_handler_agg.cpp,v 1.29.2.12 2006/11/04 12:24:36 udog Exp $ */
 
 // Original version by Udo Giacomozzi and Hannes Mayr, 
 // INDUNET GmbH (www.indunet.it)
@@ -485,9 +485,9 @@
          assert(m_pixf != NULL);
 
          // clear the stage using the background color   
-         renderer_base rbase(*m_pixf);
-         rbase.clip_box(m_clip_xmin, m_clip_ymin, m_clip_xmax, m_clip_ymax);
-    rbase.clear(agg::rgba8(background_color.m_r, background_color.m_g,
+    clear_framebuffer(m_clip_xmin, m_clip_ymin, 
+      m_clip_xmax-m_clip_xmin+1, m_clip_ymax-m_clip_ymin+1, 
+      agg::rgba8(background_color.m_r, background_color.m_g, 
        background_color.m_b, background_color.m_a));
 
     // calculate final pixel scale
@@ -500,6 +500,23 @@
     m_drawing_mask = false;
        }
 
+       /// renderer_base.clear() does no clipping which clears the whole 
framebuffer
+       /// even if we update just a small portion of the screen. The result 
would be
+       /// still correct, but slower. 
+  /// This function clears only a certain portion of the screen, while /not/ 
+  /// being notably slower for a fullscreen clear. 
+       void clear_framebuffer(unsigned int left, unsigned int top, 
+    unsigned int width, unsigned int height, agg::rgba8 color) {
+    
+         if (!width) return;
+         
+         unsigned int y;
+         const unsigned int max_y = top+height; // to be exact, it's one off 
the max.
+                 
+    for (y=top; y<max_y; y++) 
+      m_pixf->copy_hline(left, y, width, color);
+  }
+
   bool allow_glyph_textures() {
     // We want to render all glyphs in place 
     return false; 




reply via email to

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