[dasher] Event system fixes
- From: Patrick Welche <pwelche src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [dasher] Event system fixes
- Date: Thu, 14 Feb 2013 15:41:37 +0000 (UTC)
commit ab3a544ddd1b6043d87bb23f2a377f398dd8ec02
Author: Patrick Welche <prlw1 cam ac uk>
Date: Thu Feb 14 13:52:57 2013 +0000
Event system fixes
- initialise the event listener reference counter
- speed up DispatchEvent for the (start-up) case of no listeners
Src/DasherCore/Observable.h | 9 +++++++++
1 files changed, 9 insertions(+), 0 deletions(-)
---
diff --git a/Src/DasherCore/Observable.h b/Src/DasherCore/Observable.h
index d965d19..ad20e24 100644
--- a/Src/DasherCore/Observable.h
+++ b/Src/DasherCore/Observable.h
@@ -18,6 +18,7 @@ public:
/// listeners.
template <typename T> class Observable {
public:
+ Observable();
void Register(Observer<T> *pLstnr, bool bLast=false);
void Unregister(Observer<T> *pLstnr);
protected:
@@ -29,6 +30,11 @@ private:
int m_iInHandler;
};
+template <typename T> Observable<T>::Observable()
+{
+ m_iInHandler = 0;
+}
+
///Utility class for Observers which register with an Observable at construction
/// and deregister at destruction. (I.e. which are strictly shorter-lived, than the
/// Observable they listen to!)
@@ -68,6 +74,9 @@ template <typename T> void Observable<T>::Unregister(Observer<T> *pListener) {
template <typename T> void Observable<T>::DispatchEvent(T evt) {
+ // Speed up start-up before any listeners are registered
+ if (m_vListeners.empty()) return;
+
// 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.
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]