fix(streamer-mode): access timer from correct thread (#5624)

This commit is contained in:
nerix 2024-10-04 22:12:01 +02:00 committed by GitHub
parent fb35be0d82
commit 81d72db76b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 11 additions and 8 deletions

View file

@ -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)

View file

@ -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: