From bc355674d943e61c32ddc51ca6159abf54737673 Mon Sep 17 00:00:00 2001 From: Yuri D'Elia Date: Wed, 21 Apr 2021 16:56:16 +0200 Subject: [PATCH] Fix partial redraw during filament autoload If the printer was already being pre-heated but didn't reach the target temperature yet and a new filament is being inserted, the LCD used to display a "Preheating to load" message to block the loading until the extruder is hot. This message is currently missing, and the ">Cancel" option doesn't display immediately either, depending on the extruder height. This PR fixes this behavior, which was broken during an earlier update. We now force-update LCD updates during the first (and _only_) time the screen is setup, and push all messages _before_ the carriage is eventually raised, so that ">Cancel" is shown immediately as well. --- Firmware/ultralcd.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 3e765a5c..3dea40b4 100755 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -2201,15 +2201,16 @@ void mFilamentItem(uint16_t nTemp, uint16_t nTempBed) } else { - lcd_set_cursor(0, 0); - lcdui_print_temp(LCD_STR_THERMOMETER[0], (int) degHotend(0), (int) degTargetHotend(0)); - if (!bFilamentWaitingFlag) { // First run after the filament preheat selection: // setup the fixed LCD parts and raise Z as we wait bFilamentWaitingFlag = true; + lcd_clear(); + lcd_draw_update = 1; + lcd_puts_at_P(0, 3, _i(">Cancel")); ////MSG_ c=20 r=1 + lcd_set_cursor(0, 1); switch (eFilamentAction) { @@ -2236,9 +2237,11 @@ void mFilamentItem(uint16_t nTemp, uint16_t nTempBed) // handled earlier break; } - lcd_puts_at_P(0, 3, _i(">Cancel")); ////MSG_ c=20 r=1 } + lcd_set_cursor(0, 0); + lcdui_print_temp(LCD_STR_THERMOMETER[0], (int) degHotend(0), (int) degTargetHotend(0)); + if (lcd_clicked()) { bFilamentWaitingFlag = false;