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 | |
| 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')
| -rw-r--r-- | src/display/canvas-arena.cpp | 21 | ||||
| -rw-r--r-- | src/display/canvas-arena.h | 4 | ||||
| -rw-r--r-- | src/preferences-skeleton.h | 2 | ||||
| -rw-r--r-- | src/ui/dialog/inkscape-preferences.cpp | 4 |
4 files changed, 18 insertions, 13 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; }; diff --git a/src/preferences-skeleton.h b/src/preferences-skeleton.h index 895eb7276..a71451455 100644 --- a/src/preferences-skeleton.h +++ b/src/preferences-skeleton.h @@ -231,7 +231,7 @@ static char const preferences_skeleton[] = " </group>\n" "\n" " <group id=\"options\">\n" -" <group id=\"renderingcache\" size=\"128\" />" +" <group id=\"renderingcache\" size=\"64\" />" " <group id=\"useoldpdfexporter\" value=\"0\" />" " <group id=\"highlightoriginal\" value=\"1\" />" " <group id=\"relinkclonesonduplicate\" value=\"0\" />" diff --git a/src/ui/dialog/inkscape-preferences.cpp b/src/ui/dialog/inkscape-preferences.cpp index 0129f196f..ae27f0720 100644 --- a/src/ui/dialog/inkscape-preferences.cpp +++ b/src/ui/dialog/inkscape-preferences.cpp @@ -752,8 +752,8 @@ void InkscapePreferences::initPageRendering() _("Configure number of processors/threads to use when rendering filters"), false); // rendering cache - _rendering_cache_size.init("/options/renderingcache/size", 0.0, 4096.0, 1.0, 32.0, 128.0, true, false); - _page_rendering.add_line( false, _("Rendering cache size:"), _rendering_cache_size, C_("mebibyte (2^20 bytes) abbreviation","MiB"), _("Set the amount of memory per drawing which can be used to store rendered parts of the drawing for later reuse; set to zero to disable caching"), false); + _rendering_cache_size.init("/options/renderingcache/size", 0.0, 4096.0, 1.0, 32.0, 64.0, true, false); + _page_rendering.add_line( false, _("Rendering cache size:"), _rendering_cache_size, C_("mebibyte (2^20 bytes) abbreviation","MiB"), _("Set the amount of memory per document which can be used to store rendered parts of the drawing for later reuse; set to zero to disable caching"), false); /* blur quality */ _blur_quality_best.init ( _("Best quality (slowest)"), "/options/blurquality/value", |
