diff --git a/CHANGELOG.md b/CHANGELOG.md index ba3c188b..47cc16cf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -88,7 +88,7 @@ - Dev: Fixed benchmarks segfaulting on run. (#5559) - Dev: Refactored `MessageBuilder` to be a single class. (#5548) - Dev: Recent changes are now shown in the nightly release description. (#5553, #5554, #5593) -- Dev: The timer for `StreamerMode` is now destroyed on the correct thread. (#5571) +- Dev: The timer for `StreamerMode` is now destroyed on the correct thread. (#5571, #5624) - Dev: Cleanup some parts of the `magic_enum` adaptation for Qt. (#5587) - Dev: Refactored `static`s in headers to only be present once in the final app. (#5588) - Dev: Run benchmarks in CI. (#5610) diff --git a/src/singletons/StreamerMode.cpp b/src/singletons/StreamerMode.cpp index 67ca2d34..ca63316a 100644 --- a/src/singletons/StreamerMode.cpp +++ b/src/singletons/StreamerMode.cpp @@ -281,24 +281,27 @@ void StreamerModePrivate::settingChanged(StreamerModeSetting value) } this->currentSetting_ = value; + // in all cases: timer_ must be invoked from the correct thread switch (this->currentSetting_) { case StreamerModeSetting::Disabled: { this->setEnabled(false); - this->timer_->stop(); + QMetaObject::invokeMethod(this->timer_, &QTimer::stop); } break; case StreamerModeSetting::Enabled: { this->setEnabled(true); - this->timer_->stop(); + QMetaObject::invokeMethod(this->timer_, &QTimer::stop); } break; case StreamerModeSetting::DetectStreamingSoftware: { - if (!this->timer_->isActive()) - { - this->timer_->start(20s); - this->check(); - } + QMetaObject::invokeMethod(this->timer_, [this] { + if (!this->timer_->isActive()) + { + this->timer_->start(20s); + this->check(); + } + }); } break; default: