diff --git a/bazaar/Dispatcher/Dispatcher.h b/bazaar/Dispatcher/Dispatcher.h index 073c67dfc..47581f8a5 100644 --- a/bazaar/Dispatcher/Dispatcher.h +++ b/bazaar/Dispatcher/Dispatcher.h @@ -27,7 +27,7 @@ public: virtual void Dispatch(const T& o) = 0; void Unregister(const Any& _src); - void UnregisterAll() { while(src.GetCount()>0) Unregister(src[0]); } + void UnregisterAll() { while(src.GetCount()>0) Unregister(src[0]); } //will remove elements void Unregister(Dispatcher& from) { int i = src.Find(GetPtrHashValue(&from)); if(i<0) return; Unregister(src[i]); } void Unregister(DispatcherGen& from) { int i = src.Find(GetPtrHashValue(&from)); if(i<0) return; Unregister(src[i]); } @@ -57,7 +57,7 @@ public: void Unregister(Dispatchable& d, unsigned key = 0); Dispatchable* GetDispatchable(unsigned key) const; const VectorMap*>& GetDests() const { return dests; } - void Clear() { while(dests.GetCount()>0) dests[0].Unregister(); } + void Clear() { while(dests.GetCount()>0) dests[0]->Unregister(*this); } private: VectorMap*> dests; diff --git a/bazaar/DispatcherTest/DispatcherTest.h b/bazaar/DispatcherTest/DispatcherTest.h index cf7fe7fb6..f79db67b0 100644 --- a/bazaar/DispatcherTest/DispatcherTest.h +++ b/bazaar/DispatcherTest/DispatcherTest.h @@ -26,6 +26,7 @@ class DispatcherTest : public WithDispatcherTestLayout public: typedef DispatcherTest CLASSNAME; DispatcherTest(); + ~DispatcherTest(); void sliderCB(); diff --git a/bazaar/DispatcherTest/main.cpp b/bazaar/DispatcherTest/main.cpp index 89c003817..05d9f5501 100644 --- a/bazaar/DispatcherTest/main.cpp +++ b/bazaar/DispatcherTest/main.cpp @@ -53,6 +53,11 @@ DispatcherTest::DispatcherTest() sliderCB(); } +DispatcherTest::~DispatcherTest() +{ + disp.Clear(); +} + GUI_APP_MAIN { DispatcherTest().Run();