summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/client_manager.cc2
-rw-r--r--src/utils.hh3
2 files changed, 4 insertions, 1 deletions
diff --git a/src/client_manager.cc b/src/client_manager.cc
index 6798864e..8d4f2de0 100644
--- a/src/client_manager.cc
+++ b/src/client_manager.cc
@@ -77,7 +77,7 @@ Client* ClientManager::create_client(std::unique_ptr<UserInterface>&& ui, int pi
context.window().center_line(init_coord->line);
}
- auto(std::move(unlock)); // unlock now
+ unlock.trigger();
try
{
diff --git a/src/utils.hh b/src/utils.hh
index 4b84ce75..b517735f 100644
--- a/src/utils.hh
+++ b/src/utils.hh
@@ -73,6 +73,9 @@ public:
{ other.m_valid = false; }
[[gnu::always_inline]]
+ void trigger() { if (m_valid) m_func(); m_valid = false; }
+
+ [[gnu::always_inline]]
~OnScopeEnd() noexcept(noexcept(m_func())) { if (m_valid) m_func(); }
private: