From bbb724e8f04738eb28052bcaacda33fa006d66df Mon Sep 17 00:00:00 2001 From: Patrick Horlebein Date: Mon, 6 Apr 2020 17:39:05 +0200 Subject: [PATCH] Only play navigation animation when menus changed --- workspace/TS100/Core/Src/gui.cpp | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/workspace/TS100/Core/Src/gui.cpp b/workspace/TS100/Core/Src/gui.cpp index f2a67f55..0d57f3e4 100644 --- a/workspace/TS100/Core/Src/gui.cpp +++ b/workspace/TS100/Core/Src/gui.cpp @@ -823,6 +823,8 @@ void gui_Menu(const menuitem *menu) { int16_t lastOffset = -1; bool lcdRefresh = true; ButtonState lastButtonState = BUTTON_NONE; + static bool enterGUIMenu = true; + enterGUIMenu = true; if (menu[currentScreen].draw.func != NULL) { uint8_t secondFrameBuffer[OLED_WIDTH * 2]; @@ -882,14 +884,18 @@ void gui_Menu(const menuitem *menu) { // increment if (descriptionStart == 0) { if (menu[currentScreen].incrementHandler.func != NULL) { + enterGUIMenu = false; menu[currentScreen].incrementHandler.func(); - // MARK: Might jump in submenu here - OLED::use_second_buffer(); - OLED::setFont(0); - OLED::setCursor(0, 0); - OLED::clearScreen(); - menu[currentScreen].draw.func(); - OLED::presentSecondScreenBufferAnimatedBack(); + + if (enterGUIMenu) { + uint8_t secondFrameBuffer[OLED_WIDTH * 2]; + OLED::set_framebuffer(secondFrameBuffer); + OLED::setFont(0); + OLED::setCursor(0, 0); + OLED::clearScreen(); + menu[currentScreen].draw.func(); + OLED::presentSecondScreenBufferAnimatedBack(); + } } else { earlyExit = true; }