diff options
author | Matthias Schiffer <matthias@gamezock.de> | 2009-06-18 22:03:02 +0200 |
---|---|---|
committer | Matthias Schiffer <matthias@gamezock.de> | 2009-06-18 22:03:02 +0200 |
commit | 7234fe326d16d6bf9f4374a09ddc6ef790e6723f (patch) | |
tree | 437d4c40eeb1e9b34b369e4b82064a1572c7dac9 /src/Core/Signals | |
parent | bf561f8226e97f4ace4f04bddf198175e91ee7f0 (diff) | |
download | mad-7234fe326d16d6bf9f4374a09ddc6ef790e6723f.tar mad-7234fe326d16d6bf9f4374a09ddc6ef790e6723f.zip |
Globale Variablen durch Application-Klasse ersetzt
Diffstat (limited to 'src/Core/Signals')
-rw-r--r-- | src/Core/Signals/GenericSignal.h | 2 | ||||
-rw-r--r-- | src/Core/Signals/Signal0.h | 5 | ||||
-rw-r--r-- | src/Core/Signals/Signal1.h | 5 | ||||
-rw-r--r-- | src/Core/Signals/Signal2.h | 5 | ||||
-rw-r--r-- | src/Core/Signals/SignalBase.h | 11 |
5 files changed, 24 insertions, 4 deletions
diff --git a/src/Core/Signals/GenericSignal.h b/src/Core/Signals/GenericSignal.h index 641f575..af5bae9 100644 --- a/src/Core/Signals/GenericSignal.h +++ b/src/Core/Signals/GenericSignal.h @@ -37,6 +37,8 @@ class GenericSignal : protected SignalBase { protected: std::map<Connection, slot_type> handlers; + GenericSignal(Application *application) : SignalBase(application) {} + public: Connection connect(const slot_type &slot) { boost::lock_guard<boost::mutex> lock(mutex); diff --git a/src/Core/Signals/Signal0.h b/src/Core/Signals/Signal0.h index ccfb548..c01a82a 100644 --- a/src/Core/Signals/Signal0.h +++ b/src/Core/Signals/Signal0.h @@ -21,6 +21,7 @@ #define MAD_CORE_SIGNALS_SIGNAL0_H_ #include "GenericSignal.h" +#include "../Application.h" #include "../ThreadManager.h" #include <boost/function.hpp> @@ -31,11 +32,13 @@ namespace Signals { class Signal0 : public GenericSignal<boost::function0<void> > { public: + Signal0(Application *application) : GenericSignal<boost::function0<void> >(application) {} + void emit() { boost::lock_guard<boost::mutex> lock(mutex); for(std::map<Connection, slot_type>::iterator handler = handlers.begin(); handler != handlers.end(); ++handler) - ThreadManager::get()->pushWork(handler->second); + getApplication()->getThreadManager()->pushWork(handler->second); } }; diff --git a/src/Core/Signals/Signal1.h b/src/Core/Signals/Signal1.h index e4a946c..0a03c39 100644 --- a/src/Core/Signals/Signal1.h +++ b/src/Core/Signals/Signal1.h @@ -21,6 +21,7 @@ #define MAD_CORE_SIGNALS_SIGNAL1_H_ #include "GenericSignal.h" +#include "../Application.h" #include "../ThreadManager.h" #include <boost/function.hpp> @@ -32,11 +33,13 @@ namespace Signals { template <typename T1> class Signal1 : public GenericSignal<boost::function1<void, T1> > { public: + Signal1(Application *application) : GenericSignal<boost::function1<void, T1> >(application) {} + void emit(T1 arg1) { boost::lock_guard<boost::mutex> lock(this->mutex); for(typename std::map<Connection, typename GenericSignal<boost::function1<void, T1> >::slot_type>::iterator handler = this->handlers.begin(); handler != this->handlers.end(); ++handler) - ThreadManager::get()->pushWork(boost::bind(handler->second, arg1)); + this->getApplication()->getThreadManager()->pushWork(boost::bind(handler->second, arg1)); } }; diff --git a/src/Core/Signals/Signal2.h b/src/Core/Signals/Signal2.h index 41045d7..0966258 100644 --- a/src/Core/Signals/Signal2.h +++ b/src/Core/Signals/Signal2.h @@ -21,6 +21,7 @@ #define MAD_CORE_SIGNALS_SIGNAL2_H_ #include "GenericSignal.h" +#include "../Application.h" #include "../ThreadManager.h" #include <boost/function.hpp> @@ -32,11 +33,13 @@ namespace Signals { template <typename T1, typename T2> class Signal2 : public GenericSignal<boost::function2<void, T1, T2> > { public: + Signal2(Application *application) : GenericSignal<boost::function2<void, T1, T2> >(application) {} + void emit(T1 arg1, T2 arg2) { boost::lock_guard<boost::mutex> lock(this->mutex); for(typename std::map<Connection, typename GenericSignal<boost::function2<void, T1, T2> >::slot_type>::iterator handler = this->handlers.begin(); handler != this->handlers.end(); ++handler) - ThreadManager::get()->pushWork(boost::bind(handler->second, arg1, arg2)); + this->getApplication()->getThreadManager()->pushWork(boost::bind(handler->second, arg1, arg2)); } }; diff --git a/src/Core/Signals/SignalBase.h b/src/Core/Signals/SignalBase.h index 1a5d5a3..8ec8483 100644 --- a/src/Core/Signals/SignalBase.h +++ b/src/Core/Signals/SignalBase.h @@ -27,12 +27,17 @@ namespace Mad { namespace Core { + +class Application; + namespace Signals { class SignalBase : private boost::noncopyable { private: friend class Connection; + Application *application; + unsigned long connectionId; protected: @@ -42,8 +47,12 @@ class SignalBase : private boost::noncopyable { return Connection(this, connectionId++); } - SignalBase() : connectionId(0) {} + SignalBase(Application *application0) : application(application0), connectionId(0) {} virtual ~SignalBase() {} + + Application* getApplication() { + return application; + } }; } |