diff --git a/selfdrive/ui/ui.cc b/selfdrive/ui/ui.cc index 4d795dcfd..e0e74d544 100644 --- a/selfdrive/ui/ui.cc +++ b/selfdrive/ui/ui.cc @@ -3,6 +3,8 @@ #include #include +#include + #include "common/transformations/orientation.hpp" #include "selfdrive/common/params.h" #include "selfdrive/common/swaglog.h" @@ -290,9 +292,11 @@ void Device::updateBrightness(const UIState &s) { } if (brightness != last_brightness) { - std::thread{Hardware::set_brightness, brightness}.detach(); + if (!brightness_future.isRunning()) { + brightness_future = QtConcurrent::run(Hardware::set_brightness, brightness); + last_brightness = brightness; + } } - last_brightness = brightness; } bool Device::motionTriggered(const UIState &s) { diff --git a/selfdrive/ui/ui.h b/selfdrive/ui/ui.h index b215bfa9b..bc15257a0 100644 --- a/selfdrive/ui/ui.h +++ b/selfdrive/ui/ui.h @@ -7,6 +7,7 @@ #include #include #include +#include #include #include "cereal/messaging/messaging.h" @@ -162,6 +163,7 @@ private: bool ignition_on = false; int last_brightness = 0; FirstOrderFilter brightness_filter; + QFuture brightness_future; void updateBrightness(const UIState &s); void updateWakefulness(const UIState &s);