diff --git a/frontend/menu/disp/lakka.c b/frontend/menu/disp/lakka.c index ebc113e278..fb3e5b17cb 100644 --- a/frontend/menu/disp/lakka.c +++ b/frontend/menu/disp/lakka.c @@ -695,7 +695,7 @@ static void lakka_free(void *data) free((uint8_t*)rgui->font); } -int lakka_input_postprocess(void *data, uint64_t old_state) +static int lakka_input_postprocess(void *data, uint64_t old_state) { (void)data; @@ -723,5 +723,6 @@ const menu_ctx_driver_t menu_ctx_lakka = { lakka_free_assets, NULL, NULL, + lakka_input_postprocess, "lakka", }; diff --git a/frontend/menu/disp/rgui.c b/frontend/menu/disp/rgui.c index 0a549af03d..59082ee441 100644 --- a/frontend/menu/disp/rgui.c +++ b/frontend/menu/disp/rgui.c @@ -571,7 +571,7 @@ static void rgui_free(void *data) free((uint8_t*)rgui->font); } -int rgui_input_postprocess(void *data, uint64_t old_state) +static int rgui_input_postprocess(void *data, uint64_t old_state) { (void)data; @@ -607,5 +607,6 @@ const menu_ctx_driver_t menu_ctx_rgui = { NULL, NULL, NULL, + rgui_input_postprocess, "rgui", }; diff --git a/frontend/menu/disp/rmenu.c b/frontend/menu/disp/rmenu.c index 4a5170415b..470450e5ac 100644 --- a/frontend/menu/disp/rmenu.c +++ b/frontend/menu/disp/rmenu.c @@ -442,7 +442,7 @@ static void rmenu_free(void *data) rmenu_free_assets(data); } -int rgui_input_postprocess(void *data, uint64_t old_state) +static int rmenu_input_postprocess(void *data, uint64_t old_state) { (void)data; @@ -470,5 +470,6 @@ const menu_ctx_driver_t menu_ctx_rmenu = { rmenu_free_assets, NULL, NULL, + rmenu_input_postprocess, "rmenu", }; diff --git a/frontend/menu/disp/rmenu_xui.cpp b/frontend/menu/disp/rmenu_xui.cpp index 508d5cf142..ba1991348f 100644 --- a/frontend/menu/disp/rmenu_xui.cpp +++ b/frontend/menu/disp/rmenu_xui.cpp @@ -1447,7 +1447,7 @@ bool menu_iterate_xui(void) return true; } -int rgui_input_postprocess(void *data, uint64_t old_state) +static int rmenu_xui_input_postprocess(void *data, uint64_t old_state) { rgui_handle_t *rgui = (rgui_handle_t*)data; bool quit = false; @@ -1486,5 +1486,6 @@ const menu_ctx_driver_t menu_ctx_rmenu_xui = { NULL, rmenu_xui_populate_entries, rmenu_xui_iterate, + rmenu_xui_input_postprocess, "rmenu_xui", }; diff --git a/frontend/menu/menu_common.c b/frontend/menu/menu_common.c index 6c979de040..8bd0e42fda 100644 --- a/frontend/menu/menu_common.c +++ b/frontend/menu/menu_common.c @@ -1408,8 +1408,10 @@ bool menu_iterate(void) static bool initial_held = true; static bool first_held = false; uint64_t input_state = 0; - int input_entry_ret = 0; - int ret; + int32_t input_entry_ret, ret; + + input_entry_ret = 0; + ret = 0; if (g_extern.lifecycle_state & (1ULL << MODE_MENU_PREINIT)) { @@ -1507,7 +1509,8 @@ bool menu_iterate(void) driver.video_poke->set_texture_enable(driver.video_data, false, MENU_TEXTURE_FULLSCREEN); - ret = rgui_input_postprocess(rgui, rgui->old_input_state); + if (menu_ctx && menu_ctx->input_postprocess) + ret = menu_ctx->input_postprocess(rgui, rgui->old_input_state); if (ret < 0) { diff --git a/frontend/menu/menu_common.h b/frontend/menu/menu_common.h index 8c2521c15e..de520c1611 100644 --- a/frontend/menu/menu_common.h +++ b/frontend/menu/menu_common.h @@ -397,8 +397,6 @@ void menu_init(void); bool menu_iterate(void); void menu_free(void); -int rgui_input_postprocess(void *data, uint64_t old_state); - #ifdef HAVE_SHADER_MANAGER void shader_manager_init(void *data); void shader_manager_get_str(struct gfx_shader *shader, diff --git a/frontend/menu/menu_context.h b/frontend/menu/menu_context.h index 0c8f3a557b..da634f07d7 100644 --- a/frontend/menu/menu_context.h +++ b/frontend/menu/menu_context.h @@ -35,6 +35,7 @@ typedef struct menu_ctx_driver void (*free_assets)(void*); void (*populate_entries)(void*, unsigned); void (*iterate)(void*, unsigned); + int (*input_postprocess)(void *, uint64_t); // Human readable string. const char *ident;