summaryrefslogtreecommitdiffstats
path: root/src/gc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gc.cpp')
-rw-r--r--src/gc.cpp22
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));
+ }
+}
+
}
}