From d1df2828a753ffcc3f662a131b13586867843f48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Andr=C3=A9=20Santoni?= Date: Mon, 20 Oct 2014 20:00:10 +0200 Subject: [PATCH] (Menu) Cache the lists and pointers on OK and CANCEL --- frontend/menu/backend/menu_common_backend.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/frontend/menu/backend/menu_common_backend.c b/frontend/menu/backend/menu_common_backend.c index f8cafa1d66..fc4caaaa4a 100644 --- a/frontend/menu/backend/menu_common_backend.c +++ b/frontend/menu/backend/menu_common_backend.c @@ -223,6 +223,11 @@ static int menu_settings_iterate(unsigned action, break; case MENU_ACTION_CANCEL: +#ifdef HAVE_XMB + file_list_copy(driver.menu->menu_list->selection_buf, driver.menu->menu_list->selection_buf_old); + file_list_copy(driver.menu->menu_list->menu_stack, driver.menu->menu_list->menu_stack_old); + driver.menu->selection_ptr_old = driver.menu->selection_ptr; +#endif apply_deferred_settings(); menu_list_pop_stack(driver.menu->menu_list); break; @@ -231,6 +236,11 @@ static int menu_settings_iterate(unsigned action, 0, driver.menu->selection_ptr); break; case MENU_ACTION_OK: +#ifdef HAVE_XMB + file_list_copy(driver.menu->menu_list->selection_buf, driver.menu->menu_list->selection_buf_old); + file_list_copy(driver.menu->menu_list->menu_stack, driver.menu->menu_list->menu_stack_old); + driver.menu->selection_ptr_old = driver.menu->selection_ptr; +#endif if (cbs && cbs->action_ok) return cbs->action_ok(path, label, type, driver.menu->selection_ptr); /* fall-through */ @@ -635,10 +645,20 @@ static int menu_common_iterate(unsigned action) break; case MENU_ACTION_CANCEL: +#ifdef HAVE_XMB + file_list_copy(driver.menu->menu_list->selection_buf, driver.menu->menu_list->selection_buf_old); + file_list_copy(driver.menu->menu_list->menu_stack, driver.menu->menu_list->menu_stack_old); + driver.menu->selection_ptr_old = driver.menu->selection_ptr; +#endif menu_list_pop_stack(driver.menu->menu_list); break; case MENU_ACTION_OK: +#ifdef HAVE_XMB + file_list_copy(driver.menu->menu_list->selection_buf, driver.menu->menu_list->selection_buf_old); + file_list_copy(driver.menu->menu_list->menu_stack, driver.menu->menu_list->menu_stack_old); + driver.menu->selection_ptr_old = driver.menu->selection_ptr; +#endif ret = menu_action_ok(cbs); break;