From d0090423642f0d4eea455ff77087027be242b148 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Tue, 30 Oct 2007 19:29:36 +0000 Subject: r16892@shi: ted | 2007-10-29 21:33:09 -0700 Okay, so now the caches get into the execution environment and can be passed around to the effects. Now it's a matter of implementing the caches in the drivers. (bzr r3978) --- src/extension/execution-env.cpp | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) (limited to 'src/extension/execution-env.cpp') diff --git a/src/extension/execution-env.cpp b/src/extension/execution-env.cpp index b7746289e..21df42b9d 100644 --- a/src/extension/execution-env.cpp +++ b/src/extension/execution-env.cpp @@ -18,6 +18,7 @@ #include "selection.h" #include "effect.h" #include "document.h" +#include "desktop.h" #include "ui/view/view.h" #include "sp-namedview.h" #include "desktop-handles.h" @@ -28,7 +29,7 @@ namespace Inkscape { namespace Extension { -ExecutionEnv::ExecutionEnv (Effect * effect, Inkscape::UI::View::View * doc, Gtk::Widget * controls, sigc::signal * changeSignal, Gtk::Dialog * prefDialog) : +ExecutionEnv::ExecutionEnv (Effect * effect, Inkscape::UI::View::View * doc, Gtk::Widget * controls, sigc::signal * changeSignal, Gtk::Dialog * prefDialog, Implementation::ImplementationDocumentCache * docCache) : _visibleDialog(NULL), _prefsVisible(false), _finished(false), @@ -40,7 +41,8 @@ ExecutionEnv::ExecutionEnv (Effect * effect, Inkscape::UI::View::View * doc, Gtk _selfdelete(false), _changeSignal(changeSignal), _doc(doc), - _effect(effect) { + _effect(effect), + _docCache(docCache) { SPDesktop *desktop = (SPDesktop *)_doc; sp_namedview_document_from_window(desktop); @@ -93,9 +95,30 @@ ExecutionEnv::~ExecutionEnv (void) { if (_changeSignal != NULL && !_shutdown) { delete _changeSignal; } + killDocCache(); return; } +void +ExecutionEnv::genDocCache (void) { + if (_docCache == NULL) { + printf("Gen Doc Cache\n"); + SPDesktop * spdesktop = (SPDesktop *)_doc; + Implementation::ImplementationDocumentCache * _docCache = _effect->get_imp()->newDocCache(_effect, spdesktop->doc()); + } + return; +} + +void +ExecutionEnv::killDocCache (void) { + if (_docCache != NULL) { + printf("Killed Doc Cache\n"); + delete _docCache; + _docCache = NULL; + } + return; +} + void ExecutionEnv::preferencesChange (void) { _timersig.disconnect(); @@ -250,7 +273,8 @@ ExecutionEnv::run (void) { _mainloop->run(); } else { _prefsChanged = false; - _effect->get_imp()->effect(_effect, _doc, NULL); + genDocCache(); + _effect->get_imp()->effect(_effect, _doc, _docCache); processingComplete(); } if (_canceled) { @@ -275,6 +299,9 @@ ExecutionEnv::livePreview (bool state) { _humanWait = false; } _livePreview = state; + if (!_livePreview) { + killDocCache(); + } return; } -- cgit v1.2.3