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.
{
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()