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.
This commit is contained in:
Yuri D'Elia 2021-04-21 16:56:16 +02:00
parent 10de97c042
commit bc355674d9

View File

@ -2201,15 +2201,16 @@ void mFilamentItem(uint16_t nTemp, uint16_t nTempBed)
} }
else else
{ {
lcd_set_cursor(0, 0);
lcdui_print_temp(LCD_STR_THERMOMETER[0], (int) degHotend(0), (int) degTargetHotend(0));
if (!bFilamentWaitingFlag) if (!bFilamentWaitingFlag)
{ {
// First run after the filament preheat selection: // First run after the filament preheat selection:
// setup the fixed LCD parts and raise Z as we wait // setup the fixed LCD parts and raise Z as we wait
bFilamentWaitingFlag = true; 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); lcd_set_cursor(0, 1);
switch (eFilamentAction) switch (eFilamentAction)
{ {
@ -2236,9 +2237,11 @@ void mFilamentItem(uint16_t nTemp, uint16_t nTempBed)
// handled earlier // handled earlier
break; 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()) if (lcd_clicked())
{ {
bFilamentWaitingFlag = false; bFilamentWaitingFlag = false;