Alex Voinea před 2 roky
rodič
revize
83c9e946e4
1 změnil soubory, kde provedl 6 přidání a 0 odebrání
  1. 6 0
      Firmware/ultralcd.cpp

+ 6 - 0
Firmware/ultralcd.cpp

@@ -823,6 +823,7 @@ void print_stop();
 
 void lcd_commands()
 {
+    // printf_P(PSTR("lcd_commands begin, lcd_commands_type=%u, lcd_commands_step=%u\n"), (uint8_t)lcd_commands_type, lcd_commands_step);
     if (planner_aborted) {
         // we are still within an aborted command. do not process any LCD command until we return
         return;
@@ -1016,7 +1017,10 @@ void lcd_commands()
                 lcd_commands_step = 3;
                 break;
             case 3:
+                lcd_update_enabled = false; //hack to avoid lcd_update recursion.
                 lcd_show_fullscreen_message_and_wait_P(_T(MSG_NOZZLE_CNG_READ_HELP));
+                lcd_update_enabled = true;
+                lcd_draw_update = 2; //force lcd clear and update after the stack unwinds.
                 enquecommand_P(PSTR("G28W"));
                 enquecommand_P(PSTR("G1 X125 Y10 Z150 F1000"));
                 enquecommand_P(PSTR("M109 S280"));
@@ -1033,6 +1037,7 @@ void lcd_commands()
                 //|tightend to specs?
                 //| Yes     No
                 enquecommand_P(PSTR("M84 XY"));
+                lcd_update_enabled = false; //hack to avoid lcd_update recursion.
                 if (lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_NOZZLE_CNG_CHANGED), false) == LCD_LEFT_BUTTON_CHOICE) {
 #ifdef TEMP_MODEL
                 //enquecommand_P(PSTR("M310 S1"));
@@ -1042,6 +1047,7 @@ void lcd_commands()
                 setTargetHotendSafe(0,0);
                 lcd_commands_step = 1;
                 }
+                lcd_update_enabled = true;
                 break;
             case 1:
                 lcd_setstatuspgm(MSG_WELCOME);