summaryrefslogtreecommitdiff
diff options
authorMarco Trevisan (Treviño) <mail@3v1n0.net>2017-07-12 18:56:01 +0200
committerMarco Trevisan (Treviño) <mail@3v1n0.net>2017-07-12 18:56:01 +0200
commitd3260165470b21c4a15226108e72507b5b46ecdb (patch)
tree8cc7ace161d23372304ebb9b230f04ac15c26dcf
parente9b4d8bfe29f2715609d2b148591f36757988253 (diff)
GLibSignal: add Block/Unblock calls to SignalManager
(bzr r4245.2.5)
-rw-r--r--UnityCore/GLibSignal.cpp14
-rw-r--r--UnityCore/GLibSignal.h3
2 files changed, 17 insertions, 0 deletions
diff --git a/UnityCore/GLibSignal.cpp b/UnityCore/GLibSignal.cpp
index 447785a12..0a155aede 100644
--- a/UnityCore/GLibSignal.cpp
+++ b/UnityCore/GLibSignal.cpp
@@ -152,6 +152,20 @@ void SignalManager::OnObjectDestroyed(SignalManager* self, GObject* old_obj)
self->ForeachMatchedSignal(nullptr, "", nullptr, /*erase_after*/ true);
}
+bool SignalManager::Block(void* object, std::string const& signal_name)
+{
+ return ForeachMatchedSignal(object, signal_name, [this] (SignalBase::Ptr const& signal) {
+ signal->Block();
+ });
+}
+
+bool SignalManager::Unblock(void* object, std::string const& signal_name)
+{
+ return ForeachMatchedSignal(object, signal_name, [this] (SignalBase::Ptr const& signal) {
+ signal->Unblock();
+ });
+}
+
bool SignalManager::Disconnect(void* object, std::string const& signal_name)
{
return ForeachMatchedSignal(object, signal_name, [this] (SignalBase::Ptr const& signal) {
diff --git a/UnityCore/GLibSignal.h b/UnityCore/GLibSignal.h
index fe78853a8..d60ebc249 100644
--- a/UnityCore/GLibSignal.h
+++ b/UnityCore/GLibSignal.h
@@ -94,6 +94,9 @@ 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 Disconnect(void* object, std::string const& signal_name = "");
private: