From 1f26fcd3a8000316cd9550d4a62dec7e80cebbcb Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Sun, 7 Jun 2020 01:19:21 +0200 Subject: [PATCH] Fixed fullRedraw for StatusDisplay and MenuDisplay --- src/displays/statusdisplay.h | 31 ++++++++++++++----------------- src/menudisplay.h | 3 ++- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/src/displays/statusdisplay.h b/src/displays/statusdisplay.h index 860a80c..3ec84eb 100644 --- a/src/displays/statusdisplay.h +++ b/src/displays/statusdisplay.h @@ -48,8 +48,6 @@ private: void redraw(const Controller &controller); private: - void drawWarning(); - class MotorStatus { public: @@ -72,7 +70,8 @@ private: const int m_y; - bool m_lastFeedbackValid{}; + bool m_initialRedraw; + bool m_lastFeedbackValid; Label m_labelLeftPwm; Label m_labelRightPwm; @@ -184,7 +183,7 @@ void StatusDisplay::BoardStatus::start() tft.drawString("pwm:", 0, m_y); m_labelLeftPwm.start(); m_labelRightPwm.start(); - drawWarning(); + m_initialRedraw = true; } void StatusDisplay::BoardStatus::redraw(const Controller &controller) @@ -194,7 +193,7 @@ void StatusDisplay::BoardStatus::redraw(const Controller &controller) m_labelLeftPwm.redraw(String{controller.command.left.pwm}); m_labelRightPwm.redraw(String{controller.command.right.pwm}); - if (controller.feedbackValid != m_lastFeedbackValid) + if (controller.feedbackValid != m_lastFeedbackValid || m_initialRedraw) { tft.fillRect(0, m_y+25, tft.width(), 75, TFT_BLACK); @@ -214,9 +213,18 @@ void StatusDisplay::BoardStatus::redraw(const Controller &controller) tft.setTextColor(TFT_WHITE, TFT_BLACK); } else - drawWarning(); + { + tft.setTextColor(TFT_RED); + tft.drawString("No data!", 60, m_y+50, 4); + tft.setTextColor(TFT_WHITE, TFT_BLACK); + + tft.setSwapBytes(!settings.boardcomputerHardware.swapScreenBytes); + tft.pushImage(10, m_y+40, icons::alert.WIDTH, icons::alert.HEIGHT, icons::alert.buffer); + tft.setSwapBytes(settings.boardcomputerHardware.swapScreenBytes); + } m_lastFeedbackValid = controller.feedbackValid; + m_initialRedraw = false; } if (controller.feedbackValid) @@ -228,17 +236,6 @@ void StatusDisplay::BoardStatus::redraw(const Controller &controller) } } -void StatusDisplay::BoardStatus::drawWarning() -{ - tft.setTextColor(TFT_RED); - tft.drawString("No data!", 60, m_y+50, 4); - tft.setTextColor(TFT_WHITE, TFT_BLACK); - - tft.setSwapBytes(!settings.boardcomputerHardware.swapScreenBytes); - tft.pushImage(10, m_y+40, icons::alert.WIDTH, icons::alert.HEIGHT, icons::alert.buffer); - tft.setSwapBytes(settings.boardcomputerHardware.swapScreenBytes); -} - void StatusDisplay::BoardStatus::MotorStatus::start() { m_labelError.start(); diff --git a/src/menudisplay.h b/src/menudisplay.h index 62babea..b522330 100644 --- a/src/menudisplay.h +++ b/src/menudisplay.h @@ -73,7 +73,6 @@ void MenuDisplay::start() { m_selectedIndex = 0; m_scrollOffset = 0; - m_highlightedIndex = -1; m_rotateOffset = 0; m_pressed = false; @@ -94,6 +93,8 @@ void MenuDisplay::initScreen() }); m_icons.fill(nullptr); + + m_highlightedIndex = -1; } void MenuDisplay::update()