Skip to content

Commit ea40e3a

Browse files
Copilotgullradriel
andauthored
Remove dead _previous_frequency state from BigFrequency widget (#3294)
* Initial plan * Remove unused _previous_frequency member from BigFrequency and remove paint() guard Co-authored-by: gullradriel <3157857+gullradriel@users.noreply.github.com> * Move frequency dirty-check to set() to avoid redundant repaints Co-authored-by: gullradriel <3157857+gullradriel@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: gullradriel <3157857+gullradriel@users.noreply.github.com>
1 parent 86584fe commit ea40e3a

2 files changed

Lines changed: 48 additions & 55 deletions

File tree

firmware/common/ui_widget.cpp

Lines changed: 48 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -564,16 +564,14 @@ void LiveDateTime::set_seconds_enabled(bool new_value) {
564564

565565
/* BigFrequency **********************************************************/
566566

567-
BigFrequency::BigFrequency(
568-
Rect parent_rect,
569-
rf::Frequency frequency)
570-
: Widget{parent_rect},
571-
_frequency{frequency} {
572-
}
567+
BigFrequency::BigFrequency(Rect parent_rect, rf::Frequency frequency)
568+
: Widget{parent_rect}, _frequency{frequency} {}
573569

574570
void BigFrequency::set(const rf::Frequency frequency) {
575-
_frequency = frequency;
576-
set_dirty();
571+
if (_frequency != frequency) {
572+
_frequency = frequency;
573+
set_dirty();
574+
}
577575
}
578576

579577
void BigFrequency::paint(Painter& painter) {
@@ -583,64 +581,60 @@ void BigFrequency::paint(Painter& painter) {
583581
Point digit_pos;
584582
ui::Color segment_color;
585583

586-
if (_frequency != _previous_frequency) {
587-
_previous_frequency = _frequency;
588-
589-
rf::Frequency frequency{_frequency};
590-
const auto rect = screen_rect(); // why not use screen_rect() directly for width, ...? it may be too small, but ...
584+
rf::Frequency frequency{_frequency};
585+
const auto rect = screen_rect(); // why not use screen_rect() directly for width, ...? it may be too small, but ...
591586

592-
// Erase
593-
painter.fill_rectangle(
594-
{{0, rect.location().y()}, {screen_width, 52}},
595-
Theme::getInstance()->bg_darkest->background);
596-
597-
// Prepare digits
598-
if (!frequency) {
599-
digits.fill(10); // ----.---
600-
digit_pos = {(screen_width - ((7 * digit_width) + 8)) / 2, rect.location().y()};
601-
} else {
602-
frequency /= 1000; // GMMM.KKK(uuu)
587+
// Erase
588+
painter.fill_rectangle(
589+
{{0, rect.location().y()}, {screen_width, 52}},
590+
Theme::getInstance()->bg_darkest->background);
603591

604-
for (i = 0; i < 7; i++) {
605-
digits[6 - i] = frequency % 10;
606-
frequency /= 10;
607-
}
592+
// Prepare digits
593+
if (!frequency) {
594+
digits.fill(10); // ----.---
595+
digit_pos = {(screen_width - ((7 * digit_width) + 8)) / 2, rect.location().y()};
596+
} else {
597+
frequency /= 1000; // GMMM.KKK(uuu)
608598

609-
// Remove leading zeros
610-
for (i = 0; i < 3; i++) {
611-
if (!digits[i])
612-
digits[i] = 16; // "Don't draw" code
613-
else
614-
break;
615-
}
599+
for (i = 0; i < 7; i++) {
600+
digits[6 - i] = frequency % 10;
601+
frequency /= 10;
602+
}
616603

617-
digit_pos = {(Coord)(screen_width - ((7 * digit_width) + 8) - (i * digit_width)) / 2, rect.location().y()};
604+
// Remove leading zeros
605+
for (i = 0; i < 3; i++) {
606+
if (!digits[i])
607+
digits[i] = 16; // "Don't draw" code
608+
else
609+
break;
618610
}
619611

620-
segment_color = style().foreground;
612+
digit_pos = {(Coord)(screen_width - ((7 * digit_width) + 8) - (i * digit_width)) / 2, rect.location().y()};
613+
}
621614

622-
// Draw
623-
for (i = 0; i < 7; i++) {
624-
digit = digits[i];
615+
segment_color = style().foreground;
625616

626-
if (digit < 16) {
627-
digit_def = segment_font[(uint8_t)digit];
617+
// Draw
618+
for (i = 0; i < 7; i++) {
619+
digit = digits[i];
628620

629-
for (size_t s = 0; s < 7; s++) {
630-
if (digit_def & 1)
631-
painter.fill_rectangle({digit_pos + segments[s].location(), segments[s].size()}, segment_color);
632-
digit_def >>= 1;
633-
}
634-
}
621+
if (digit < 16) {
622+
digit_def = segment_font[(uint8_t)digit];
635623

636-
if (i == 3) {
637-
// Dot
638-
painter.fill_rectangle({digit_pos + Point(34, 48), {4, 4}}, segment_color);
639-
digit_pos += {(digit_width + 8), 0};
640-
} else {
641-
digit_pos += {digit_width, 0};
624+
for (size_t s = 0; s < 7; s++) {
625+
if (digit_def & 1)
626+
painter.fill_rectangle({digit_pos + segments[s].location(), segments[s].size()}, segment_color);
627+
digit_def >>= 1;
642628
}
643629
}
630+
631+
if (i == 3) {
632+
// Dot
633+
painter.fill_rectangle({digit_pos + Point(34, 48), {4, 4}}, segment_color);
634+
digit_pos += {(digit_width + 8), 0};
635+
} else {
636+
digit_pos += {digit_width, 0};
637+
}
644638
}
645639
}
646640

firmware/common/ui_widget.hpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,6 @@ class BigFrequency : public Widget {
297297

298298
private:
299299
rf::Frequency _frequency;
300-
rf::Frequency _previous_frequency{~0LL};
301300

302301
static constexpr Dim digit_width = 32;
303302

0 commit comments

Comments
 (0)