From 5ac060bfcf2f12b3a6381156ebbc13826a05b09f Mon Sep 17 00:00:00 2001 From: Tom Englund Date: Fri, 19 Dec 2025 17:12:51 +0100 Subject: [PATCH] signal: check for trivially copyable (#95) use is_trivially_copyable instead because is_arithmetic_v exludes small POD structs, enums, and certain trivially copyable types. also add a if guard in emit if we have no listeners, no point emitting. --- include/hyprutils/signal/Signal.hpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/include/hyprutils/signal/Signal.hpp b/include/hyprutils/signal/Signal.hpp index 425c36f..6062810 100644 --- a/include/hyprutils/signal/Signal.hpp +++ b/include/hyprutils/signal/Signal.hpp @@ -26,10 +26,13 @@ namespace Hyprutils { template class CSignalT : public CSignalBase { template - using RefArg = std::conditional_t || std::is_arithmetic_v, T, const T&>; + using RefArg = std::conditional_t, T, const T&>; public: void emit(RefArg... args) { + if (m_vListeners.empty() && m_vStaticListeners.empty()) + return; + if constexpr (sizeof...(Args) == 0) emitInternal(nullptr); else {