[Top][All Lists]
[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);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] /srv/bzr/gnash/trunk r10499: Don't create a new renderer at each character drawing,
Sandro Santilli <=