From 1172116d6b490ffb768bc26883e0e846df1bf10b Mon Sep 17 00:00:00 2001 From: Patrick Wuttke Date: Sat, 22 Nov 2025 12:40:56 +0100 Subject: [PATCH] Signal: made reset() public and added parameter to reset without disconnecting the signal. --- source/mijin/async/signal.hpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/source/mijin/async/signal.hpp b/source/mijin/async/signal.hpp index d9cfbbe..0e5cca5 100644 --- a/source/mijin/async/signal.hpp +++ b/source/mijin/async/signal.hpp @@ -32,6 +32,10 @@ inline constexpr signal_token_t INVALID_SIGNAL_TOKEN = std::numeric_limits typename TAllocator, typename... TArgs> +class SignalAutoToken; template typename TAllocator, typename... TArgs> class BaseSignal @@ -39,6 +43,7 @@ class BaseSignal public: using handler_t = std::function; // TODO: write a custom function wrapper with allocator support using token_t = signal_token_t; + using auto_token_t = SignalAutoToken; private: struct RegisteredHandler { @@ -118,8 +123,7 @@ public: } return *this; } -private: - void reset() MIJIN_NOEXCEPT; + void reset(DisconnectSignal disconnect = DisconnectSignal::YES) MIJIN_NOEXCEPT; friend signal_t; }; @@ -129,11 +133,13 @@ private: // template typename TAllocator, typename... TArgs> -void SignalAutoToken::reset() MIJIN_NOEXCEPT +void SignalAutoToken::reset(DisconnectSignal disconnect) MIJIN_NOEXCEPT { if (signal_ != nullptr && token_ != INVALID_SIGNAL_TOKEN) { - signal_->disconnect(token_); + if (disconnect) { + signal_->disconnect(token_); + } signal_ = nullptr; token_ = INVALID_SIGNAL_TOKEN; }