diff --git a/driver.c b/driver.c index 47655999cc..c51413aed8 100644 --- a/driver.c +++ b/driver.c @@ -376,7 +376,7 @@ static void init_osk(void) if (!driver.osk_data) { RARCH_ERR("Failed to initialize OSK driver. Will continue without OSK.\n"); - g_extern.osk_active = false; + driver.osk_active = false; } } @@ -459,7 +459,7 @@ void init_camera(void) if (!driver.camera_data) { RARCH_ERR("Failed to initialize camera driver. Will continue without camera.\n"); - g_extern.camera_active = false; + driver.camera_active = false; } if (g_extern.system.camera_callback.initialized) @@ -560,7 +560,7 @@ void init_location(void) if (!driver.location_data) { RARCH_ERR("Failed to initialize location driver. Will continue without location.\n"); - g_extern.location_active = false; + driver.location_active = false; } if (g_extern.system.location_callback.initialized) @@ -772,7 +772,7 @@ void driver_set_monitor_refresh_rate(float hz) void driver_set_nonblock_state(bool nonblock) { /* Only apply non-block-state for video if we're using vsync. */ - if (g_extern.video_active && driver.video_data) + if (driver.video_active && driver.video_data) { bool video_nonblock = nonblock; if (!g_settings.video.vsync || g_extern.system.force_nonblock) @@ -780,7 +780,7 @@ void driver_set_nonblock_state(bool nonblock) driver.video->set_nonblock_state(driver.video_data, video_nonblock); } - if (g_extern.audio_active && driver.audio_data) + if (driver.audio_active && driver.audio_data) driver.audio->set_nonblock_state(driver.audio_data, g_settings.audio.sync ? nonblock : true); @@ -896,11 +896,11 @@ void init_drivers(void) init_audio(); /* Only initialize camera driver if we're ever going to use it. */ - if (g_extern.camera_active) + if (driver.camera_active) init_camera(); /* Only initialize location driver if we're ever going to use it. */ - if (g_extern.location_active) + if (driver.location_active) init_location(); init_osk(); @@ -1042,7 +1042,7 @@ void init_audio(void) if (!g_settings.audio.enable) { - g_extern.audio_active = false; + driver.audio_active = false; return; } @@ -1071,14 +1071,14 @@ void init_audio(void) if (!driver.audio_data) { RARCH_ERR("Failed to initialize audio driver. Will continue without audio.\n"); - g_extern.audio_active = false; + driver.audio_active = false; } g_extern.audio_data.use_float = false; - if (g_extern.audio_active && driver.audio->use_float(driver.audio_data)) + if (driver.audio_active && driver.audio->use_float(driver.audio_data)) g_extern.audio_data.use_float = true; - if (!g_settings.audio.sync && g_extern.audio_active) + if (!g_settings.audio.sync && driver.audio_active) { rarch_main_command(RARCH_CMD_AUDIO_SET_NONBLOCKING_STATE); g_extern.audio_data.chunk_size = @@ -1103,7 +1103,7 @@ void init_audio(void) { RARCH_ERR("Failed to initialize resampler \"%s\".\n", g_settings.audio.resampler); - g_extern.audio_active = false; + driver.audio_active = false; } rarch_assert(g_extern.audio_data.data = (float*) @@ -1117,7 +1117,7 @@ void init_audio(void) malloc(outsamples_max * sizeof(float))); g_extern.audio_data.rate_control = false; - if (!g_extern.system.audio_callback.callback && g_extern.audio_active && + if (!g_extern.system.audio_callback.callback && driver.audio_active && g_settings.audio.rate_control) { if (driver.audio->buffer_size && driver.audio->write_avail) @@ -1134,7 +1134,7 @@ void init_audio(void) g_extern.measure_data.buffer_free_samples_count = 0; - if (g_extern.audio_active && !g_extern.audio_data.mute && + if (driver.audio_active && !g_extern.audio_data.mute && g_extern.system.audio_callback.callback) { /* Threaded driver is initially stopped. */ @@ -1240,7 +1240,7 @@ void uninit_audio(void) if (!g_settings.audio.enable) { - g_extern.audio_active = false; + driver.audio_active = false; return; } diff --git a/driver.h b/driver.h index 013d6fbe33..8c939ecdf1 100644 --- a/driver.h +++ b/driver.h @@ -449,6 +449,12 @@ typedef struct driver void *resampler_data; void *recording_data; + bool audio_active; + bool video_active; + bool camera_active; + bool location_active; + bool osk_active; + #ifdef HAVE_MENU menu_handle_t *menu; const menu_ctx_driver_t *menu_ctx; diff --git a/dynamic.c b/dynamic.c index 7f62247edf..1ec47769bc 100644 --- a/dynamic.c +++ b/dynamic.c @@ -405,8 +405,8 @@ void uninit_libretro_sym(void) free(g_extern.system.special); free(g_extern.system.ports); memset(&g_extern.system, 0, sizeof(g_extern.system)); - g_extern.camera_active = false; - g_extern.location_active = false; + driver.camera_active = false; + driver.location_active = false; /* Performance counters no longer valid. */ retro_perf_clear(); @@ -895,7 +895,7 @@ bool rarch_environment_cb(unsigned cmd, void *data) cb->start = driver_camera_start; cb->stop = driver_camera_stop; g_extern.system.camera_callback = *cb; - g_extern.camera_active = cb->caps != 0; + driver.camera_active = cb->caps != 0; break; } @@ -909,7 +909,7 @@ bool rarch_environment_cb(unsigned cmd, void *data) cb->get_position = driver_location_get_position; cb->set_interval = driver_location_set_interval; g_extern.system.location_callback = *cb; - g_extern.location_active = true; + driver.location_active = true; break; } diff --git a/general.h b/general.h index 251a582066..46fc0c745b 100644 --- a/general.h +++ b/general.h @@ -421,11 +421,6 @@ struct global { bool verbosity; bool perfcnt_enable; - bool audio_active; - bool video_active; - bool camera_active; - bool location_active; - bool osk_active; bool force_fullscreen; bool core_shutdown_initiated; diff --git a/libretro_version_1.c b/libretro_version_1.c index 3dfda23cbb..534bca3df9 100644 --- a/libretro_version_1.c +++ b/libretro_version_1.c @@ -32,7 +32,7 @@ static void video_frame(const void *data, unsigned width, { const char *msg = NULL; - if (!g_extern.video_active) + if (!driver.video_active) return; g_extern.frame_cache.data = data; @@ -100,7 +100,7 @@ static void video_frame(const void *data, unsigned width, } if (!driver.video->frame(driver.video_data, data, width, height, pitch, msg)) - g_extern.video_active = false; + driver.video_active = false; } static void audio_sample(int16_t left, int16_t right) @@ -111,8 +111,8 @@ static void audio_sample(int16_t left, int16_t right) if (g_extern.audio_data.data_ptr < g_extern.audio_data.chunk_size) return; - g_extern.audio_active = rarch_audio_flush(g_extern.audio_data.conv_outsamples, - g_extern.audio_data.data_ptr) && g_extern.audio_active; + driver.audio_active = rarch_audio_flush(g_extern.audio_data.conv_outsamples, + g_extern.audio_data.data_ptr) && driver.audio_active; g_extern.audio_data.data_ptr = 0; } @@ -122,8 +122,8 @@ static size_t audio_sample_batch(const int16_t *data, size_t frames) if (frames > (AUDIO_CHUNK_SIZE_NONBLOCKING >> 1)) frames = AUDIO_CHUNK_SIZE_NONBLOCKING >> 1; - g_extern.audio_active = rarch_audio_flush(data, frames << 1) - && g_extern.audio_active; + driver.audio_active = rarch_audio_flush(data, frames << 1) + && driver.audio_active; return frames; } diff --git a/retroarch.c b/retroarch.c index abe5b1338e..73d30bba0a 100644 --- a/retroarch.c +++ b/retroarch.c @@ -476,7 +476,7 @@ bool rarch_audio_flush(const int16_t *data, size_t samples) if (g_extern.is_paused || g_extern.audio_data.mute) return true; - if (!g_extern.audio_active || !g_extern.audio_data.data) + if (!driver.audio_active || !g_extern.audio_data.data) return false; RARCH_PERFORMANCE_INIT(audio_convert_s16); @@ -1846,10 +1846,10 @@ static void check_stateslots( static inline void flush_rewind_audio(void) { /* We just rewound. Flush rewind audio buffer. */ - g_extern.audio_active = rarch_audio_flush(g_extern.audio_data.rewind_buf + driver.audio_active = rarch_audio_flush(g_extern.audio_data.rewind_buf + g_extern.audio_data.rewind_ptr, g_extern.audio_data.rewind_size - g_extern.audio_data.rewind_ptr) - && g_extern.audio_active; + && driver.audio_active; g_extern.frame_is_reverse = false; } @@ -2325,7 +2325,7 @@ static void check_mute(void) else if (!driver.audio->start(driver.audio_data)) { RARCH_ERR("Failed to unmute audio.\n"); - g_extern.audio_active = false; + driver.audio_active = false; } } @@ -2435,7 +2435,7 @@ static bool do_state_checks( if (BIND_PRESSED(trigger_input, RARCH_SCREENSHOT)) rarch_main_command(RARCH_CMD_TAKE_SCREENSHOT); - if (g_extern.audio_active) + if (driver.audio_active) { if (BIND_PRESSED(trigger_input, RARCH_MUTE)) check_mute(); @@ -2527,8 +2527,8 @@ static bool do_state_checks( static void init_state(void) { - g_extern.video_active = true; - g_extern.audio_active = true; + driver.video_active = true; + driver.audio_active = true; } static void deinit_log_file(void) @@ -3156,7 +3156,7 @@ void rarch_main_command(unsigned cmd) && !driver.audio->start(driver.audio_data)) { RARCH_ERR("Failed to start audio driver. Will continue without audio.\n"); - g_extern.audio_active = false; + driver.audio_active = false; } break; case RARCH_CMD_OVERLAY_INIT: