diff --git a/firmware/application/main.cpp b/firmware/application/main.cpp index e1a1724a9..2cf8a9f98 100755 --- a/firmware/application/main.cpp +++ b/firmware/application/main.cpp @@ -96,12 +96,6 @@ static spi_bus_t ssp0 = { }; #endif -static bool ui_dirty = true; - -void ui::dirty_event() { - ui_dirty = true; -} - class EventDispatcher { public: EventDispatcher( @@ -316,9 +310,9 @@ private: } void handle_lcd_frame_sync() { - if( ui_dirty ) { + if( ui::is_dirty() ) { paint_widget(top_widget); - ui_dirty = false; + ui::dirty_clear(); } } diff --git a/firmware/common/ui_widget.cpp b/firmware/common/ui_widget.cpp index 866735ba3..6561e51ca 100644 --- a/firmware/common/ui_widget.cpp +++ b/firmware/common/ui_widget.cpp @@ -28,6 +28,20 @@ namespace ui { +static bool ui_dirty = true; + +void dirty_set() { + ui_dirty = true; +} + +void dirty_clear() { + ui_dirty = false; +} + +bool is_dirty() { + return ui_dirty; +} + constexpr size_t to_string_max_length = 16; static char* to_string_dec_uint_internal( @@ -155,7 +169,7 @@ void Widget::set_parent(Widget* const widget) { void Widget::set_dirty() { flags.dirty = true; - dirty_event(); + dirty_set(); } bool Widget::dirty() const { diff --git a/firmware/common/ui_widget.hpp b/firmware/common/ui_widget.hpp index 797083cfd..45b20cada 100644 --- a/firmware/common/ui_widget.hpp +++ b/firmware/common/ui_widget.hpp @@ -37,7 +37,9 @@ namespace ui { -extern void dirty_event(); +void dirty_set(); +void dirty_clear(); +bool is_dirty(); // TODO: Move these somewhere else! // TODO: Allow l=0 to not fill/justify? Already using this way in ui_spectrum.hpp...