diff options
Diffstat (limited to 'src/gc.cpp')
| -rw-r--r-- | src/gc.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/gc.cpp b/src/gc.cpp index 7333b4641..8d89de26a 100644 --- a/src/gc.cpp +++ b/src/gc.cpp @@ -12,6 +12,8 @@ #include "gc-core.h" #include <stdexcept> #include <glib/gmessages.h> +#include <sigc++/functors/ptr_fun.h> +#include <glibmm/main.h> namespace Inkscape { namespace GC { @@ -264,6 +266,26 @@ void Core::init() { _ops.do_init(); } + +namespace { + +bool collection_requested=false; +bool collection_task() { + Core::gcollect(); + Core::gcollect(); + collection_requested=false; + return false; +} + +} + +void request_early_collection() { + if (!collection_requested) { + collection_requested=true; + Glib::signal_idle().connect(sigc::ptr_fun(&collection_task)); + } +} + } } |
