diff options
| author | Krzysztof Kosi??ski <tweenk.pl@gmail.com> | 2011-08-25 18:33:10 +0000 |
|---|---|---|
| committer | Krzysztof Kosinski <tweenk.pl@gmail.com> | 2011-08-25 18:33:10 +0000 |
| commit | 969504cc521a5116e1b1b8ea9e0355f69e6c93eb (patch) | |
| tree | 60f8983850400f7fed7184675c6acf96357ad7e2 /src/display | |
| parent | Remove duplicate bbox data from DrawingShape (diff) | |
| download | inkscape-969504cc521a5116e1b1b8ea9e0355f69e6c93eb.tar.gz inkscape-969504cc521a5116e1b1b8ea9e0355f69e6c93eb.zip | |
Reduce default rendering cache size to 64 MiB
(bzr r10347.1.39)
Diffstat (limited to 'src/display')
| -rw-r--r-- | src/display/canvas-arena.cpp | 21 | ||||
| -rw-r--r-- | src/display/canvas-arena.h | 4 |
2 files changed, 15 insertions, 10 deletions
diff --git a/src/display/canvas-arena.cpp b/src/display/canvas-arena.cpp index ac2704895..4688a58e3 100644 --- a/src/display/canvas-arena.cpp +++ b/src/display/canvas-arena.cpp @@ -49,18 +49,23 @@ static void sp_canvas_arena_request_render (SPCanvasArena *ca, Geom::IntRect con static SPCanvasItemClass *parent_class; static guint signals[LAST_SIGNAL] = {0}; -struct CacheBudgetObserver : public Inkscape::Preferences::Observer { - CacheBudgetObserver(SPCanvasArena *arena) - : Inkscape::Preferences::Observer("/options/renderingcache/size") +struct CachePrefObserver : public Inkscape::Preferences::Observer { + CachePrefObserver(SPCanvasArena *arena) + : Inkscape::Preferences::Observer("/options/renderingcache") , _arena(arena) { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - Inkscape::Preferences::Entry v = prefs->getEntry(observed_path); - notify(v); + std::vector<Inkscape::Preferences::Entry> v = prefs->getAllEntries(observed_path); + for (unsigned i=0; i<v.size(); ++i) { + notify(v[i]); + } prefs->addObserver(*this); } void notify(Preferences::Entry const &v) { - _arena->drawing.setCacheBudget((1 << 20) * v.getIntLimited(128, 0, 4096)); + Glib::ustring name = v.getEntryName(); + if (name == "size") { + _arena->drawing.setCacheBudget((1 << 20) * v.getIntLimited(64, 0, 4096)); + } } SPCanvasArena *_arena; }; @@ -119,13 +124,13 @@ sp_canvas_arena_init (SPCanvasArena *arena) arena->sticky = FALSE; new (&arena->drawing) Inkscape::Drawing(arena); - arena->observer = new CacheBudgetObserver(arena); Inkscape::DrawingGroup *root = new DrawingGroup(arena->drawing); root->setPickChildren(true); - root->setCached(true, true); arena->drawing.setRoot(root); + arena->observer = new CachePrefObserver(arena); + arena->drawing.signal_request_update.connect( sigc::bind<0>( sigc::ptr_fun(&sp_canvas_arena_request_update), diff --git a/src/display/canvas-arena.h b/src/display/canvas-arena.h index 463dc1bc3..f145a9c70 100644 --- a/src/display/canvas-arena.h +++ b/src/display/canvas-arena.h @@ -31,7 +31,7 @@ G_BEGIN_DECLS typedef struct _SPCanvasArena SPCanvasArena; typedef struct _SPCanvasArenaClass SPCanvasArenaClass; -struct CacheBudgetObserver; +struct CachePrefObserver; struct _SPCanvasArena { SPCanvasItem item; @@ -46,7 +46,7 @@ struct _SPCanvasArena { Inkscape::DrawingItem *active; /* fixme: */ Inkscape::DrawingItem *picked; - CacheBudgetObserver *observer; + CachePrefObserver *observer; double delta; }; |
