From 841d6010a501eaf5f320be9346d1d84f8944674a Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 5 Dec 2015 13:04:21 +0100 Subject: [PATCH] Create RARCH_MENU_CTL_DEINIT --- driver.c | 5 +---- menu/menu_driver.c | 5 +++++ menu/menu_driver.h | 1 + 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/driver.c b/driver.c index 46426e8c2a..b5154ae7a7 100644 --- a/driver.c +++ b/driver.c @@ -442,10 +442,7 @@ void uninit_drivers(int flags) menu_driver_context_destroy(); if (!menu_driver_ctl(RARCH_MENU_CTL_OWNS_DRIVER, NULL)) - { - menu_free(driver->menu); - driver->menu = NULL; - } + menu_driver_ctl(RARCH_MENU_CTL_DEINIT, NULL); } #endif diff --git a/menu/menu_driver.c b/menu/menu_driver.c index e79f8ffd7e..905c9512f1 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -377,6 +377,7 @@ int menu_driver_pointer_tap(unsigned x, unsigned y, unsigned ptr, bool menu_driver_ctl(enum rarch_menu_ctl_state state, void *data) { static bool menu_driver_data_own = false; + driver_t *driver = driver_get_ptr(); switch (state) { @@ -388,6 +389,10 @@ bool menu_driver_ctl(enum rarch_menu_ctl_state state, void *data) break; case RARCH_MENU_CTL_OWNS_DRIVER: return menu_driver_data_own; + case RARCH_MENU_CTL_DEINIT: + menu_free(driver->menu); + driver->menu = NULL; + break; default: case RARCH_MENU_CTL_NONE: break; diff --git a/menu/menu_driver.h b/menu/menu_driver.h index edb41d7335..2cbea942f4 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -65,6 +65,7 @@ typedef enum enum rarch_menu_ctl_state { RARCH_MENU_CTL_NONE = 0, + RARCH_MENU_CTL_DEINIT, RARCH_MENU_CTL_SET_OWN_DRIVER, RARCH_MENU_CTL_UNSET_OWN_DRIVER, RARCH_MENU_CTL_OWNS_DRIVER