diff --git a/Marlin/planner.h b/Marlin/planner.h
index 8ec45f76aba7574c693656ebfc92691c78e482d3..3121f19431d471d870f7798084134b5966b0c3b2 100644
--- a/Marlin/planner.h
+++ b/Marlin/planner.h
@@ -374,7 +374,7 @@ class Planner {
static bool long_move() {
if (blocks_queued()) {
block_t* block = &block_buffer[block_buffer_tail];
- return (block->segment_time > (LCD_UPDATE_THRESHOLD * 1000UL));
+ return block->segment_time > (LCD_UPDATE_THRESHOLD) * 1000UL;
}
else
return true;
diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp
index cd56f607942900c2c8cfb7cabbcf198556ce8fca..7073b912510cf0414bcd4e9a6d014e5488a9052f 100755
--- a/Marlin/ultralcd.cpp
+++ b/Marlin/ultralcd.cpp
@@ -2707,90 +2707,94 @@ void lcd_update() {
}
#endif // ULTIPANEL
- // We arrive here every ~100ms when idling often enough.
- // Instead of tracking the changes simply redraw the Info Screen ~1 time a second.
- static int8_t lcd_status_update_delay = 1; // first update one loop delayed
- #if ENABLED(ENSURE_SMOOTH_MOVES) && ENABLED(ALWAYS_ALLOW_MENU)
- if (planner.long_move()) {
- #endif
- if (
- #if ENABLED(ULTIPANEL)
- currentScreen == lcd_status_screen &&
- #endif
- !lcd_status_update_delay--) {
- lcd_status_update_delay = 9;
- lcdDrawUpdate = LCDVIEW_REDRAW_NOW;
- }
#if ENABLED(ENSURE_SMOOTH_MOVES) && ENABLED(ALWAYS_ALLOW_MENU)
- }
+ #define STATUS_UPDATE_CONDITION planner.long_move()
+ #else
+ #define STATUS_UPDATE_CONDITION true
#endif
-
#if ENABLED(ENSURE_SMOOTH_MOVES) && DISABLED(ALWAYS_ALLOW_MENU)
- if (planner.long_move()) {
+ #define LCD_HANDLER_CONDITION planner.long_move()
+ #else
+ #define LCD_HANDLER_CONDITION true
#endif
- if (lcdDrawUpdate) {
-
- switch (lcdDrawUpdate) {
- case LCDVIEW_CALL_NO_REDRAW:
- lcdDrawUpdate = LCDVIEW_NONE;
- break;
- case LCDVIEW_CLEAR_CALL_REDRAW: // set by handlers, then altered after (rarely occurs here)
- case LCDVIEW_CALL_REDRAW_NEXT: // set by handlers, then altered after (never occurs here?)
- lcdDrawUpdate = LCDVIEW_REDRAW_NOW;
- case LCDVIEW_REDRAW_NOW: // set above, or by a handler through LCDVIEW_CALL_REDRAW_NEXT
- case LCDVIEW_NONE:
- break;
- }
+ // We arrive here every ~100ms when idling often enough.
+ // Instead of tracking the changes simply redraw the Info Screen ~1 time a second.
+ static int8_t lcd_status_update_delay = 1; // first update one loop delayed
+ if (STATUS_UPDATE_CONDITION &&
#if ENABLED(ULTIPANEL)
- #define CURRENTSCREEN() (*currentScreen)(), lcd_clicked = false
- #else
- #define CURRENTSCREEN() lcd_status_screen()
+ currentScreen == lcd_status_screen &&
#endif
+ !lcd_status_update_delay--
+ ) {
+ lcd_status_update_delay = 9;
+ lcdDrawUpdate = LCDVIEW_REDRAW_NOW;
+ }
+
+ if (LCD_HANDLER_CONDITION) {
- #if ENABLED(DOGLCD) // Changes due to different driver architecture of the DOGM display
- static int8_t dot_color = 0;
- dot_color = 1 - dot_color;
- u8g.firstPage();
- do {
- lcd_setFont(FONT_MENU);
- u8g.setPrintPos(125, 0);
- u8g.setColorIndex(dot_color); // Set color for the alive dot
- u8g.drawPixel(127, 63); // draw alive dot
- u8g.setColorIndex(1); // black on white
+ if (lcdDrawUpdate) {
+
+ switch (lcdDrawUpdate) {
+ case LCDVIEW_CALL_NO_REDRAW:
+ lcdDrawUpdate = LCDVIEW_NONE;
+ break;
+ case LCDVIEW_CLEAR_CALL_REDRAW: // set by handlers, then altered after (rarely occurs here)
+ case LCDVIEW_CALL_REDRAW_NEXT: // set by handlers, then altered after (never occurs here?)
+ lcdDrawUpdate = LCDVIEW_REDRAW_NOW;
+ case LCDVIEW_REDRAW_NOW: // set above, or by a handler through LCDVIEW_CALL_REDRAW_NEXT
+ case LCDVIEW_NONE:
+ break;
+ } // switch
+
+ #if ENABLED(ULTIPANEL)
+ #define CURRENTSCREEN() (*currentScreen)(), lcd_clicked = false
+ #else
+ #define CURRENTSCREEN() lcd_status_screen()
+ #endif
+
+ #if ENABLED(DOGLCD) // Changes due to different driver architecture of the DOGM display
+ static int8_t dot_color = 0;
+ dot_color = 1 - dot_color;
+ u8g.firstPage();
+ do {
+ lcd_setFont(FONT_MENU);
+ u8g.setPrintPos(125, 0);
+ u8g.setColorIndex(dot_color); // Set color for the alive dot
+ u8g.drawPixel(127, 63); // draw alive dot
+ u8g.setColorIndex(1); // black on white
+ CURRENTSCREEN();
+ } while (u8g.nextPage());
+ #else
CURRENTSCREEN();
- } while (u8g.nextPage());
- #else
- CURRENTSCREEN();
- #endif
- }
+ #endif
+ }
- #if ENABLED(ULTIPANEL)
+ #if ENABLED(ULTIPANEL)
- // Return to Status Screen after a timeout
- if (currentScreen == lcd_status_screen || defer_return_to_status)
- return_to_status_ms = ms + LCD_TIMEOUT_TO_STATUS;
- else if (ELAPSED(ms, return_to_status_ms))
- lcd_return_to_status();
+ // Return to Status Screen after a timeout
+ if (currentScreen == lcd_status_screen || defer_return_to_status)
+ return_to_status_ms = ms + LCD_TIMEOUT_TO_STATUS;
+ else if (ELAPSED(ms, return_to_status_ms))
+ lcd_return_to_status();
- #endif // ULTIPANEL
+ #endif // ULTIPANEL
- switch (lcdDrawUpdate) {
- case LCDVIEW_CLEAR_CALL_REDRAW:
- lcd_implementation_clear();
- case LCDVIEW_CALL_REDRAW_NEXT:
- lcdDrawUpdate = LCDVIEW_REDRAW_NOW;
- break;
- case LCDVIEW_REDRAW_NOW:
- lcdDrawUpdate = LCDVIEW_NONE;
- break;
- case LCDVIEW_NONE:
- break;
- }
+ switch (lcdDrawUpdate) {
+ case LCDVIEW_CLEAR_CALL_REDRAW:
+ lcd_implementation_clear();
+ case LCDVIEW_CALL_REDRAW_NEXT:
+ lcdDrawUpdate = LCDVIEW_REDRAW_NOW;
+ break;
+ case LCDVIEW_REDRAW_NOW:
+ lcdDrawUpdate = LCDVIEW_NONE;
+ break;
+ case LCDVIEW_NONE:
+ break;
+ } // switch
+
+ } // LCD_HANDLER_CONDITION
- #if ENABLED(ENSURE_SMOOTH_MOVES) && DISABLED(ALWAYS_ALLOW_MENU)
- }
- #endif
}
}