From bfe7fbe5c0aa02047aac6a573c331cdb886b5d40 Mon Sep 17 00:00:00 2001
From: Scott Lahteine <github@thinkyhead.com>
Date: Sun, 4 Jun 2017 17:00:11 -0500
Subject: [PATCH] Maintain message scroll rate
---
Marlin/ultralcd_impl_DOGM.h | 13 +++++++++----
Marlin/ultralcd_impl_HD44780.h | 12 ++++++++----
2 files changed, 17 insertions(+), 8 deletions(-)
diff --git a/Marlin/ultralcd_impl_DOGM.h b/Marlin/ultralcd_impl_DOGM.h
index 80f2c4a473..89fbdf3d98 100644
--- a/Marlin/ultralcd_impl_DOGM.h
+++ b/Marlin/ultralcd_impl_DOGM.h
@@ -406,12 +406,17 @@ FORCE_INLINE void _draw_axis_label(const AxisEnum axis, const char* const pstr,
inline void lcd_implementation_status_message() {
#if ENABLED(STATUS_MESSAGE_SCROLLING)
+ static bool last_blink = false;
lcd_print_utf(lcd_status_message + status_scroll_pos);
const uint8_t slen = lcd_strlen(lcd_status_message);
if (slen > LCD_WIDTH) {
- // Skip any non-printing bytes
- while (!PRINTABLE(lcd_status_message[status_scroll_pos++])) { /* nada */ }
- if (status_scroll_pos > slen - LCD_WIDTH) status_scroll_pos = 0;
+ const bool new_blink = lcd_blink();
+ if (last_blink != new_blink) {
+ last_blink = new_blink;
+ // Skip any non-printing bytes
+ while (!PRINTABLE(lcd_status_message[status_scroll_pos])) status_scroll_pos++;
+ if (++status_scroll_pos > slen - LCD_WIDTH) status_scroll_pos = 0;
+ }
}
#else
lcd_print_utf(lcd_status_message);
@@ -422,7 +427,7 @@ inline void lcd_implementation_status_message() {
static void lcd_implementation_status_screen() {
- bool blink = lcd_blink();
+ const bool blink = lcd_blink();
// Status Menu Font
lcd_setFont(FONT_STATUSMENU);
diff --git a/Marlin/ultralcd_impl_HD44780.h b/Marlin/ultralcd_impl_HD44780.h
index 9192912a8a..866bfd62b7 100644
--- a/Marlin/ultralcd_impl_HD44780.h
+++ b/Marlin/ultralcd_impl_HD44780.h
@@ -655,7 +655,7 @@ Possible status screens:
|01234567890123456789|
*/
static void lcd_implementation_status_screen() {
- bool blink = lcd_blink();
+ const bool blink = lcd_blink();
//
// Line 1
@@ -825,12 +825,16 @@ static void lcd_implementation_status_screen() {
#endif // FILAMENT_LCD_DISPLAY && SDSUPPORT
#if ENABLED(STATUS_MESSAGE_SCROLLING)
+ static bool last_blink = false;
lcd_print_utf(lcd_status_message + status_scroll_pos);
const uint8_t slen = lcd_strlen(lcd_status_message);
if (slen > LCD_WIDTH) {
- // Skip any non-printing bytes
- while (!PRINTABLE(lcd_status_message[status_scroll_pos++])) { /* nada */ }
- if (status_scroll_pos > slen - LCD_WIDTH) status_scroll_pos = 0;
+ if (last_blink != blink) {
+ last_blink = blink;
+ // Skip any non-printing bytes
+ while (!PRINTABLE(lcd_status_message[status_scroll_pos])) status_scroll_pos++;
+ if (++status_scroll_pos > slen - LCD_WIDTH) status_scroll_pos = 0;
+ }
}
#else
lcd_print_utf(lcd_status_message);
--
GitLab