From c8d15c18dcb8d089f8103d74015f6651d9b9b27c Mon Sep 17 00:00:00 2001 From: "Jon A. Cruz" Date: Sun, 2 Mar 2014 12:31:12 -0800 Subject: Adding destroy signal do document to allow proper cleanup. (bzr r13094) --- src/document-private.h | 1 + src/document.cpp | 7 +++++++ src/document.h | 3 +++ 3 files changed, 11 insertions(+) (limited to 'src') 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 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::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::slot_type slot); + + unsigned int keepalive : 1; unsigned int virgin : 1; ///< Has the document never been touched? unsigned int modified_since_save : 1; -- cgit v1.2.3