mirror of
https://github.com/libretro/RetroArch
synced 2025-02-21 18:40:09 +00:00
(Menu) Pass video_data pointer to menu functions
This commit is contained in:
parent
82c7e8f422
commit
36716706c2
@ -155,7 +155,7 @@ int main_entry_iterate(signature(), args_type() args)
|
||||
}
|
||||
else if (g_extern.lifecycle_state & (1ULL << MODE_LOAD_GAME))
|
||||
{
|
||||
load_menu_game_prepare();
|
||||
load_menu_game_prepare(driver.video_data);
|
||||
|
||||
if (load_menu_game())
|
||||
{
|
||||
@ -225,7 +225,7 @@ int main_entry_iterate(signature(), args_type() args)
|
||||
}
|
||||
else if (g_extern.lifecycle_state & (1ULL << MODE_MENU))
|
||||
{
|
||||
if (menu_iterate())
|
||||
if (menu_iterate(driver.video_data))
|
||||
{
|
||||
if (frontend_ctx && frontend_ctx->process_events)
|
||||
frontend_ctx->process_events(args);
|
||||
@ -256,7 +256,7 @@ void main_exit(args_type() args)
|
||||
#ifdef HAVE_MENU
|
||||
g_extern.system.shutdown = false;
|
||||
|
||||
menu_free();
|
||||
menu_free(driver.video_data);
|
||||
|
||||
if (g_extern.config_save_on_exit && *g_extern.config_path)
|
||||
{
|
||||
@ -334,7 +334,7 @@ returntype main_entry(signature())
|
||||
|
||||
#if defined(HAVE_MENU)
|
||||
if (menu_init_enable)
|
||||
menu_init();
|
||||
menu_init(driver.video_data);
|
||||
|
||||
if (frontend_ctx && frontend_ctx->process_args)
|
||||
frontend_ctx->process_args(argc, argv, args);
|
||||
|
@ -199,7 +199,7 @@ static void lakka_render_background(rgui_handle_t *rgui)
|
||||
rgui->width - 10, 5, 5, rgui->height - 10, green_filler);
|
||||
}
|
||||
|
||||
static void lakka_render_messagebox(void *data, const char *message)
|
||||
static void lakka_render_messagebox(void *data, void *video_data, const char *message)
|
||||
{
|
||||
rgui_handle_t *rgui = (rgui_handle_t*)data;
|
||||
size_t i;
|
||||
@ -351,11 +351,11 @@ void lakka_draw_icon(void *data, GLuint texture, float x, float y, float alpha,
|
||||
gl_set_viewport(gl, gl->win_width, gl->win_height, 0, 0);
|
||||
}
|
||||
|
||||
static void lakka_render(void *data)
|
||||
static void lakka_render(void *data, void *video_data)
|
||||
{
|
||||
rgui_handle_t *rgui = (rgui_handle_t*)data;
|
||||
|
||||
gl_t *gl = (gl_t*)driver.video_data;
|
||||
gl_t *gl = (gl_t*)video_data;
|
||||
|
||||
gl_set_viewport(gl, gl->win_width, gl->win_height, 0, 0);
|
||||
|
||||
@ -625,16 +625,16 @@ static void lakka_render(void *data)
|
||||
if (!str)
|
||||
str = "";
|
||||
snprintf(msg, sizeof(msg), "%s\n%s", rgui->keyboard.label, str);
|
||||
lakka_render_messagebox(rgui, msg);
|
||||
lakka_render_messagebox(rgui, video_data, msg);
|
||||
}
|
||||
}
|
||||
|
||||
static void lakka_set_texture(void *data, bool enable)
|
||||
static void lakka_set_texture(void *data, void *video_data, bool enable)
|
||||
{
|
||||
rgui_handle_t *rgui = (rgui_handle_t*)data;
|
||||
|
||||
if (driver.video_poke && driver.video_poke->set_texture_enable)
|
||||
driver.video_poke->set_texture_frame(driver.video_data, menu_framebuf,
|
||||
driver.video_poke->set_texture_frame(video_data, menu_framebuf,
|
||||
enable, rgui->width, rgui->height, 1.0f);
|
||||
}
|
||||
|
||||
@ -653,7 +653,7 @@ static void lakka_init_assets(void *data)
|
||||
lakka_set_texture(rgui, true);
|
||||
}
|
||||
|
||||
static void *lakka_init(void)
|
||||
static void *lakka_init(void *video_data)
|
||||
{
|
||||
uint16_t *framebuf = menu_framebuf;
|
||||
size_t framebuf_pitch;
|
||||
|
@ -191,7 +191,7 @@ static void rgui_render_background(rgui_handle_t *rgui)
|
||||
rgui->width - 10, 5, 5, rgui->height - 10, green_filler);
|
||||
}
|
||||
|
||||
static void rgui_render_messagebox(void *data, const char *message)
|
||||
static void rgui_render_messagebox(void *data, void *video_data, const char *message)
|
||||
{
|
||||
rgui_handle_t *rgui = (rgui_handle_t*)data;
|
||||
size_t i;
|
||||
@ -258,7 +258,7 @@ static void rgui_render_messagebox(void *data, const char *message)
|
||||
string_list_free(list);
|
||||
}
|
||||
|
||||
static void rgui_render(void *data)
|
||||
static void rgui_render(void *data, void *video_data)
|
||||
{
|
||||
rgui_handle_t *rgui = (rgui_handle_t*)data;
|
||||
|
||||
@ -526,7 +526,7 @@ static void rgui_render(void *data)
|
||||
else
|
||||
message_queue = driver.current_msg;
|
||||
|
||||
rgui_render_messagebox(rgui, message_queue);
|
||||
rgui_render_messagebox(rgui, video_data, message_queue);
|
||||
#endif
|
||||
|
||||
if (rgui->keyboard.display)
|
||||
@ -536,11 +536,11 @@ static void rgui_render(void *data)
|
||||
if (!str)
|
||||
str = "";
|
||||
snprintf(msg, sizeof(msg), "%s\n%s", rgui->keyboard.label, str);
|
||||
rgui_render_messagebox(rgui, msg);
|
||||
rgui_render_messagebox(rgui, video_data, msg);
|
||||
}
|
||||
}
|
||||
|
||||
static void *rgui_init(void)
|
||||
static void *rgui_init(void *video_data)
|
||||
{
|
||||
uint16_t *framebuf = menu_framebuf;
|
||||
size_t framebuf_pitch;
|
||||
@ -592,12 +592,12 @@ static int rgui_input_postprocess(void *data, uint64_t old_state)
|
||||
return ret;
|
||||
}
|
||||
|
||||
void rgui_set_texture(void *data, bool enable)
|
||||
void rgui_set_texture(void *data, void *video_data, bool enable)
|
||||
{
|
||||
rgui_handle_t *rgui = (rgui_handle_t*)data;
|
||||
|
||||
if (driver.video_poke && driver.video_poke->set_texture_enable)
|
||||
driver.video_poke->set_texture_frame(driver.video_data, menu_framebuf,
|
||||
driver.video_poke->set_texture_frame(video_data, menu_framebuf,
|
||||
enable, rgui->width, rgui->height, 1.0f);
|
||||
}
|
||||
|
||||
|
@ -70,7 +70,7 @@ static void rmenu_render_background(rgui_handle_t *rgui)
|
||||
{
|
||||
}
|
||||
|
||||
static void rmenu_render_messagebox(void *data, const char *message)
|
||||
static void rmenu_render_messagebox(void *data, void *video_data, const char *message)
|
||||
{
|
||||
font_params_t font_parms;
|
||||
|
||||
@ -108,14 +108,13 @@ static void rmenu_render_messagebox(void *data, const char *message)
|
||||
font_parms.color = WHITE;
|
||||
|
||||
if (driver.video_poke && driver.video_poke->set_osd_msg)
|
||||
driver.video_poke->set_osd_msg(driver.video_data, msg, &font_parms);
|
||||
driver.video_poke->set_osd_msg(video_data, msg, &font_parms);
|
||||
}
|
||||
|
||||
render_normal = false;
|
||||
|
||||
}
|
||||
|
||||
static void rmenu_render(void *data)
|
||||
static void rmenu_render(void *data, void *video_data)
|
||||
{
|
||||
if (!render_normal)
|
||||
{
|
||||
@ -248,7 +247,7 @@ static void rmenu_render(void *data)
|
||||
font_parms.color = WHITE;
|
||||
|
||||
if (driver.video_poke && driver.video_poke->set_osd_msg)
|
||||
driver.video_poke->set_osd_msg(driver.video_data, title_buf, &font_parms);
|
||||
driver.video_poke->set_osd_msg(video_data, title_buf, &font_parms);
|
||||
|
||||
char title_msg[64];
|
||||
const char *core_name = rgui->info.library_name;
|
||||
@ -271,7 +270,7 @@ static void rmenu_render(void *data)
|
||||
snprintf(title_msg, sizeof(title_msg), "%s - %s %s", PACKAGE_VERSION, core_name, core_version);
|
||||
|
||||
if (driver.video_poke && driver.video_poke->set_osd_msg)
|
||||
driver.video_poke->set_osd_msg(driver.video_data, title_msg, &font_parms);
|
||||
driver.video_poke->set_osd_msg(video_data, title_msg, &font_parms);
|
||||
|
||||
size_t i, j;
|
||||
|
||||
@ -386,16 +385,16 @@ static void rmenu_render(void *data)
|
||||
font_parms.color = WHITE;
|
||||
|
||||
if (driver.video_poke && driver.video_poke->set_osd_msg)
|
||||
driver.video_poke->set_osd_msg(driver.video_data, message, &font_parms);
|
||||
driver.video_poke->set_osd_msg(video_data, message, &font_parms);
|
||||
|
||||
font_parms.x = POSITION_EDGE_CENTER + POSITION_OFFSET;
|
||||
|
||||
if (driver.video_poke && driver.video_poke->set_osd_msg)
|
||||
driver.video_poke->set_osd_msg(driver.video_data, type_str_buf, &font_parms);
|
||||
driver.video_poke->set_osd_msg(video_data, type_str_buf, &font_parms);
|
||||
}
|
||||
}
|
||||
|
||||
void rmenu_set_texture(void *data, bool enable)
|
||||
void rmenu_set_texture(void *data, void *video_data, bool enable)
|
||||
{
|
||||
rgui_handle_t *rgui = (rgui_handle_t*)data;
|
||||
|
||||
@ -404,13 +403,13 @@ void rmenu_set_texture(void *data, bool enable)
|
||||
|
||||
if (driver.video_poke && driver.video_poke->set_texture_enable)
|
||||
{
|
||||
driver.video_poke->set_texture_frame(driver.video_data, menu_texture->pixels,
|
||||
driver.video_poke->set_texture_frame(video_data, menu_texture->pixels,
|
||||
enable, rgui->width, rgui->height, 1.0f);
|
||||
menu_texture_inited = true;
|
||||
}
|
||||
}
|
||||
|
||||
static void rmenu_init_assets(void *data)
|
||||
static void rmenu_init_assets(void *data, void *video_data)
|
||||
{
|
||||
rgui_handle_t *rgui = (rgui_handle_t*)data;
|
||||
|
||||
@ -422,14 +421,14 @@ static void rmenu_init_assets(void *data)
|
||||
rgui->width = menu_texture->width;
|
||||
rgui->height = menu_texture->height;
|
||||
|
||||
rmenu_set_texture(rgui, true);
|
||||
rmenu_set_texture(rgui, video_data, true);
|
||||
}
|
||||
|
||||
static void *rmenu_init(void)
|
||||
static void *rmenu_init(void *video_data)
|
||||
{
|
||||
rgui_handle_t *rgui = (rgui_handle_t*)calloc(1, sizeof(*rgui));
|
||||
|
||||
rmenu_init_assets(rgui);
|
||||
rmenu_init_assets(rgui, video_data);
|
||||
|
||||
return rgui;
|
||||
}
|
||||
|
@ -148,7 +148,7 @@ HRESULT CRetroArchMain::OnInit(XUIMessageInit * pInitData, BOOL& bHandled)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void* rmenu_xui_init (void)
|
||||
static void* rmenu_xui_init(void *video_data)
|
||||
{
|
||||
HRESULT hr;
|
||||
|
||||
@ -159,7 +159,7 @@ static void* rmenu_xui_init (void)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
xdk_d3d_video_t *d3d= (xdk_d3d_video_t*)driver.video_data;
|
||||
xdk_d3d_video_t *d3d= (xdk_d3d_video_t*)video_data;
|
||||
|
||||
bool hdmenus_allowed = (g_extern.lifecycle_state & (1ULL << MODE_MENU_HD));
|
||||
|
||||
@ -227,7 +227,7 @@ static void* rmenu_xui_init (void)
|
||||
}
|
||||
|
||||
if (driver.video_poke && driver.video_poke->set_texture_enable)
|
||||
driver.video_poke->set_texture_frame(driver.video_data, NULL,
|
||||
driver.video_poke->set_texture_frame(video_data, NULL,
|
||||
true, 0, 0, 1.0f);
|
||||
|
||||
return rgui;
|
||||
@ -307,18 +307,20 @@ int x, int y, const char *message, bool green)
|
||||
{
|
||||
}
|
||||
|
||||
static void rmenu_xui_render_background(rgui_handle_t *rgui)
|
||||
{
|
||||
(void)rgui;
|
||||
}
|
||||
|
||||
static void rmenu_xui_render_messagebox(void *data, const char *message)
|
||||
static void rmenu_xui_render_background(void *data, void *video_data)
|
||||
{
|
||||
(void)data;
|
||||
(void)video_data;
|
||||
}
|
||||
|
||||
static void rmenu_xui_render_messagebox(void *data, void *video_data, const char *message)
|
||||
{
|
||||
(void)data;
|
||||
(void)video_data;
|
||||
(void)message;
|
||||
}
|
||||
|
||||
static void rmenu_xui_render(void *data)
|
||||
static void rmenu_xui_render(void *data, void *video_data)
|
||||
{
|
||||
rgui_handle_t *rgui = (rgui_handle_t*)data;
|
||||
|
||||
@ -330,7 +332,7 @@ static void rmenu_xui_render(void *data)
|
||||
size_t begin = rgui->selection_ptr;
|
||||
size_t end = rgui->selection_buf->size;
|
||||
|
||||
rmenu_xui_render_background(rgui);
|
||||
rmenu_xui_render_background(rgui, video_data);
|
||||
|
||||
char title[256];
|
||||
const char *dir = NULL;
|
||||
@ -578,7 +580,7 @@ static void rmenu_xui_render(void *data)
|
||||
if (!str)
|
||||
str = "";
|
||||
snprintf(msg, sizeof(msg), "%s\n%s", rgui->keyboard.label, str);
|
||||
rmenu_xui_render_messagebox(rgui, msg);
|
||||
rmenu_xui_render_messagebox(rgui, video_data, msg);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -69,7 +69,7 @@ static void menu_update_system_info(void *data, bool *load_no_rom)
|
||||
}
|
||||
|
||||
//forward decl
|
||||
static int menu_iterate_func(void *data, unsigned action);
|
||||
static int menu_iterate_func(void *data, void *video_data, unsigned action);
|
||||
|
||||
#ifdef HAVE_SHADER_MANAGER
|
||||
void shader_manager_init(void *data)
|
||||
@ -259,7 +259,7 @@ void menu_rom_history_push_current(void)
|
||||
g_extern.system.info.library_name);
|
||||
}
|
||||
|
||||
void load_menu_game_prepare(void)
|
||||
void load_menu_game_prepare(void *video_data)
|
||||
{
|
||||
if (*g_extern.fullpath || rgui->load_no_rom)
|
||||
{
|
||||
@ -288,18 +288,18 @@ void load_menu_game_prepare(void)
|
||||
rgui->msg_force = true;
|
||||
|
||||
if (menu_ctx)
|
||||
menu_iterate_func(rgui, RGUI_ACTION_NOOP);
|
||||
menu_iterate_func(rgui, video_data, RGUI_ACTION_NOOP);
|
||||
#endif
|
||||
|
||||
// Draw frame for loading message
|
||||
if (driver.video_poke && driver.video_poke->set_texture_enable)
|
||||
driver.video_poke->set_texture_enable(driver.video_data, rgui->frame_buf_show, MENU_TEXTURE_FULLSCREEN);
|
||||
driver.video_poke->set_texture_enable(video_data, rgui->frame_buf_show, MENU_TEXTURE_FULLSCREEN);
|
||||
|
||||
if (driver.video)
|
||||
rarch_render_cached_frame();
|
||||
|
||||
if (driver.video_poke && driver.video_poke->set_texture_enable)
|
||||
driver.video_poke->set_texture_enable(driver.video_data, false,
|
||||
driver.video_poke->set_texture_enable(video_data, false,
|
||||
MENU_TEXTURE_FULLSCREEN);
|
||||
}
|
||||
|
||||
@ -425,9 +425,9 @@ bool load_menu_game(void)
|
||||
}
|
||||
}
|
||||
|
||||
void menu_init(void)
|
||||
void menu_init(void *video_data)
|
||||
{
|
||||
if (!menu_ctx_init_first(&menu_ctx, ((void**)&rgui)))
|
||||
if (!menu_ctx_init_first(&menu_ctx, ((void**)&rgui), video_data))
|
||||
{
|
||||
RARCH_ERR("Could not initialize menu.\n");
|
||||
rarch_fail(1, "menu_init()");
|
||||
@ -457,7 +457,7 @@ void menu_init(void)
|
||||
rgui->last_time = rarch_get_time_usec();
|
||||
}
|
||||
|
||||
void menu_free(void)
|
||||
void menu_free(void *video_data)
|
||||
{
|
||||
if (menu_ctx && menu_ctx->free)
|
||||
menu_ctx->free(rgui);
|
||||
@ -561,19 +561,19 @@ uint64_t menu_input(void)
|
||||
|
||||
// This only makes sense for PC so far.
|
||||
// Consoles use set_keybind callbacks instead.
|
||||
static int menu_custom_bind_iterate(void *data, unsigned action)
|
||||
static int menu_custom_bind_iterate(void *data, void *video_data, unsigned action)
|
||||
{
|
||||
rgui_handle_t *rgui = (rgui_handle_t*)data;
|
||||
(void)action; // Have to ignore action here. Only bind that should work here is Quit RetroArch or something like that.
|
||||
|
||||
if (menu_ctx && menu_ctx->render)
|
||||
menu_ctx->render(rgui);
|
||||
menu_ctx->render(rgui, video_data);
|
||||
|
||||
char msg[256];
|
||||
snprintf(msg, sizeof(msg), "[%s]\npress joypad\n(RETURN to skip)", input_config_bind_map[rgui->binds.begin - RGUI_SETTINGS_BIND_BEGIN].desc);
|
||||
|
||||
if (menu_ctx && menu_ctx->render_messagebox)
|
||||
menu_ctx->render_messagebox(rgui, msg);
|
||||
menu_ctx->render_messagebox(rgui, video_data, msg);
|
||||
|
||||
struct rgui_bind_state binds = rgui->binds;
|
||||
menu_poll_bind_state(&binds);
|
||||
@ -594,14 +594,14 @@ static int menu_custom_bind_iterate(void *data, unsigned action)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int menu_start_screen_iterate(void *data, unsigned action)
|
||||
static int menu_start_screen_iterate(void *data, void *video_data, unsigned action)
|
||||
{
|
||||
unsigned i;
|
||||
char msg[1024];
|
||||
rgui_handle_t *rgui = (rgui_handle_t*)data;
|
||||
|
||||
if (menu_ctx && menu_ctx->render)
|
||||
menu_ctx->render(rgui);
|
||||
menu_ctx->render(rgui, video_data);
|
||||
|
||||
char desc[6][64];
|
||||
static const unsigned binds[] = {
|
||||
@ -656,14 +656,14 @@ static int menu_start_screen_iterate(void *data, unsigned action)
|
||||
desc[0], desc[1], desc[2], desc[3], desc[4], desc[5]);
|
||||
|
||||
if (menu_ctx && menu_ctx->render_messagebox)
|
||||
menu_ctx->render_messagebox(rgui, msg);
|
||||
menu_ctx->render_messagebox(rgui, video_data, msg);
|
||||
|
||||
if (action == RGUI_ACTION_OK)
|
||||
file_list_pop(rgui->menu_stack, &rgui->selection_ptr);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int menu_viewport_iterate(void *data, unsigned action)
|
||||
static int menu_viewport_iterate(void *data, void *video_data, unsigned action)
|
||||
{
|
||||
rgui_handle_t *rgui = (rgui_handle_t*)data;
|
||||
rarch_viewport_t *custom = &g_extern.console.screen.viewports.custom_vp;
|
||||
@ -689,7 +689,7 @@ static int menu_viewport_iterate(void *data, unsigned action)
|
||||
custom->height -= stride_y;
|
||||
|
||||
if (driver.video_poke && driver.video_poke->apply_state_changes)
|
||||
driver.video_poke->apply_state_changes(driver.video_data);
|
||||
driver.video_poke->apply_state_changes(video_data);
|
||||
break;
|
||||
|
||||
case RGUI_ACTION_DOWN:
|
||||
@ -703,7 +703,7 @@ static int menu_viewport_iterate(void *data, unsigned action)
|
||||
custom->height += stride_y;
|
||||
|
||||
if (driver.video_poke && driver.video_poke->apply_state_changes)
|
||||
driver.video_poke->apply_state_changes(driver.video_data);
|
||||
driver.video_poke->apply_state_changes(video_data);
|
||||
break;
|
||||
|
||||
case RGUI_ACTION_LEFT:
|
||||
@ -716,7 +716,7 @@ static int menu_viewport_iterate(void *data, unsigned action)
|
||||
custom->width -= stride_x;
|
||||
|
||||
if (driver.video_poke && driver.video_poke->apply_state_changes)
|
||||
driver.video_poke->apply_state_changes(driver.video_data);
|
||||
driver.video_poke->apply_state_changes(video_data);
|
||||
break;
|
||||
|
||||
case RGUI_ACTION_RIGHT:
|
||||
@ -730,7 +730,7 @@ static int menu_viewport_iterate(void *data, unsigned action)
|
||||
custom->width += stride_x;
|
||||
|
||||
if (driver.video_poke && driver.video_poke->apply_state_changes)
|
||||
driver.video_poke->apply_state_changes(driver.video_data);
|
||||
driver.video_poke->apply_state_changes(video_data);
|
||||
break;
|
||||
|
||||
case RGUI_ACTION_CANCEL:
|
||||
@ -760,7 +760,7 @@ static int menu_viewport_iterate(void *data, unsigned action)
|
||||
rarch_viewport_t vp;
|
||||
|
||||
if (driver.video && driver.video->viewport_info)
|
||||
driver.video->viewport_info(driver.video_data, &vp);
|
||||
driver.video->viewport_info(video_data, &vp);
|
||||
|
||||
if (menu_type == RGUI_SETTINGS_CUSTOM_VIEWPORT)
|
||||
{
|
||||
@ -776,7 +776,7 @@ static int menu_viewport_iterate(void *data, unsigned action)
|
||||
}
|
||||
|
||||
if (driver.video_poke && driver.video_poke->apply_state_changes)
|
||||
driver.video_poke->apply_state_changes(driver.video_data);
|
||||
driver.video_poke->apply_state_changes(video_data);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -791,7 +791,7 @@ static int menu_viewport_iterate(void *data, unsigned action)
|
||||
file_list_get_last(rgui->menu_stack, NULL, &menu_type);
|
||||
|
||||
if (menu_ctx && menu_ctx->render)
|
||||
menu_ctx->render(rgui);
|
||||
menu_ctx->render(rgui, video_data);
|
||||
|
||||
const char *base_msg = NULL;
|
||||
char msg[64];
|
||||
@ -822,7 +822,7 @@ static int menu_viewport_iterate(void *data, unsigned action)
|
||||
}
|
||||
|
||||
if (menu_ctx && menu_ctx->render_messagebox)
|
||||
menu_ctx->render_messagebox(rgui, msg);
|
||||
menu_ctx->render_messagebox(rgui, video_data, msg);
|
||||
|
||||
if (!custom->width)
|
||||
custom->width = stride_x;
|
||||
@ -833,12 +833,12 @@ static int menu_viewport_iterate(void *data, unsigned action)
|
||||
(float)custom->width / custom->height;
|
||||
|
||||
if (driver.video_poke && driver.video_poke->apply_state_changes)
|
||||
driver.video_poke->apply_state_changes(driver.video_data);
|
||||
driver.video_poke->apply_state_changes(video_data);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int menu_settings_iterate(void *data, unsigned action)
|
||||
static int menu_settings_iterate(void *data, void *video_data, unsigned action)
|
||||
{
|
||||
rgui_handle_t *rgui = (rgui_handle_t*)data;
|
||||
rgui->frame_buf_pitch = rgui->width * 2;
|
||||
@ -936,7 +936,7 @@ static int menu_settings_iterate(void *data, unsigned action)
|
||||
}
|
||||
else
|
||||
{
|
||||
int ret = menu_settings_toggle_setting(rgui, type, action, menu_type);
|
||||
int ret = menu_settings_toggle_setting(rgui, video_data, type, action, menu_type);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
@ -988,7 +988,7 @@ static int menu_settings_iterate(void *data, unsigned action)
|
||||
}
|
||||
|
||||
if (menu_ctx && menu_ctx->render)
|
||||
menu_ctx->render(rgui);
|
||||
menu_ctx->render(rgui, video_data);
|
||||
|
||||
// Have to defer it so we let settings refresh.
|
||||
if (rgui->push_start_screen)
|
||||
@ -1025,7 +1025,7 @@ void load_menu_game_new_core(void)
|
||||
#endif
|
||||
}
|
||||
|
||||
static int menu_iterate_func(void *data, unsigned action)
|
||||
static int menu_iterate_func(void *data, void *video_data, unsigned action)
|
||||
{
|
||||
rgui_handle_t *rgui = (rgui_handle_t*)data;
|
||||
|
||||
@ -1035,7 +1035,7 @@ static int menu_iterate_func(void *data, unsigned action)
|
||||
int ret = 0;
|
||||
|
||||
if (menu_ctx && menu_ctx->set_texture)
|
||||
menu_ctx->set_texture(rgui, false);
|
||||
menu_ctx->set_texture(rgui, video_data, false);
|
||||
|
||||
#ifdef HAVE_OSK
|
||||
// process pending osk init callback
|
||||
@ -1054,13 +1054,13 @@ static int menu_iterate_func(void *data, unsigned action)
|
||||
#endif
|
||||
|
||||
if (menu_type == RGUI_START_SCREEN)
|
||||
return menu_start_screen_iterate(rgui, action);
|
||||
return menu_start_screen_iterate(rgui, video_data, action);
|
||||
else if (menu_type_is(menu_type) == RGUI_SETTINGS)
|
||||
return menu_settings_iterate(rgui, action);
|
||||
return menu_settings_iterate(rgui, video_data, action);
|
||||
else if (menu_type == RGUI_SETTINGS_CUSTOM_VIEWPORT || menu_type == RGUI_SETTINGS_CUSTOM_VIEWPORT_2)
|
||||
return menu_viewport_iterate(rgui, action);
|
||||
return menu_viewport_iterate(rgui, video_data, action);
|
||||
else if (menu_type == RGUI_SETTINGS_CUSTOM_BIND)
|
||||
return menu_custom_bind_iterate(rgui, action);
|
||||
return menu_custom_bind_iterate(rgui, video_data, action);
|
||||
|
||||
if (rgui->need_refresh && action != RGUI_ACTION_MESSAGE)
|
||||
action = RGUI_ACTION_NOOP;
|
||||
@ -1390,12 +1390,12 @@ static int menu_iterate_func(void *data, unsigned action)
|
||||
menu_ctx->iterate(rgui, action);
|
||||
|
||||
if (menu_ctx && menu_ctx->render)
|
||||
menu_ctx->render(rgui);
|
||||
menu_ctx->render(rgui, video_data);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool menu_iterate(void)
|
||||
bool menu_iterate(void *video_data)
|
||||
{
|
||||
retro_time_t time, delta, target_msec, sleep_msec;
|
||||
unsigned action;
|
||||
@ -1483,10 +1483,10 @@ bool menu_iterate(void)
|
||||
action = RGUI_ACTION_START;
|
||||
|
||||
if (menu_ctx)
|
||||
input_entry_ret = menu_iterate_func(rgui, action);
|
||||
input_entry_ret = menu_iterate_func(rgui, video_data, action);
|
||||
|
||||
if (driver.video_poke && driver.video_poke->set_texture_enable)
|
||||
driver.video_poke->set_texture_enable(driver.video_data, rgui->frame_buf_show, MENU_TEXTURE_FULLSCREEN);
|
||||
driver.video_poke->set_texture_enable(video_data, rgui->frame_buf_show, MENU_TEXTURE_FULLSCREEN);
|
||||
|
||||
rarch_render_cached_frame();
|
||||
|
||||
@ -1500,7 +1500,7 @@ bool menu_iterate(void)
|
||||
rgui->last_time = rarch_get_time_usec();
|
||||
|
||||
if (driver.video_poke && driver.video_poke->set_texture_enable)
|
||||
driver.video_poke->set_texture_enable(driver.video_data, false,
|
||||
driver.video_poke->set_texture_enable(video_data, false,
|
||||
MENU_TEXTURE_FULLSCREEN);
|
||||
|
||||
if (menu_ctx && menu_ctx->input_postprocess)
|
||||
|
@ -405,9 +405,9 @@ typedef struct
|
||||
|
||||
extern rgui_handle_t *rgui;
|
||||
|
||||
void menu_init(void);
|
||||
bool menu_iterate(void);
|
||||
void menu_free(void);
|
||||
void menu_init(void *data);
|
||||
bool menu_iterate(void *data);
|
||||
void menu_free(void *data);
|
||||
|
||||
#ifdef HAVE_SHADER_MANAGER
|
||||
void shader_manager_init(void *data);
|
||||
@ -424,7 +424,7 @@ void menu_parse_and_resolve(void *data, unsigned menu_type);
|
||||
|
||||
void menu_init_core_info(void *data);
|
||||
|
||||
void load_menu_game_prepare(void);
|
||||
void load_menu_game_prepare(void *video_data);
|
||||
void load_menu_game_prepare_dummy(void);
|
||||
bool load_menu_game(void);
|
||||
void load_menu_game_history(unsigned game_index);
|
||||
@ -437,8 +437,8 @@ bool menu_replace_config(const char *path);
|
||||
|
||||
bool menu_save_new_config(void);
|
||||
|
||||
int menu_settings_toggle_setting(void *data, unsigned setting, unsigned action, unsigned menu_type);
|
||||
int menu_set_settings(void *data, unsigned setting, unsigned action);
|
||||
int menu_settings_toggle_setting(void *data, void *video_data, unsigned setting, unsigned action, unsigned menu_type);
|
||||
int menu_set_settings(void *data, void *video_data, unsigned setting, unsigned action);
|
||||
void menu_set_settings_label(char *type_str, size_t type_str_size, unsigned *w, unsigned type);
|
||||
|
||||
void menu_populate_entries(void *data, unsigned menu_type);
|
||||
|
@ -83,7 +83,7 @@ void find_next_menu_driver(void)
|
||||
RARCH_WARN("Couldn't find any next menu driver (current one: \"%s\").\n", g_settings.menu.driver);
|
||||
}
|
||||
|
||||
bool menu_ctx_init_first(const menu_ctx_driver_t **driver, void **data)
|
||||
bool menu_ctx_init_first(const menu_ctx_driver_t **driver, void **data, void *video_data)
|
||||
{
|
||||
unsigned i;
|
||||
rgui_handle_t **handle = (rgui_handle_t**)data;
|
||||
@ -93,7 +93,7 @@ bool menu_ctx_init_first(const menu_ctx_driver_t **driver, void **data)
|
||||
|
||||
for (i = 0; menu_ctx_drivers[i]; i++)
|
||||
{
|
||||
void *h = menu_ctx_drivers[i]->init();
|
||||
void *h = menu_ctx_drivers[i]->init(video_data);
|
||||
if (h)
|
||||
{
|
||||
*driver = menu_ctx_drivers[i];
|
||||
|
@ -26,12 +26,12 @@
|
||||
|
||||
typedef struct menu_ctx_driver
|
||||
{
|
||||
void (*set_texture)(void*, bool);
|
||||
void (*render_messagebox)(void*, const char*);
|
||||
void (*render)(void*);
|
||||
void* (*init)(void);
|
||||
void (*set_texture)(void*, void*, bool);
|
||||
void (*render_messagebox)(void*, void*, const char*);
|
||||
void (*render)(void*, void*);
|
||||
void* (*init)(void*);
|
||||
void (*free)(void*);
|
||||
void (*init_assets)(void*);
|
||||
void (*init_assets)(void*, void*);
|
||||
void (*free_assets)(void*);
|
||||
void (*populate_entries)(void*, unsigned);
|
||||
void (*iterate)(void*, unsigned);
|
||||
@ -47,7 +47,7 @@ extern const menu_ctx_driver_t menu_ctx_rgui;
|
||||
extern const menu_ctx_driver_t menu_ctx_lakka;
|
||||
|
||||
const menu_ctx_driver_t *menu_ctx_find_driver(const char *ident); // Finds driver with ident. Does not initialize.
|
||||
bool menu_ctx_init_first(const menu_ctx_driver_t **driver, void **handle); // Finds first suitable driver and initializes.
|
||||
bool menu_ctx_init_first(const menu_ctx_driver_t **driver, void **handle, void *video_data); // Finds first suitable driver and initializes.
|
||||
void find_prev_menu_driver(void);
|
||||
void find_next_menu_driver(void);
|
||||
|
||||
|
@ -240,7 +240,7 @@ void shader_manager_save_preset(void *data, const char *basename, bool apply)
|
||||
RARCH_ERR("Failed to save shader preset. Make sure config directory and/or shader dir are writable.\n");
|
||||
}
|
||||
|
||||
static int shader_manager_toggle_setting(void *data, unsigned setting, unsigned action)
|
||||
static int shader_manager_toggle_setting(void *data, void *video_data, unsigned setting, unsigned action)
|
||||
{
|
||||
unsigned dist_shader, dist_filter, dist_scale;
|
||||
rgui_handle_t *rgui = (rgui_handle_t*)data;
|
||||
@ -267,7 +267,7 @@ static int shader_manager_toggle_setting(void *data, unsigned setting, unsigned
|
||||
}
|
||||
}
|
||||
else if (setting == RGUI_SETTINGS_SHADER_APPLY || setting == RGUI_SETTINGS_SHADER_PASSES)
|
||||
return menu_set_settings(rgui, setting, action);
|
||||
return menu_set_settings(rgui, video_data, setting, action);
|
||||
else if ((dist_shader % 3) == 0 || setting == RGUI_SETTINGS_SHADER_PRESET)
|
||||
{
|
||||
dist_shader /= 3;
|
||||
@ -370,17 +370,17 @@ static int menu_core_setting_toggle(unsigned setting, unsigned action)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int menu_settings_toggle_setting(void *data, unsigned setting, unsigned action, unsigned menu_type)
|
||||
int menu_settings_toggle_setting(void *data, void *video_data, unsigned setting, unsigned action, unsigned menu_type)
|
||||
{
|
||||
rgui_handle_t *rgui = (rgui_handle_t*)data;
|
||||
#ifdef HAVE_SHADER_MANAGER
|
||||
if (setting >= RGUI_SETTINGS_SHADER_FILTER && setting <= RGUI_SETTINGS_SHADER_LAST)
|
||||
return shader_manager_toggle_setting(rgui, setting, action);
|
||||
return shader_manager_toggle_setting(rgui, video_data, setting, action);
|
||||
#endif
|
||||
if (setting >= RGUI_SETTINGS_CORE_OPTION_START)
|
||||
return menu_core_setting_toggle(setting, action);
|
||||
|
||||
return menu_set_settings(rgui, setting, action);
|
||||
return menu_set_settings(rgui, video_data, setting, action);
|
||||
}
|
||||
|
||||
#ifdef HAVE_OSK
|
||||
@ -478,7 +478,7 @@ static bool osk_callback_enter_filename_init(void *data)
|
||||
#define RARCH_DEFAULT_PORT 55435
|
||||
#endif
|
||||
|
||||
int menu_set_settings(void *data, unsigned setting, unsigned action)
|
||||
int menu_set_settings(void *data, void *video_data, unsigned setting, unsigned action)
|
||||
{
|
||||
rgui_handle_t *rgui = (rgui_handle_t*)data;
|
||||
unsigned port = rgui->current_pad;
|
||||
@ -1172,7 +1172,7 @@ int menu_set_settings(void *data, unsigned setting, unsigned action)
|
||||
g_settings.video.smooth = !g_settings.video.smooth;
|
||||
|
||||
if (driver.video_poke && driver.video_poke->set_filtering)
|
||||
driver.video_poke->set_filtering(driver.video_data, 1, g_settings.video.smooth);
|
||||
driver.video_poke->set_filtering(video_data, 1, g_settings.video.smooth);
|
||||
break;
|
||||
|
||||
case RGUI_SETTINGS_DRIVER_VIDEO:
|
||||
@ -1244,7 +1244,7 @@ int menu_set_settings(void *data, unsigned setting, unsigned action)
|
||||
{
|
||||
g_extern.console.screen.gamma_correction = 0;
|
||||
if (driver.video_poke && driver.video_poke->apply_state_changes)
|
||||
driver.video_poke->apply_state_changes(driver.video_data);
|
||||
driver.video_poke->apply_state_changes(video_data);
|
||||
}
|
||||
else if (action == RGUI_ACTION_LEFT)
|
||||
{
|
||||
@ -1252,7 +1252,7 @@ int menu_set_settings(void *data, unsigned setting, unsigned action)
|
||||
{
|
||||
g_extern.console.screen.gamma_correction--;
|
||||
if (driver.video_poke && driver.video_poke->apply_state_changes)
|
||||
driver.video_poke->apply_state_changes(driver.video_data);
|
||||
driver.video_poke->apply_state_changes(video_data);
|
||||
}
|
||||
}
|
||||
else if (action == RGUI_ACTION_RIGHT)
|
||||
@ -1261,7 +1261,7 @@ int menu_set_settings(void *data, unsigned setting, unsigned action)
|
||||
{
|
||||
g_extern.console.screen.gamma_correction++;
|
||||
if (driver.video_poke && driver.video_poke->apply_state_changes)
|
||||
driver.video_poke->apply_state_changes(driver.video_data);
|
||||
driver.video_poke->apply_state_changes(video_data);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -1275,7 +1275,7 @@ int menu_set_settings(void *data, unsigned setting, unsigned action)
|
||||
g_settings.video.scale_integer = !g_settings.video.scale_integer;
|
||||
|
||||
if (driver.video_poke && driver.video_poke->apply_state_changes)
|
||||
driver.video_poke->apply_state_changes(driver.video_data);
|
||||
driver.video_poke->apply_state_changes(video_data);
|
||||
break;
|
||||
|
||||
case RGUI_SETTINGS_VIDEO_ASPECT_RATIO:
|
||||
@ -1293,7 +1293,7 @@ int menu_set_settings(void *data, unsigned setting, unsigned action)
|
||||
}
|
||||
|
||||
if (driver.video_poke && driver.video_poke->set_aspect_ratio)
|
||||
driver.video_poke->set_aspect_ratio(driver.video_data, g_settings.video.aspect_ratio_idx);
|
||||
driver.video_poke->set_aspect_ratio(video_data, g_settings.video.aspect_ratio_idx);
|
||||
break;
|
||||
|
||||
case RGUI_SETTINGS_TOGGLE_FULLSCREEN:
|
||||
@ -1308,7 +1308,7 @@ int menu_set_settings(void *data, unsigned setting, unsigned action)
|
||||
if(rgui_current_gx_resolution > 0)
|
||||
{
|
||||
rgui_current_gx_resolution--;
|
||||
gx_set_video_mode(driver.video_data, rgui_gx_resolutions[rgui_current_gx_resolution][0], rgui_gx_resolutions[rgui_current_gx_resolution][1]);
|
||||
gx_set_video_mode(video_data, rgui_gx_resolutions[rgui_current_gx_resolution][0], rgui_gx_resolutions[rgui_current_gx_resolution][1]);
|
||||
}
|
||||
}
|
||||
else if (action == RGUI_ACTION_RIGHT)
|
||||
@ -1322,7 +1322,7 @@ int menu_set_settings(void *data, unsigned setting, unsigned action)
|
||||
#endif
|
||||
|
||||
rgui_current_gx_resolution++;
|
||||
gx_set_video_mode(driver.video_data, rgui_gx_resolutions[rgui_current_gx_resolution][0],
|
||||
gx_set_video_mode(video_data, rgui_gx_resolutions[rgui_current_gx_resolution][0],
|
||||
rgui_gx_resolutions[rgui_current_gx_resolution][1]);
|
||||
}
|
||||
}
|
||||
@ -1366,7 +1366,7 @@ int menu_set_settings(void *data, unsigned setting, unsigned action)
|
||||
if (menu_ctx && menu_ctx->free_assets)
|
||||
menu_ctx->free_assets(rgui);
|
||||
if (menu_ctx && menu_ctx->init_assets)
|
||||
menu_ctx->init_assets(rgui);
|
||||
menu_ctx->init_assets(rgui, video_data);
|
||||
}
|
||||
break;
|
||||
case RGUI_SETTINGS_VIDEO_PAL60:
|
||||
@ -1387,7 +1387,7 @@ int menu_set_settings(void *data, unsigned setting, unsigned action)
|
||||
if (menu_ctx && menu_ctx->free_assets)
|
||||
menu_ctx->free_assets(rgui);
|
||||
if (menu_ctx && menu_ctx->init_assets)
|
||||
menu_ctx->init_assets(rgui);
|
||||
menu_ctx->init_assets(rgui, video_data);
|
||||
}
|
||||
break;
|
||||
case RGUI_ACTION_START:
|
||||
@ -1400,7 +1400,7 @@ int menu_set_settings(void *data, unsigned setting, unsigned action)
|
||||
if (menu_ctx && menu_ctx->free_assets)
|
||||
menu_ctx->free_assets(rgui);
|
||||
if (menu_ctx && menu_ctx->init_assets)
|
||||
menu_ctx->init_assets(rgui);
|
||||
menu_ctx->init_assets(rgui, video_data);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -1414,7 +1414,7 @@ int menu_set_settings(void *data, unsigned setting, unsigned action)
|
||||
g_extern.lifecycle_state |= (1ULL << MODE_VIDEO_SOFT_FILTER_ENABLE);
|
||||
|
||||
if (driver.video_poke && driver.video_poke->apply_state_changes)
|
||||
driver.video_poke->apply_state_changes(driver.video_data);
|
||||
driver.video_poke->apply_state_changes(video_data);
|
||||
break;
|
||||
#endif
|
||||
|
||||
@ -1564,7 +1564,7 @@ int menu_set_settings(void *data, unsigned setting, unsigned action)
|
||||
|
||||
g_settings.video.swap_interval = min(g_settings.video.swap_interval, 4);
|
||||
g_settings.video.swap_interval = max(g_settings.video.swap_interval, 1);
|
||||
if (old != g_settings.video.swap_interval && driver.video && driver.video_data)
|
||||
if (old != g_settings.video.swap_interval && driver.video && video_data)
|
||||
video_set_nonblock_state_func(false); // This will update the current swap interval. Since we're in RGUI now, always apply VSync.
|
||||
|
||||
break;
|
||||
|
Loading…
x
Reference in New Issue
Block a user