summaryrefslogtreecommitdiffstats
path: root/src/sp-object.cpp
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2006-05-02 05:29:03 +0000
committergouldtj <gouldtj@users.sourceforge.net>2006-05-02 05:29:03 +0000
commitdc81b746cf1305802b07f367a44e518d9036a2d6 (patch)
tree079328ba4b24bee0c7dc90b022f5d7b3529c62d7 /src/sp-object.cpp
parentr11569@tres: ted | 2006-04-29 08:55:02 -0700 (diff)
downloadinkscape-dc81b746cf1305802b07f367a44e518d9036a2d6.tar.gz
inkscape-dc81b746cf1305802b07f367a44e518d9036a2d6.zip
(bzr r690)
Diffstat (limited to 'src/sp-object.cpp')
-rw-r--r--src/sp-object.cpp46
1 files changed, 35 insertions, 11 deletions
diff --git a/src/sp-object.cpp b/src/sp-object.cpp
index fbe16e957..68865fb0e 100644
--- a/src/sp-object.cpp
+++ b/src/sp-object.cpp
@@ -246,18 +246,42 @@ public:
}
};
-class RefEvent : public RefCountEvent {
-public:
- RefEvent(SPObject *object)
- : RefCountEvent(object, 1, Util::share_static_string("sp-object-ref"))
+ RefEvent(SPObject *object, Type type)
+ : _object(stringify(object)),
+ _class_name(Inkscape::Util::share_static_string(g_type_name(G_TYPE_FROM_INSTANCE(object)))),
+ _refcount(G_OBJECT(object)->ref_count),
+ _type(type)
{}
};
-class UnrefEvent : public RefCountEvent {
-public:
- UnrefEvent(SPObject *object)
- : RefCountEvent(object, -1, Util::share_static_string("sp-object-unref"))
- {}
+ static Category category() { return REFCOUNT; }
+
+ Inkscape::Util::ptr_shared<char> name() const {
+ if ( _type == REF) {
+ return Inkscape::Util::share_static_string("sp-object-ref");
+ } else {
+ return Inkscape::Util::share_static_string("sp-object-unref");
+ }
+ }
+ unsigned propertyCount() const { return 3; }
+ PropertyPair property(unsigned index) const {
+ switch (index) {
+ case 0:
+ return PropertyPair("object", _object);
+ case 1:
+ return PropertyPair("class", _class_name);
+ case 2:
+ return PropertyPair("new-refcount", stringify( _type == REF ? _refcount + 1 : _refcount - 1 ));
+ default:
+ return PropertyPair();
+ }
+ }
+
+private:
+ Inkscape::Util::ptr_shared<char> _object;
+ Inkscape::Util::ptr_shared<char> _class_name;
+ unsigned _refcount;
+ Type _type;
};
}
@@ -276,7 +300,7 @@ sp_object_ref(SPObject *object, SPObject *owner)
g_return_val_if_fail(SP_IS_OBJECT(object), NULL);
g_return_val_if_fail(!owner || SP_IS_OBJECT(owner), NULL);
- Inkscape::Debug::EventTracker<RefEvent> tracker(object);
+ Inkscape::Debug::EventTracker<RefEvent> tracker(object, RefEvent::REF);
g_object_ref(G_OBJECT(object));
return object;
}
@@ -296,7 +320,7 @@ sp_object_unref(SPObject *object, SPObject *owner)
g_return_val_if_fail(SP_IS_OBJECT(object), NULL);
g_return_val_if_fail(!owner || SP_IS_OBJECT(owner), NULL);
- Inkscape::Debug::EventTracker<UnrefEvent> tracker(object);
+ Inkscape::Debug::EventTracker<RefEvent> tracker(object, RefEvent::UNREF);
g_object_unref(G_OBJECT(object));
return NULL;
}