mirror of
https://github.com/libretro/RetroArch
synced 2025-03-29 22:20:21 +00:00
Add threaded video option.
This commit is contained in:
parent
79631ece8d
commit
3b97cdfdac
2
driver.c
2
driver.c
@ -986,9 +986,9 @@ void init_video_input(void)
|
||||
|
||||
const input_driver_t *tmp = driver.input;
|
||||
#ifdef HAVE_THREADS
|
||||
find_video_driver(); // Need to grab the "real" video driver interface on a reinit.
|
||||
if (g_settings.video.threaded && !g_extern.system.hw_render_callback.context_type) // Can't do hardware rendering with threaded driver currently.
|
||||
{
|
||||
find_video_driver(); // Need to grab the "real" video driver interface on a reinit.
|
||||
RARCH_LOG("Starting threaded video driver ...\n");
|
||||
if (!rarch_threaded_video_init(&driver.video, &driver.video_data,
|
||||
&driver.input, &driver.input_data,
|
||||
|
@ -75,6 +75,7 @@ typedef enum
|
||||
RGUI_SETTINGS_CUSTOM_VIEWPORT,
|
||||
RGUI_SETTINGS_CUSTOM_VIEWPORT_2,
|
||||
RGUI_SETTINGS_TOGGLE_FULLSCREEN,
|
||||
RGUI_SETTINGS_VIDEO_THREADED,
|
||||
RGUI_SETTINGS_VIDEO_ROTATION,
|
||||
RGUI_SETTINGS_VIDEO_VSYNC,
|
||||
RGUI_SETTINGS_VIDEO_HARD_SYNC,
|
||||
|
@ -812,6 +812,21 @@ int menu_set_settings(unsigned setting, unsigned action)
|
||||
break;
|
||||
}
|
||||
|
||||
case RGUI_SETTINGS_VIDEO_THREADED:
|
||||
{
|
||||
bool old = g_settings.video.threaded;
|
||||
if (action == RGUI_ACTION_OK ||
|
||||
action == RGUI_ACTION_LEFT ||
|
||||
action == RGUI_ACTION_RIGHT)
|
||||
g_settings.video.threaded = !g_settings.video.threaded;
|
||||
else if (action == RGUI_ACTION_START)
|
||||
g_settings.video.threaded = false;
|
||||
|
||||
if (g_settings.video.threaded != old)
|
||||
rarch_set_fullscreen(g_settings.video.fullscreen); // Reinit video driver.
|
||||
break;
|
||||
}
|
||||
|
||||
case RGUI_SETTINGS_VIDEO_SWAP_INTERVAL:
|
||||
{
|
||||
unsigned old = g_settings.video.swap_interval;
|
||||
|
@ -337,6 +337,7 @@ static void rgui_settings_video_options_populate_entries(rgui_handle_t *rgui)
|
||||
rgui_list_push(rgui->selection_buf, "Hard GPU Sync Frames", RGUI_SETTINGS_VIDEO_HARD_SYNC_FRAMES, 0);
|
||||
rgui_list_push(rgui->selection_buf, "Black Frame Insertion", RGUI_SETTINGS_VIDEO_BLACK_FRAME_INSERTION, 0);
|
||||
rgui_list_push(rgui->selection_buf, "VSync Swap Interval", RGUI_SETTINGS_VIDEO_SWAP_INTERVAL, 0);
|
||||
rgui_list_push(rgui->selection_buf, "Threaded Driver", RGUI_SETTINGS_VIDEO_THREADED, 0);
|
||||
#if !defined(RARCH_CONSOLE) && !defined(RARCH_MOBILE)
|
||||
rgui_list_push(rgui->selection_buf, "Windowed Scale (X)", RGUI_SETTINGS_VIDEO_WINDOW_SCALE_X, 0);
|
||||
rgui_list_push(rgui->selection_buf, "Windowed Scale (Y)", RGUI_SETTINGS_VIDEO_WINDOW_SCALE_Y, 0);
|
||||
|
@ -447,6 +447,9 @@ static void render_text(rgui_handle_t *rgui)
|
||||
case RGUI_SETTINGS_VIDEO_SWAP_INTERVAL:
|
||||
snprintf(type_str, sizeof(type_str), "%u", g_settings.video.swap_interval);
|
||||
break;
|
||||
case RGUI_SETTINGS_VIDEO_THREADED:
|
||||
strlcpy(type_str, g_settings.video.threaded ? "ON" : "OFF", sizeof(type_str));
|
||||
break;
|
||||
case RGUI_SETTINGS_VIDEO_WINDOW_SCALE_X:
|
||||
snprintf(type_str, sizeof(type_str), "%.1fx", g_settings.video.xscale);
|
||||
break;
|
||||
|
@ -1062,6 +1062,7 @@ bool config_save_file(const char *path)
|
||||
config_set_bool(conf, "video_crop_overscan", g_settings.video.crop_overscan);
|
||||
config_set_bool(conf, "video_scale_integer", g_settings.video.scale_integer);
|
||||
config_set_bool(conf, "video_smooth", g_settings.video.smooth);
|
||||
config_set_bool(conf, "video_threaded", g_settings.video.threaded);
|
||||
config_set_bool(conf, "video_fullscreen", g_settings.video.fullscreen);
|
||||
config_set_float(conf, "video_refresh_rate", g_settings.video.refresh_rate);
|
||||
config_set_string(conf, "video_driver", g_settings.video.driver);
|
||||
|
Loading…
x
Reference in New Issue
Block a user