[dasher] Remove duplicate event handlers before rather than after use.



commit 564f3cd860075c3467ca438df5dcfa9ed8da7735
Author: Patrick Welche <prlw1 cam ac uk>
Date:   Mon Feb 25 15:20:41 2013 +0000

    Remove duplicate event handlers before rather than after use.
    
    There shouldn't be any anyway.

 Src/DasherCore/Observable.h |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)
---
diff --git a/Src/DasherCore/Observable.h b/Src/DasherCore/Observable.h
index b21f0a0..921256d 100644
--- a/Src/DasherCore/Observable.h
+++ b/Src/DasherCore/Observable.h
@@ -73,6 +73,10 @@ template <typename T> void Observable<T>::DispatchEvent(T evt) {
   // Speed up start-up before any listeners are registered
   if (m_vListeners.empty()) return;
 
+  // Just in case the same event handler was registered twice.
+  if (m_iInHandler == 0)
+    m_vListeners.unique();
+
   // We may end up here recursively, so keep track of how far down we
   // are, and only permit new handlers to be registered after all
   // messages are processed.
@@ -92,7 +96,6 @@ template <typename T> void Observable<T>::DispatchEvent(T evt) {
   if (m_iInHandler == 0) {
     m_vListeners.remove(NULL);
     m_vListeners.splice(m_vListeners.end(), m_vListenersToAdd);
-    m_vListeners.unique();
   }
 }
 #endif


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]