diff options
Diffstat (limited to 'UnityCore')
| -rw-r--r-- | UnityCore/GLibSignal.cpp | 26 | ||||
| -rw-r--r-- | UnityCore/GLibSignal.h | 3 |
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; |
