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;
}