summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKrzysztof Kosi??ski <tweenk.pl@gmail.com>2011-08-25 18:33:10 +0000
committerKrzysztof Kosinski <tweenk.pl@gmail.com>2011-08-25 18:33:10 +0000
commit969504cc521a5116e1b1b8ea9e0355f69e6c93eb (patch)
tree60f8983850400f7fed7184675c6acf96357ad7e2 /src
parentRemove duplicate bbox data from DrawingShape (diff)
downloadinkscape-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.cpp21
-rw-r--r--src/display/canvas-arena.h4
-rw-r--r--src/preferences-skeleton.h2
-rw-r--r--src/ui/dialog/inkscape-preferences.cpp4
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",