Forbid LcdUpdateDisabler to call lcd_update()
The fixes a scenario where: lcd_status_screen() calls lcd_commands() upon exiting lcd_show_fullscreen_message_and_wait_P(_T(MSG_NOZZLE_CNG_READ_HELP)); and so not allowing the user to leave the screen since it will keep being rendered endlessly. This change only affects lcd_show_fullscreen_message_and_wait_P
This commit is contained in:
parent
f96cc2f400
commit
25a11bb7d7
|
|
@ -111,18 +111,18 @@ extern void lcd_buttons_update(void);
|
||||||
//! When constructed (on stack), original state state of lcd_update_enabled is stored
|
//! When constructed (on stack), original state state of lcd_update_enabled is stored
|
||||||
//! and LCD updates are disabled.
|
//! and LCD updates are disabled.
|
||||||
//! When destroyed (gone out of scope), original state of LCD update is restored.
|
//! When destroyed (gone out of scope), original state of LCD update is restored.
|
||||||
//! It has zero overhead compared to storing bool saved = lcd_update_enabled
|
//! Do not call lcd_update_enable() to prevent calling lcd_update() in sensitive code.
|
||||||
//! and calling lcd_update_enable(false) and lcd_update_enable(saved).
|
//! in certain scenarios it will cause recursion e.g. in the menus.
|
||||||
class LcdUpdateDisabler
|
class LcdUpdateDisabler
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
LcdUpdateDisabler(): m_updateEnabled(lcd_update_enabled)
|
LcdUpdateDisabler(): m_updateEnabled(lcd_update_enabled)
|
||||||
{
|
{
|
||||||
lcd_update_enable(false);
|
lcd_update_enabled = false;
|
||||||
}
|
}
|
||||||
~LcdUpdateDisabler()
|
~LcdUpdateDisabler()
|
||||||
{
|
{
|
||||||
lcd_update_enable(m_updateEnabled);
|
lcd_update_enabled = m_updateEnabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue