summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJon A. Cruz <jon@joncruz.org>2014-03-02 20:31:12 +0000
committerJon A. Cruz <jon@joncruz.org>2014-03-02 20:31:12 +0000
commitc8d15c18dcb8d089f8103d74015f6651d9b9b27c (patch)
treea5b153975efdda5a5649aaa76a9dbea1e5eec439 /src
parentcleanup (diff)
downloadinkscape-c8d15c18dcb8d089f8103d74015f6651d9b9b27c.tar.gz
inkscape-c8d15c18dcb8d089f8103d74015f6651d9b9b27c.zip
Adding destroy signal do document to allow proper cleanup.
(bzr r13094)
Diffstat (limited to 'src')
-rw-r--r--src/document-private.h1
-rw-r--r--src/document.cpp7
-rw-r--r--src/document.h3
3 files changed, 11 insertions, 0 deletions
diff --git a/src/document-private.h b/src/document-private.h
index 065101174..35f21910c 100644
--- a/src/document-private.h
+++ b/src/document-private.h
@@ -52,6 +52,7 @@ struct SPDocumentPrivate {
GHashTable *resources;
ResourcesChangedSignalMap resources_changed_signals;
+ sigc::signal<void> destroySignal;
SPDocument::ModifiedSignal modified_signal;
SPDocument::URISetSignal uri_set_signal;
SPDocument::ResizedSignal resized_signal;
diff --git a/src/document.cpp b/src/document.cpp
index 112503320..18e626b5b 100644
--- a/src/document.cpp
+++ b/src/document.cpp
@@ -141,6 +141,8 @@ SPDocument::SPDocument() :
}
SPDocument::~SPDocument() {
+ priv->destroySignal.emit();
+
// kill/unhook this first
if ( profileManager ) {
delete profileManager;
@@ -230,6 +232,11 @@ SPDocument::~SPDocument() {
//delete this->_whiteboard_session_manager;
}
+sigc::connection SPDocument::connectDestroy(sigc::signal<void>::slot_type slot)
+{
+ return priv->destroySignal.connect(slot);
+}
+
SPDefs *SPDocument::getDefs()
{
if (!root) {
diff --git a/src/document.h b/src/document.h
index e5567d3b6..ee903449d 100644
--- a/src/document.h
+++ b/src/document.h
@@ -85,6 +85,9 @@ public:
SPDocument();
virtual ~SPDocument();
+ sigc::connection connectDestroy(sigc::signal<void>::slot_type slot);
+
+
unsigned int keepalive : 1;
unsigned int virgin : 1; ///< Has the document never been touched?
unsigned int modified_since_save : 1;