Refactor is_paused

This commit is contained in:
twinaphex 2015-08-05 12:58:25 +02:00
parent 74ee9b05f3
commit ccac72f1e7
9 changed files with 42 additions and 33 deletions

View File

@ -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;

View File

@ -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:

View File

@ -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);

View File

@ -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);

View File

@ -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

View File

@ -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;

View File

@ -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);

View File

@ -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;

View File

@ -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)
{