From 3368aefd9782b0e22b95c1bcf988fd9b1c10522e Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Tue, 8 Oct 2024 19:49:33 +0200 Subject: Fix bug causing signal changes to be lost (#2870). It was possible (and I believe it happend) for new signals to be queued up in _pending while some old ones were being processed. They would then be cleared at the end of resume() without ever being sent. --- src/lib/change_signaller.h | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/lib/change_signaller.h b/src/lib/change_signaller.h index cda366076..0b2c1539d 100644 --- a/src/lib/change_signaller.h +++ b/src/lib/change_signaller.h @@ -87,15 +87,13 @@ public: { boost::mutex::scoped_lock lm(_mutex); auto pending = _pending; + _pending.clear(); + _suspended = false; lm.unlock(); for (auto signal: pending) { signal.thing->signal_change(signal.type, signal.property); } - - lm.lock(); - _pending.clear(); - _suspended = false; } static ChangeSignalDespatcher* instance() -- cgit v1.2.3