diff options
| author | MenTaLguY <mental@rydia.net> | 2007-07-01 20:08:45 +0000 |
|---|---|---|
| committer | mental <mental@users.sourceforge.net> | 2007-07-01 20:08:45 +0000 |
| commit | cf293d81a6c979f0266a86f5f8494551ac9c62b9 (patch) | |
| tree | 9168fb9f05e8b1f190bb12bd3024402088dc188d /src/xml | |
| parent | initial implementation of XML::Subtree API for tracking changes on a (diff) | |
| download | inkscape-cf293d81a6c979f0266a86f5f8494551ac9c62b9.tar.gz inkscape-cf293d81a6c979f0266a86f5f8494551ac9c62b9.zip | |
was trying to have my cake and eat it too, memory-management-wise ... for
now, manual management for Subtree
(bzr r3159)
Diffstat (limited to 'src/xml')
| -rw-r--r-- | src/xml/subtree.cpp | 17 | ||||
| -rw-r--r-- | src/xml/subtree.h | 8 |
2 files changed, 7 insertions, 18 deletions
diff --git a/src/xml/subtree.cpp b/src/xml/subtree.cpp index 7c549e7d7..f19bf055a 100644 --- a/src/xml/subtree.cpp +++ b/src/xml/subtree.cpp @@ -32,25 +32,16 @@ void recursively(void (Node::*m)(NodeObserver &observer), } -Subtree::Subtree(Node &root) : _root(&root) { - recursively(&Node::addObserver, *_root, *this); +Subtree::Subtree(Node &root) : _root(root) { + recursively(&Node::addObserver, _root, *this); } Subtree::~Subtree() { - finish(); -} - -void Subtree::finish() { - if (_root) { - recursively(&Node::removeObserver, *_root, *this); - _root = NULL; - } + recursively(&Node::removeObserver, _root, *this); } void Subtree::synthesizeEvents(NodeObserver &observer) { - if (_root) { - recursively(&Node::synthesizeEvents, *_root, *this); - } + recursively(&Node::synthesizeEvents, _root, *this); } void Subtree::addObserver(NodeObserver &observer) { diff --git a/src/xml/subtree.h b/src/xml/subtree.h index 73a6485d1..a70598fca 100644 --- a/src/xml/subtree.h +++ b/src/xml/subtree.h @@ -17,22 +17,20 @@ #include "xml/node-observer.h" #include "xml/composite-node-observer.h" +#include "gc-finalized.h" namespace Inkscape { namespace XML { class Node; -class Subtree : public Inkscape::GC::Anchored, - public Inkscape::GC::Managed<>, +class Subtree : public GC::Managed<GC::SCANNED, GC::MANUAL>, private NodeObserver { public: Subtree(Node &root); ~Subtree(); - void finish(); - void synthesizeEvents(NodeObserver &observer); void addObserver(NodeObserver &observer); void removeObserver(NodeObserver &observer); @@ -53,7 +51,7 @@ private: Util::ptr_shared<char> old_value, Util::ptr_shared<char> new_value); - Node *_root; + Node &_root; CompositeNodeObserver _observers; }; |
