diff options
Diffstat (limited to 'libs/pbd/pbd/destructible.h')
-rw-r--r-- | libs/pbd/pbd/destructible.h | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/libs/pbd/pbd/destructible.h b/libs/pbd/pbd/destructible.h index 6692ff564c..7c50806334 100644 --- a/libs/pbd/pbd/destructible.h +++ b/libs/pbd/pbd/destructible.h @@ -5,14 +5,22 @@ namespace PBD { -class Destructible : public virtual sigc::trackable { - public: - Destructible() {} - virtual ~Destructible () {} +/* be very very careful using this class. it does not inherit from sigc::trackable and thus + should only be used in multiple-inheritance situations involving another type + that does inherit from sigc::trackable (or sigc::trackable itself) +*/ +class ThingWithGoingAway { + public: + virtual ~ThingWithGoingAway () {} sigc::signal<void> GoingAway; +}; +class Destructible : public sigc::trackable, public ThingWithGoingAway { + public: + virtual ~Destructible () {} void drop_references () const { GoingAway(); } + }; } |