gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] /srv/bzr/gnash/trunk r10499: Don't create a new renderer


From: Sandro Santilli
Subject: [Gnash-commit] /srv/bzr/gnash/trunk r10499: Don't create a new renderer at each character drawing
Date: Wed, 31 Dec 2008 19:15:09 +0100
User-agent: Bazaar (1.5)

------------------------------------------------------------
revno: 10499
committer: Sandro Santilli <address@hidden>
branch nick: trunk
timestamp: Wed 2008-12-31 19:15:09 +0100
message:
  Don't create a new renderer at each character drawing
modified:
  backend/render_handler_agg.cpp
=== modified file 'backend/render_handler_agg.cpp'
--- a/backend/render_handler_agg.cpp    2008-12-31 16:57:29 +0000
+++ b/backend/render_handler_agg.cpp    2008-12-31 18:15:09 +0000
@@ -186,7 +186,6 @@
 
 using namespace gnash;
 
-
 namespace gnash {
 
 
@@ -352,6 +351,9 @@
 {
 private:
   typedef agg::renderer_base<PixelFormat> renderer_base;
+
+  // renderer base
+  std::auto_ptr<renderer_base> m_rbase;
   
   typedef agg::conv_stroke< agg::conv_curve< agg::path_storage > > stroke_type;
   
@@ -465,7 +467,7 @@
     img_source_type img_src(img_pixf);
     
     // renderer base for the stage buffer (not the frame image!)
-    renderer_base rbase(*m_pixf);
+    renderer_base& rbase = *m_rbase;
         
     // nearest neighbor method for scaling
     typedef agg::span_image_filter_rgb_nn<img_source_type, interpolator_type>
@@ -582,9 +584,9 @@
     
     m_rbuf.attach(memaddr, xres, yres, rowstride);
 
-    // allocate pixel format accessor   
+    // allocate pixel format accessor and renderer_base
     m_pixf.reset(new PixelFormat(m_rbuf));
-    //m_rbase = new renderer_base(*m_pixf);  --> does not work!!??
+    m_rbase.reset(new renderer_base(*m_pixf));  
     
     // by default allow drawing everywhere
     set_invalidated_region_world();
@@ -696,11 +698,12 @@
 
     point pnt;
     
-    renderer_base rbase(*m_pixf);
+    renderer_base& rbase = *m_rbase;
     
     typedef agg::rasterizer_scanline_aa<> ras_type;
-
     ras_type ras;    
+
+    // TODO: avoid reconstructing scanline_aa_solid ?
     agg::renderer_scanline_aa_solid<
       agg::renderer_base<PixelFormat> > ren_sl(rbase);
       
@@ -1405,9 +1408,11 @@
     if ( _clipbounds.empty() ) return;
 
     // AGG stuff
+    renderer_base& rbase = *m_rbase;
+
     typedef agg::rasterizer_compound_aa<agg::rasterizer_sl_clip_dbl> ras_type;
-    renderer_base rbase(*m_pixf);
     ras_type rasc;  // flash-like renderer
+
     agg::renderer_scanline_aa_solid<
       agg::renderer_base<PixelFormat> > ren_sl(rbase); // solid fills
     agg::span_allocator<agg::rgba8> alloc;  // span allocator (?)
@@ -1651,7 +1656,9 @@
     // AGG stuff
     typedef agg::rasterizer_scanline_aa<> ras_type; 
     ras_type ras;  // anti alias
-    renderer_base rbase(*m_pixf);
+
+    renderer_base& rbase = *m_rbase;
+
     agg::renderer_scanline_aa_solid<
       agg::renderer_base<PixelFormat> > ren_sl(rbase); // solid fills
       
@@ -1756,7 +1763,8 @@
     mat.concatenate(poly_mat);
     
     typedef agg::rasterizer_scanline_aa<> ras_type;
-    renderer_base rbase(*m_pixf);
+    renderer_base& rbase = *m_rbase;
+
     ras_type ras;
     agg::renderer_scanline_aa_solid<
       agg::renderer_base<PixelFormat> > ren_sl(rbase);


reply via email to

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