From ccac72f1e78713c4d2d1350aed87ee0ee3db08da Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 5 Aug 2015 12:58:25 +0200 Subject: [PATCH] Refactor is_paused --- audio/audio_driver.c | 2 +- command_event.c | 8 ++++---- gfx/drivers/gl.c | 2 +- gfx/video_thread_wrapper.c | 3 +-- input/drivers/android_input.c | 7 +++---- runloop.c | 38 +++++++++++++++++++++-------------- runloop.h | 5 ++++- screenshot.c | 4 ++-- ui/drivers/ui_cocoatouch.m | 6 +++--- 9 files changed, 42 insertions(+), 33 deletions(-) diff --git a/audio/audio_driver.c b/audio/audio_driver.c index 359f2751ae..561690e6a1 100644 --- a/audio/audio_driver.c +++ b/audio/audio_driver.c @@ -616,7 +616,7 @@ bool audio_driver_flush(const int16_t *data, size_t samples) driver->recording->push_audio(driver->recording_data, &ffemu_data); } - if (global->is_paused || settings->audio.mute_enable) + if (rarch_main_is_paused() || settings->audio.mute_enable) return true; if (!driver->audio_active || !audio_data.data) return false; diff --git a/command_event.c b/command_event.c index e4d4c442f1..2fd26f7070 100644 --- a/command_event.c +++ b/command_event.c @@ -1424,7 +1424,7 @@ bool event_command(enum event_command cmd) #endif break; case EVENT_CMD_PAUSE_CHECKS: - if (global->is_paused) + if (rarch_main_is_paused()) { RARCH_LOG("%s\n", msg_hash_to_str(MSG_PAUSED)); event_command(EVENT_CMD_AUDIO_STOP); @@ -1439,15 +1439,15 @@ bool event_command(enum event_command cmd) } break; case EVENT_CMD_PAUSE_TOGGLE: - global->is_paused = !global->is_paused; + rarch_main_set_pause(!rarch_main_is_paused()); event_command(EVENT_CMD_PAUSE_CHECKS); break; case EVENT_CMD_UNPAUSE: - global->is_paused = false; + rarch_main_set_pause(false); event_command(EVENT_CMD_PAUSE_CHECKS); break; case EVENT_CMD_PAUSE: - global->is_paused = true; + rarch_main_set_pause(true); event_command(EVENT_CMD_PAUSE_CHECKS); break; case EVENT_CMD_MENU_PAUSE_LIBRETRO: diff --git a/gfx/drivers/gl.c b/gfx/drivers/gl.c index 8c2c53ab8d..bb39a98fd4 100644 --- a/gfx/drivers/gl.c +++ b/gfx/drivers/gl.c @@ -1715,7 +1715,7 @@ static bool gl_frame(void *data, const void *frame, * and pause to prevent flicker. */ if (settings->video.black_frame_insertion && !driver->nonblock_state && !global->is_slowmotion - && !global->is_paused) + && !rarch_main_is_paused()) { gfx_ctx_swap_buffers(gl); glClear(GL_COLOR_BUFFER_BIT); diff --git a/gfx/video_thread_wrapper.c b/gfx/video_thread_wrapper.c index aafc2bcfcf..4faf5a9823 100644 --- a/gfx/video_thread_wrapper.c +++ b/gfx/video_thread_wrapper.c @@ -431,9 +431,8 @@ static bool thread_alive(void *data) { bool ret; thread_video_t *thr = (thread_video_t*)data; - global_t *global = global_get_ptr(); - if (global->is_paused) + if (rarch_main_is_paused()) { thread_packet_t pkt = { CMD_ALIVE }; thread_send_and_wait(thr, &pkt); diff --git a/input/drivers/android_input.c b/input/drivers/android_input.c index d2f74366e8..ca07060c0c 100644 --- a/input/drivers/android_input.c +++ b/input/drivers/android_input.c @@ -295,7 +295,6 @@ static void engine_handle_cmd(void) { int8_t cmd; struct android_app *android_app = (struct android_app*)g_android; - global_t *global = global_get_ptr(); driver_t *driver = driver_get_ptr(); rarch_system_info_t *system = rarch_system_info_get_ptr(); @@ -331,7 +330,7 @@ static void engine_handle_cmd(void) scond_broadcast(android_app->cond); slock_unlock(android_app->mutex); - if (global->is_paused) + if (rarch_main_is_paused()) event_command(EVENT_CMD_REINIT); break; @@ -358,7 +357,7 @@ static void engine_handle_cmd(void) if (!system->shutdown) { RARCH_LOG("Pausing RetroArch.\n"); - global->is_paused = true; + rarch_main_set_paused(true); rarch_main_set_idle(true); } break; @@ -388,7 +387,7 @@ static void engine_handle_cmd(void) break; case APP_CMD_GAINED_FOCUS: - global->is_paused = false; + rarch_main_set_paused(false); rarch_main_set_idle(false); if ((android_app->sensor_state_mask diff --git a/runloop.c b/runloop.c index 9b11e845bd..0774797a45 100644 --- a/runloop.c +++ b/runloop.c @@ -45,6 +45,7 @@ static struct global g_extern; static bool main_is_idle; +static bool main_is_paused; /** * check_pause: @@ -57,18 +58,17 @@ static bool main_is_idle; * Returns: true if libretro pause key was toggled, otherwise false. **/ static bool check_pause(driver_t *driver, settings_t *settings, - global_t *global, bool pause_pressed, bool frameadvance_pressed) { static bool old_focus = true; bool focus = true; enum event_command cmd = EVENT_CMD_NONE; - bool old_is_paused = global ? global->is_paused : false; + bool old_is_paused = main_is_paused; const video_driver_t *video = driver ? (const video_driver_t*)driver->video : NULL; /* FRAMEADVANCE will set us into pause mode. */ - pause_pressed |= !global->is_paused && frameadvance_pressed; + pause_pressed |= !main_is_paused && frameadvance_pressed; if (settings->pause_nonactive) focus = video->focus(driver->video_data); @@ -85,7 +85,7 @@ static bool check_pause(driver_t *driver, settings_t *settings, if (cmd != EVENT_CMD_NONE) event_command(cmd); - if (global->is_paused == old_is_paused) + if (main_is_paused == old_is_paused) return false; return true; @@ -187,7 +187,7 @@ static void check_rewind(settings_t *settings, audio_driver_setup_rewind(); rarch_main_msg_queue_push_new(MSG_REWINDING, 0, - global->is_paused ? 1 : 30, true); + main_is_paused ? 1 : 30, true); pretro_unserialize(buf, global->rewind.size); if (global->bsv.movie) @@ -449,7 +449,7 @@ static int do_pre_state_checks(settings_t *settings, if (cmd->overlay_next_pressed) event_command(EVENT_CMD_OVERLAY_NEXT); - if (!global->is_paused || menu_driver_alive()) + if (!main_is_paused || menu_driver_alive()) { if (cmd->fullscreen_toggle) event_command(EVENT_CMD_FULLSCREEN_TOGGLE); @@ -481,7 +481,6 @@ static int do_netplay_state_checks( #endif static int do_pause_state_checks( - global_t *global, bool pause_pressed, bool frameadvance_pressed, bool fullscreen_toggle_pressed, @@ -489,7 +488,7 @@ static int do_pause_state_checks( { bool check_is_oneshot = frameadvance_pressed || rewind_pressed; - if (!global->is_paused) + if (!main_is_paused) return 0; if (fullscreen_toggle_pressed) @@ -537,11 +536,10 @@ static int do_state_checks(driver_t *driver, settings_t *settings, cmd->fullscreen_toggle); #endif - check_pause(driver, settings, global, + check_pause(driver, settings, cmd->pause_pressed, cmd->frameadvance_pressed); if (do_pause_state_checks( - global, cmd->pause_pressed, cmd->frameadvance_pressed, cmd->fullscreen_toggle, @@ -634,7 +632,7 @@ static void rarch_update_frame_time(driver_t *driver, settings_t *settings, { retro_time_t curr_time = rarch_get_time_usec(); retro_time_t delta = curr_time - system->frame_time_last; - bool is_locked_fps = global->is_paused || driver->nonblock_state; + bool is_locked_fps = main_is_paused || driver->nonblock_state; is_locked_fps |= !!driver->recording_data; @@ -791,13 +789,13 @@ static INLINE retro_input_t input_keys_pressed(driver_t *driver, * * Returns: always true (1). **/ -static bool input_flush(retro_input_t *input, global_t *global) +static bool input_flush(retro_input_t *input) { *input = 0; /* If core was paused before entering menu, evoke * pause toggle to wake it up. */ - if (global->is_paused) + if (main_is_paused) BIT64_SET(*input, RARCH_PAUSE_TOGGLE); return true; @@ -871,11 +869,11 @@ global_t *global_get_ptr(void) void rarch_main_state_free(void) { main_is_idle = false; + main_is_paused = false; g_extern.ui_companion_is_on_foreground = false; g_extern.frames.limit.minimum_time = 0.0; g_extern.frames.limit.last_time = 0.0; g_extern.is_slowmotion = false; - g_extern.is_paused = false; g_extern.max_frames = 0; } @@ -914,11 +912,21 @@ void rarch_main_clear_state(void) rarch_main_global_free(); } +void rarch_main_set_pause(unsigned enable) +{ + main_is_paused = enable; +} + void rarch_main_set_idle(unsigned enable) { main_is_idle = enable; } +bool rarch_main_is_paused(void) +{ + return main_is_paused; +} + bool rarch_main_is_idle(void) { return main_is_idle; @@ -1031,7 +1039,7 @@ int rarch_main_iterate(void) last_input = input; if (driver->flushing_input) - driver->flushing_input = (input) ? input_flush(&input, global) : false; + driver->flushing_input = (input) ? input_flush(&input) : false; trigger_input = input & ~old_input; diff --git a/runloop.h b/runloop.h index e3b5081b76..d6026b47aa 100644 --- a/runloop.h +++ b/runloop.h @@ -55,7 +55,6 @@ typedef struct global } frames; bool is_slowmotion; - bool is_paused; unsigned max_frames; bool verbosity; @@ -344,6 +343,10 @@ FILE *rarch_main_log_file(void); bool rarch_main_is_idle(void); +bool rarch_main_is_paused(void); + +void rarch_main_set_pause(unsigned enable); + void rarch_main_set_idle(unsigned enable); void rarch_main_state_free(void); diff --git a/screenshot.c b/screenshot.c index 8baca05a6c..c3d5558275 100644 --- a/screenshot.c +++ b/screenshot.c @@ -330,9 +330,9 @@ bool take_screenshot(void) msg = msg_hash_to_str(MSG_FAILED_TO_TAKE_SCREENSHOT); } - rarch_main_msg_queue_push(msg, 1, global->is_paused ? 1 : 180, true); + rarch_main_msg_queue_push(msg, 1, rarch_main_is_paused() ? 1 : 180, true); - if (global->is_paused) + if (rarch_main_is_paused()) video_driver_cached_frame(); return ret; diff --git a/ui/drivers/ui_cocoatouch.m b/ui/drivers/ui_cocoatouch.m index 69501b4ba0..4b2816f676 100644 --- a/ui/drivers/ui_cocoatouch.m +++ b/ui/drivers/ui_cocoatouch.m @@ -46,8 +46,8 @@ static void rarch_enable_ui(void) { global_t *global = global_get_ptr(); - global->is_paused = true; global->ui_companion_is_on_foreground = true; + rarch_main_set_paused(true); rarch_main_set_idle(true); } @@ -55,8 +55,8 @@ static void rarch_disable_ui(void) { global_t *global = global_get_ptr(); - global->is_paused = false; global->ui_companion_is_on_foreground = false; + rarch_main_set_paused(false); rarch_main_set_idle(false); } @@ -64,7 +64,7 @@ static void rarch_draw(void) { global_t *global = global_get_ptr(); int ret = 0; - bool iterate = iterate_observer && !global->is_paused; + bool iterate = iterate_observer && !(rarch_main_is_paused()); if (iterate) {