From 5ff13df40f3d3b6ed7265ba159c075a876da8dc8 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 1 Oct 2016 00:47:05 +0200 Subject: [PATCH] Move global->record to record_driver.c --- menu/menu_setting.c | 2 +- record/record_driver.c | 60 +++++++++++++++++++++++++++++++----------- record/record_driver.h | 8 ++++++ retroarch.c | 7 +++-- runloop.c | 1 + runloop.h | 11 -------- 6 files changed, 57 insertions(+), 32 deletions(-) diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 19292b54c6..9396021bf8 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -4422,7 +4422,7 @@ static bool setting_append_list( CONFIG_BOOL( list, list_info, - &global->record.use_output_dir, + recording_driver_get_use_output_dir_ptr(), msg_hash_to_str(MENU_ENUM_LABEL_RECORD_USE_OUTPUT_DIRECTORY), msg_hash_to_str(MENU_ENUM_LABEL_VALUE_RECORD_USE_OUTPUT_DIRECTORY), false, diff --git a/record/record_driver.c b/record/record_driver.c index a12a03f5ca..82d1bf1f5e 100644 --- a/record/record_driver.c +++ b/record/record_driver.c @@ -37,7 +37,6 @@ #include "../paths.h" #include "../list_special.h" -static bool recording_enable; static const record_driver_t *record_drivers[] = { #ifdef HAVE_FFMPEG @@ -47,8 +46,15 @@ static const record_driver_t *record_drivers[] = { NULL, }; -static const record_driver_t *recording_driver; -static void *recording_data; +unsigned recording_width = 0; +unsigned recording_height = 0; +size_t recording_gpu_width = 0; +size_t recording_gpu_height = 0; +static bool recording_enable = false; +static bool recording_use_output_dir = false; + +static const record_driver_t *recording_driver = NULL; +static void *recording_data = NULL; /** * record_driver_find_ident: @@ -182,7 +188,6 @@ void recording_dump_frame(const void *data, unsigned width, unsigned height, size_t pitch) { struct ffemu_video_data ffemu_data = {0}; - global_t *global = global_get_ptr(); if (!recording_data) return; @@ -210,8 +215,8 @@ void recording_dump_frame(const void *data, unsigned width, } /* User has resized. We kinda have a problem now. */ - if (vp.width != global->record.gpu_width || - vp.height != global->record.gpu_height) + if ( vp.width != recording_gpu_width || + vp.height != recording_gpu_height) { RARCH_WARN("%s\n", msg_hash_to_str(MSG_RECORDING_TERMINATED_DUE_TO_RESIZE)); @@ -232,9 +237,9 @@ void recording_dump_frame(const void *data, unsigned width, if (!video_driver_read_viewport(gpu_buf)) return; - ffemu_data.pitch = global->record.gpu_width * 3; - ffemu_data.width = global->record.gpu_width; - ffemu_data.height = global->record.gpu_height; + ffemu_data.pitch = recording_gpu_width * 3; + ffemu_data.width = recording_gpu_width; + ffemu_data.height = recording_gpu_height; ffemu_data.data = gpu_buf + (ffemu_data.height - 1) * ffemu_data.pitch; ffemu_data.pitch = -ffemu_data.pitch; @@ -301,7 +306,6 @@ bool recording_init(void) { char recording_file[PATH_MAX_LENGTH] = {0}; struct ffemu_params params = {0}; - global_t *global = global_get_ptr(); settings_t *settings = config_get_ptr(); struct retro_system_av_info *av_info = video_viewport_get_system_av_info(); bool *recording_enabled = recording_is_enabled(); @@ -331,7 +335,7 @@ bool recording_init(void) strlcpy(recording_file, path_get(RARCH_PATH_RECORD), sizeof(recording_file)); - if (global->record.use_output_dir) + if (recording_use_output_dir) fill_pathname_join(recording_file, dir_get(RARCH_DIR_RECORD_OUTPUT), path_get(RARCH_PATH_RECORD), @@ -378,8 +382,8 @@ bool recording_init(void) params.aspect_ratio = (float)vp.width / vp.height; params.pix_fmt = FFEMU_PIX_BGR24; - global->record.gpu_width = vp.width; - global->record.gpu_height = vp.height; + recording_gpu_width = vp.width; + recording_gpu_height = vp.height; RARCH_LOG("%s %u x %u\n", msg_hash_to_str(MSG_DETECTED_VIEWPORT_OF), vp.width, vp.height); @@ -390,10 +394,10 @@ bool recording_init(void) } else { - if (global->record.width || global->record.height) + if (recording_width || recording_height) { - params.out_width = global->record.width; - params.out_height = global->record.height; + params.out_width = recording_width; + params.out_height = recording_height; } if (settings->video.force_aspect && @@ -453,3 +457,27 @@ void recording_driver_set_data_ptr(void *data) { recording_data = data; } + +bool *recording_driver_get_use_output_dir_ptr(void) +{ + return &recording_use_output_dir; +} + +unsigned *recording_driver_get_width(void) +{ + return &recording_width; +} + +unsigned *recording_driver_get_height(void) +{ + return &recording_height; +} + +void recording_driver_free_state(void) +{ + recording_use_output_dir = false; + recording_gpu_width = 0; + recording_gpu_height = 0; + recording_width = 0; + recording_height = 0; +} diff --git a/record/record_driver.h b/record/record_driver.h index 4928aefa8d..63d0d073ca 100644 --- a/record/record_driver.h +++ b/record/record_driver.h @@ -172,6 +172,14 @@ void recording_driver_clear_data_ptr(void); void recording_driver_set_data_ptr(void *data); +bool *recording_driver_get_use_output_dir_ptr(void); + +unsigned *recording_driver_get_width(void); + +unsigned *recording_driver_get_height(void); + +void recording_driver_free_state(void); + RETRO_END_DECLS #endif diff --git a/retroarch.c b/retroarch.c index fda3bac3d5..46c9d42fcf 100644 --- a/retroarch.c +++ b/retroarch.c @@ -757,16 +757,15 @@ static void retroarch_parse_input(int argc, char *argv[]) break; case RA_OPT_SIZE: - { - if (sscanf(optarg, "%ux%u", &global->record.width, - &global->record.height) != 2) + if (sscanf(optarg, "%ux%u", + recording_driver_get_width(), + recording_driver_get_height()) != 2) { RARCH_ERR("Wrong format for --size.\n"); retroarch_print_help(argv[0]); retroarch_fail(1, "retroarch_parse_input()"); } break; - } case RA_OPT_RECORDCONFIG: path_set(RARCH_PATH_RECORD_CONFIG, optarg); diff --git a/runloop.c b/runloop.c index ae049b2983..6dff25068c 100644 --- a/runloop.c +++ b/runloop.c @@ -761,6 +761,7 @@ bool runloop_ctl(enum runloop_ctl_state state, void *data) dir_clear(RARCH_DIR_RECORD_CONFIG); dir_clear(RARCH_DIR_RECORD_OUTPUT); dir_clear_all(); + recording_driver_free_state(); { global_t *global = global_get_ptr(); diff --git a/runloop.h b/runloop.h index 1b01967474..f44b070a24 100644 --- a/runloop.h +++ b/runloop.h @@ -154,17 +154,6 @@ typedef struct global } netplay; #endif - /* Recording. */ - struct - { - unsigned width; - unsigned height; - - size_t gpu_width; - size_t gpu_height; - bool use_output_dir; - } record; - /* Settings and/or global state that is specific to * a console-style implementation. */ struct