From 8fe6a04b56f13f1e7c0112072c64f8b90a2c86d4 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 19 Nov 2013 06:09:14 +0100 Subject: [PATCH] (Menu) Add populate_entries to menu_ctx_driver - will be needed for RMenu XUI --- frontend/menu/disp/rgui.c | 1 + frontend/menu/disp/rmenu.c | 1 + frontend/menu/menu_common.c | 3 ++ frontend/menu/menu_context.h | 1 + frontend/menu/rmenu_xui.cpp | 91 +++++++++++++++++++----------------- 5 files changed, 53 insertions(+), 44 deletions(-) diff --git a/frontend/menu/disp/rgui.c b/frontend/menu/disp/rgui.c index c6ebc08e65..7851ad2ae1 100644 --- a/frontend/menu/disp/rgui.c +++ b/frontend/menu/disp/rgui.c @@ -581,5 +581,6 @@ const menu_ctx_driver_t menu_ctx_rgui = { rgui_free, NULL, NULL, + NULL, "rgui", }; diff --git a/frontend/menu/disp/rmenu.c b/frontend/menu/disp/rmenu.c index 63d24b0c85..ea0405cb5f 100644 --- a/frontend/menu/disp/rmenu.c +++ b/frontend/menu/disp/rmenu.c @@ -476,5 +476,6 @@ const menu_ctx_driver_t menu_ctx_rmenu = { rmenu_free, rmenu_init_assets, rmenu_free_assets, + NULL, "rmenu", }; diff --git a/frontend/menu/menu_common.c b/frontend/menu/menu_common.c index 7e12e4b4be..33939fd9d3 100644 --- a/frontend/menu/menu_common.c +++ b/frontend/menu/menu_common.c @@ -2014,6 +2014,9 @@ void menu_populate_entries(void *data, unsigned menu_type) file_list_push(rgui->selection_buf, "Quit RetroArch", RGUI_SETTINGS_QUIT_RARCH, 0); break; } + + if (menu_ctx && menu_ctx->populate_entries) + menu_ctx->populate_entries(rgui, menu_type); } void menu_parse_and_resolve(void *data, unsigned menu_type) diff --git a/frontend/menu/menu_context.h b/frontend/menu/menu_context.h index d287779f3b..4437566bfa 100644 --- a/frontend/menu/menu_context.h +++ b/frontend/menu/menu_context.h @@ -33,6 +33,7 @@ typedef struct menu_ctx_driver void (*free)(void*); void (*init_assets)(void*); void (*free_assets)(void*); + void (*populate_entries)(void*, unsigned); // Human readable string. const char *ident; diff --git a/frontend/menu/rmenu_xui.cpp b/frontend/menu/rmenu_xui.cpp index 1158387c2d..dd3b946b24 100644 --- a/frontend/menu/rmenu_xui.cpp +++ b/frontend/menu/rmenu_xui.cpp @@ -295,34 +295,34 @@ static void set_dpad_emulation_label(unsigned port, char *str, size_t sizeof_str { } -static void init_menulist(unsigned menu_id) +static void rmenu_xui_populate_entries(void *data, unsigned menu_type) { XuiListDeleteItems(m_menulist, 0, XuiListGetItemCount(m_menulist)); switch (menu_id) { case INGAME_MENU_CORE_OPTIONS_MODE: - if (g_extern.system.core_options) - { - size_t opts = core_option_size(g_extern.system.core_options); - for (size_t i = 0; i < opts; i++) - { - char label[256]; - strlcpy(label, core_option_get_desc(g_extern.system.core_options, i), - sizeof(label)); - snprintf(label, sizeof(label), "%s : %s", label, - core_option_get_val(g_extern.system.core_options, i)); - mbstowcs(strw_buffer, label, - sizeof(strw_buffer) / sizeof(wchar_t)); - XuiListInsertItems(m_menulist, i, 1); - XuiListSetText(m_menulist, i, strw_buffer); - } - } - else - { - XuiListInsertItems(m_menulist, 0, 1); - XuiListSetText(m_menulist, 0, L"No options available."); - } + if (g_extern.system.core_options) + { + size_t opts = core_option_size(g_extern.system.core_options); + for (size_t i = 0; i < opts; i++) + { + char label[256]; + strlcpy(label, core_option_get_desc(g_extern.system.core_options, i), + sizeof(label)); + snprintf(label, sizeof(label), "%s : %s", label, + core_option_get_val(g_extern.system.core_options, i)); + mbstowcs(strw_buffer, label, + sizeof(strw_buffer) / sizeof(wchar_t)); + XuiListInsertItems(m_menulist, i, 1); + XuiListSetText(m_menulist, i, strw_buffer); + } + } + else + { + XuiListInsertItems(m_menulist, 0, 1); + XuiListSetText(m_menulist, 0, L"No options available."); + } break; case INGAME_MENU_LOAD_GAME_HISTORY_MODE: { @@ -453,7 +453,7 @@ static void init_menulist(unsigned menu_id) } } -static unsigned xui_input_to_rgui_action(unsigned input) +static unsigned xui_input_to_rmenu_xui_action(unsigned input) { switch (input) { @@ -478,7 +478,7 @@ HRESULT CRetroArchLoadGameHistory::OnControlNavigate( unsigned current_index = XuiListGetCurSel(m_menulist, NULL); unsigned input = pControlNavigateData->nControlNavigate; - unsigned action = xui_input_to_rgui_action(input); + unsigned action = xui_input_to_rmenu_xui_action(input); if (action == RGUI_ACTION_OK) { @@ -512,7 +512,7 @@ HRESULT CRetroArchControls::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) XuiTextElementSetText(m_menutitle, L"Input options"); - init_menulist(INGAME_MENU_INPUT_OPTIONS_MODE); + rmenu_xui_populate_entries(NULL, INGAME_MENU_INPUT_OPTIONS_MODE); return 0; } @@ -522,7 +522,7 @@ HRESULT CRetroArchFileBrowser::OnControlNavigate( { bHandled = TRUE; unsigned input = pControlNavigateData->nControlNavigate; - unsigned action = xui_input_to_rgui_action(input); + unsigned action = xui_input_to_rmenu_xui_action(input); switch(action) { @@ -543,7 +543,7 @@ HRESULT CRetroArchShaderBrowser::OnControlNavigate( XUIMessageControlNavigate *pControlNavigateData, BOOL& bHandled) { unsigned input = pControlNavigateData->nControlNavigate; - unsigned action = xui_input_to_rgui_action(input); + unsigned action = xui_input_to_rmenu_xui_action(input); bHandled = TRUE; switch(action) @@ -565,7 +565,7 @@ HRESULT CRetroArchCoreBrowser::OnControlNavigate( XUIMessageControlNavigate *pControlNavigateData, BOOL& bHandled) { unsigned input = pControlNavigateData->nControlNavigate; - unsigned action = xui_input_to_rgui_action(input); + unsigned action = xui_input_to_rmenu_xui_action(input); bHandled = TRUE; switch(action) @@ -610,7 +610,7 @@ HRESULT CRetroArchControls::OnControlNavigate( current_index = XuiListGetCurSel(m_menulist, NULL); unsigned input = pControlNavigateData->nControlNavigate; - unsigned action = xui_input_to_rgui_action(input); + unsigned action = xui_input_to_rmenu_xui_action(input); switch(current_index) { @@ -666,7 +666,7 @@ HRESULT CRetroArchLoadGameHistory::OnInit(XUIMessageInit * pInitData, BOOL& bHan XuiTextElementSetText(m_menutitle, L"Load History"); - init_menulist(INGAME_MENU_LOAD_GAME_HISTORY_MODE); + rmenu_xui_populate_entries(NULL, INGAME_MENU_LOAD_GAME_HISTORY_MODE); return 0; } @@ -679,7 +679,7 @@ HRESULT CRetroArchSettings::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) XuiTextElementSetText(m_menutitle, L"Settings"); - init_menulist(INGAME_MENU_SETTINGS_MODE); + rmenu_xui_populate_entries(NULL, INGAME_MENU_SETTINGS_MODE); return 0; } @@ -692,7 +692,7 @@ HRESULT CRetroArchSettings::OnControlNavigate(XUIMessageControlNavigate *pContro current_index = XuiListGetCurSel(m_menulist, NULL); unsigned input = pControlNavigateData->nControlNavigate; - unsigned action = xui_input_to_rgui_action(input); + unsigned action = xui_input_to_rmenu_xui_action(input); switch(current_index) { @@ -756,7 +756,7 @@ HRESULT CRetroArchCoreOptions::OnInit(XUIMessageInit * pInitData, BOOL& bHandled XuiTextElementSetText(m_menutitle, L"Core Options"); - init_menulist(INGAME_MENU_CORE_OPTIONS_MODE); + rmenu_xui_populate_entries(NULL, INGAME_MENU_CORE_OPTIONS_MODE); return 0; } @@ -781,7 +781,7 @@ HRESULT CRetroArchCoreOptions::OnControlNavigate(XUIMessageControlNavigate *pCon { unsigned current_index = XuiListGetCurSel(m_menulist, NULL); unsigned input = pControlNavigateData->nControlNavigate; - unsigned action = xui_input_to_rgui_action(input); + unsigned action = xui_input_to_rmenu_xui_action(input); if (g_extern.system.core_options) { @@ -849,7 +849,7 @@ HRESULT CRetroArchAudioOptions::OnControlNavigate(XUIMessageControlNavigate *pCo { int current_index = XuiListGetCurSel(m_menulist, NULL); unsigned input = pControlNavigateData->nControlNavigate; - unsigned action = xui_input_to_rgui_action(input); + unsigned action = xui_input_to_rmenu_xui_action(input); switch (current_index) { @@ -934,7 +934,7 @@ HRESULT CRetroArchVideoOptions::OnControlNavigate(XUIMessageControlNavigate *pCo current_index = XuiListGetCurSel(m_menulist, NULL); unsigned input = pControlNavigateData->nControlNavigate; - unsigned action = xui_input_to_rgui_action(input); + unsigned action = xui_input_to_rmenu_xui_action(input); switch (current_index) { @@ -1090,7 +1090,7 @@ HRESULT CRetroArchMain::OnInit(XUIMessageInit * pInitData, BOOL& bHandled) GetChildById(L"XuiTxtTitle", &m_menutitle); GetChildById(L"XuiTxtBottom", &m_menutitlebottom); - init_menulist(INGAME_MENU_MAIN_MODE); + rmenu_xui_populate_entries(NULL, INGAME_MENU_MAIN_MODE); mbstowcs(strw_buffer, g_extern.title_buf, sizeof(strw_buffer) / sizeof(wchar_t)); XuiTextElementSetText(m_menutitlebottom, strw_buffer); @@ -1110,7 +1110,7 @@ HRESULT CRetroArchMain::OnControlNavigate(XUIMessageControlNavigate *pControlNav current_index= XuiListGetCurSel(m_menulist, NULL); unsigned input = pControlNavigateData->nControlNavigate; - unsigned action = xui_input_to_rgui_action(input); + unsigned action = xui_input_to_rmenu_xui_action(input); HXUIOBJ current_obj = current_menu; @@ -1263,7 +1263,7 @@ HRESULT CRetroArchMain::OnNotifyPress( HXUIOBJ hObjPressed, int & bHandled ) return 0; } -static void* rgui_init (void) +static void* rmenu_xui_init (void) { HRESULT hr; @@ -1348,7 +1348,7 @@ static void* rgui_init (void) return rgui; } -static void rgui_free(void *data) +static void rmenu_xui_free(void *data) { (void)data; app.Uninit(); @@ -1367,7 +1367,7 @@ int rmenu_xui_iterate(void *data, unsigned action) XuiSceneNavigateBack(current_menu, root_menu, XUSER_INDEX_ANY); current_menu = root_menu; XuiElementGetChildById(current_menu, L"XuiMenuList", &m_menulist); - init_menulist(INGAME_MENU_MAIN_MODE); + rmenu_xui_populate_entries(NULL, INGAME_MENU_MAIN_MODE); } return 0; @@ -1397,7 +1397,7 @@ bool menu_iterate_xui(void) return true; } -int rgui_input_postprocess(void *data, uint64_t old_state) +int rmenu_xui_input_postprocess(void *data, uint64_t old_state) { rgui_handle_t *rgui = (rgui_handle_t*)data; bool quit = false; @@ -1426,7 +1426,10 @@ const menu_ctx_driver_t menu_ctx_rmenu_xui = { NULL, NULL, NULL, - rgui_init, - rgui_free, + rmenu_xui_init, + rmenu_xui_free, + NULL, + NULL, + rmenu_xui_populate_entries, "rmenu_xui", };