diff options
| author | Marco Trevisan (Treviño) <mail@3v1n0.net> | 2017-07-12 19:45:57 +0200 | 
|---|---|---|
| committer | Marco Trevisan (Treviño) <mail@3v1n0.net> | 2017-07-12 19:45:57 +0200 | 
| commit | 1bc51823be590e56e6a3efeff626506640e7b508 (patch) | |
| tree | fa0e76c0dca3a1bdfa6978abf1a8f76c994d76ea /UnityCore | |
| parent | 5af1db7e331deb01e7dbb0a8f24eed302af5bb64 (diff) | |
GLibSignal: allow to block/unblock all signals for a signal manager
(bzr r4245.2.8)
Diffstat (limited to 'UnityCore')
| -rw-r--r-- | UnityCore/GLibSignal.cpp | 5 | ||||
| -rw-r--r-- | UnityCore/GLibSignal.h | 5 | 
2 files changed, 6 insertions, 4 deletions
| diff --git a/UnityCore/GLibSignal.cpp b/UnityCore/GLibSignal.cpp index 0a155aede..d577c2f2e 100644 --- a/UnityCore/GLibSignal.cpp +++ b/UnityCore/GLibSignal.cpp @@ -122,13 +122,14 @@ SignalBase::Ptr SignalManager::Add(SignalBase::Ptr const& signal)  bool SignalManager::ForeachMatchedSignal(void* object, std::string const& signal_name, std::function<void(SignalBase::Ptr const&)> action, bool erase_after)  {  bool action_performed = false; - bool all_signals = signal_name.empty(); + bool all_objects = (object == reinterpret_cast<void*>(std::numeric_limits<uintptr_t>::max())); + bool all_signals = all_objects || signal_name.empty();  for (auto it = connections_.begin(); it != connections_.end();)  {  auto const& signal = *it; - if (signal->object() == object && (all_signals || signal->name() == signal_name)) + if ((all_objects || signal->object() == object) && (all_signals || signal->name() == signal_name))  {  if (action)  { diff --git a/UnityCore/GLibSignal.h b/UnityCore/GLibSignal.h index d60ebc249..6dc536111 100644 --- a/UnityCore/GLibSignal.h +++ b/UnityCore/GLibSignal.h @@ -21,6 +21,7 @@  #ifndef UNITY_GLIB_SIGNAL_H  #define UNITY_GLIB_SIGNAL_H +#include <limits>  #include <string>  #include <vector>  #include <memory> @@ -94,8 +95,8 @@ public:  template <typename R, typename G, typename... Ts>  SignalBase::Ptr Add(G object, std::string const& signal_name, typename Signal<R, G, Ts...>::SignalCallback const&); - bool Block(void* object, std::string const& signal_name = ""); - bool Unblock(void* object, std::string const& signal_name = ""); + bool Block(void* object = (void*) std::numeric_limits<uintptr_t>::max(), std::string const& signal_name = ""); + bool Unblock(void* object = (void*) std::numeric_limits<uintptr_t>::max(), std::string const& signal_name = "");  bool Disconnect(void* object, std::string const& signal_name = ""); | 
