diff --git a/menu/menu_display.c b/menu/menu_display.c index 14d879e1a6..2993c2137e 100644 --- a/menu/menu_display.c +++ b/menu/menu_display.c @@ -22,6 +22,14 @@ #include "../gfx/video_context_driver.h" #include "menu_list.h" +bool menu_display_fb_in_use(void) +{ + menu_handle_t *menu = menu_driver_get_ptr(); + if (!menu) + return false; + return menu->frame_buf.data != NULL; +} + bool menu_display_update_pending(void) { menu_handle_t *menu = menu_driver_get_ptr(); diff --git a/menu/menu_display.h b/menu/menu_display.h index c80ffd6d9c..7b218b8911 100644 --- a/menu/menu_display.h +++ b/menu/menu_display.h @@ -27,6 +27,8 @@ extern "C" { void menu_display_fb(void); +bool menu_display_fb_in_use(void); + void menu_display_free(menu_handle_t *menu); bool menu_display_init(menu_handle_t *menu); diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 59df4d13b6..704bd2f2e8 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -1843,6 +1843,8 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) case DISPLAYLIST_HELP: menu_list_push(info->list, info->path, info->label, info->type, info->directory_ptr); menu->push_start_screen = false; + if (menu_display_fb_in_use()) + menu->framebuf.dirty = true; break; case DISPLAYLIST_MAIN_MENU: case DISPLAYLIST_SETTINGS: diff --git a/menu/menu_entries_cbs_iterate.c b/menu/menu_entries_cbs_iterate.c index 066d754b72..64e6065792 100644 --- a/menu/menu_entries_cbs_iterate.c +++ b/menu/menu_entries_cbs_iterate.c @@ -16,6 +16,7 @@ #include #include #include "menu.h" +#include "menu_display.h" #include "menu_entry.h" #include "menu_entries_cbs.h" #include "menu_setting.h" diff --git a/menu/menu_entries_cbs_ok.c b/menu/menu_entries_cbs_ok.c index 2812db33de..0ab8613d62 100644 --- a/menu/menu_entries_cbs_ok.c +++ b/menu/menu_entries_cbs_ok.c @@ -15,6 +15,7 @@ #include #include "menu.h" +#include "menu_display.h" #include "menu_entries_cbs.h" #include "menu_setting.h" #include "menu_shader.h" @@ -1264,7 +1265,6 @@ static int action_ok_help(const char *path, if (!menu || !menu_list) return -1; - info.list = menu_list->menu_stack; strlcpy(info.label, "help", sizeof(info.label));