summaryrefslogtreecommitdiff
path: root/UnityCore
diff options
authorMarco Trevisan (Treviño) <mail@3v1n0.net>2017-07-12 18:13:47 +0200
committerMarco Trevisan (Treviño) <mail@3v1n0.net>2017-07-12 18:13:47 +0200
commitaf2d08087a6e2386aa6edd5e133f5b581779c013 (patch)
tree933a5a9858e2c92cc97ebb4d1a420d74b1986331 /UnityCore
parente4c421bc64b1aad5bc971faca2c0e1ad84e64db7 (diff)
GLibSignal: allow to block, unblock signals
(bzr r4245.2.3)
Diffstat (limited to 'UnityCore')
-rw-r--r--UnityCore/GLibSignal.cpp26
-rw-r--r--UnityCore/GLibSignal.h3
2 files changed, 29 insertions, 0 deletions
diff --git a/UnityCore/GLibSignal.cpp b/UnityCore/GLibSignal.cpp
index f0949e84a..b649e2543 100644
--- a/UnityCore/GLibSignal.cpp
+++ b/UnityCore/GLibSignal.cpp
@@ -51,6 +51,32 @@ bool SignalBase::Disconnect()
return disconnected;
}
+bool SignalBase::Block() const
+{
+ bool blocked = false;
+
+ if (connection_id_ && G_IS_OBJECT(object_))
+ {
+ g_signal_handler_block(object_, connection_id_);
+ blocked = true;
+ }
+
+ return blocked;
+}
+
+bool SignalBase::Unblock() const
+{
+ bool unblocked = false;
+
+ if (connection_id_ && G_IS_OBJECT(object_))
+ {
+ g_signal_handler_unblock(object_, connection_id_);
+ unblocked = true;
+ }
+
+ return unblocked;
+}
+
GObject* SignalBase::object() const
{
return object_;
diff --git a/UnityCore/GLibSignal.h b/UnityCore/GLibSignal.h
index 46914bd00..894b7843c 100644
--- a/UnityCore/GLibSignal.h
+++ b/UnityCore/GLibSignal.h
@@ -41,6 +41,9 @@ public:
bool Disconnect();
+ bool Block() const;
+ bool Unblock() const;
+
GObject* object() const;
std::string const& name() const;