overlay_ptr is now a static global variable inside retroarch.c

This commit is contained in:
twinaphex 2019-07-10 06:53:47 +02:00
parent e6e4d09c33
commit fa2e1fb0c1
4 changed files with 79 additions and 53 deletions

View File

@ -1744,6 +1744,16 @@ bool command_event(enum event_command cmd, void *data)
switch (cmd) switch (cmd)
{ {
case CMD_EVENT_OVERLAY_DEINIT:
#ifdef HAVE_OVERLAY
retroarch_overlay_deinit();
#endif
break;
case CMD_EVENT_OVERLAY_INIT:
#ifdef HAVE_OVERLAY
retroarch_overlay_init();
#endif
break;
case CMD_EVENT_CHEAT_INDEX_PLUS: case CMD_EVENT_CHEAT_INDEX_PLUS:
cheat_manager_index_next(); cheat_manager_index_next();
break; break;
@ -2170,45 +2180,10 @@ TODO: Add a setting for these tweaks */
settings->bools.video_fps_show = !(settings->bools.video_fps_show); settings->bools.video_fps_show = !(settings->bools.video_fps_show);
} }
break; break;
case CMD_EVENT_OVERLAY_DEINIT:
#ifdef HAVE_OVERLAY
input_overlay_free(overlay_ptr);
overlay_ptr = NULL;
#endif
break;
case CMD_EVENT_OVERLAY_INIT:
{
#if defined(GEKKO)
/* Avoid a crash at startup or even when toggling overlay in rgui */
uint64_t memory_used = frontend_driver_get_used_memory();
if(memory_used > (72 * 1024 * 1024))
break;
#endif
command_event(CMD_EVENT_OVERLAY_DEINIT, NULL);
#ifdef HAVE_OVERLAY
{
const settings_t *settings = (const settings_t*)config_get_ptr();
if (settings->bools.input_overlay_enable)
{
task_push_overlay_load_default(input_overlay_loaded,
settings->paths.path_overlay,
settings->bools.input_overlay_hide_in_menu,
settings->bools.input_overlay_enable,
settings->floats.input_overlay_opacity,
settings->floats.input_overlay_scale,
NULL);
}
}
#endif
}
break;
case CMD_EVENT_OVERLAY_NEXT: case CMD_EVENT_OVERLAY_NEXT:
{
#ifdef HAVE_OVERLAY #ifdef HAVE_OVERLAY
const settings_t *settings = (const settings_t*)config_get_ptr(); retroarch_overlay_next();
input_overlay_next(overlay_ptr, settings->floats.input_overlay_opacity);
#endif #endif
}
break; break;
case CMD_EVENT_DSP_FILTER_DEINIT: case CMD_EVENT_DSP_FILTER_DEINIT:
audio_driver_dsp_filter_free(); audio_driver_dsp_filter_free();
@ -2398,20 +2373,14 @@ TODO: Add a setting for these tweaks */
audio_driver_set_nonblocking_state(boolean); audio_driver_set_nonblocking_state(boolean);
break; break;
case CMD_EVENT_OVERLAY_SET_SCALE_FACTOR: case CMD_EVENT_OVERLAY_SET_SCALE_FACTOR:
{
#ifdef HAVE_OVERLAY #ifdef HAVE_OVERLAY
const settings_t *settings = (const settings_t*)config_get_ptr(); retroarch_overlay_set_scale_factor();
input_overlay_set_scale_factor(overlay_ptr, settings->floats.input_overlay_scale);
#endif #endif
}
break; break;
case CMD_EVENT_OVERLAY_SET_ALPHA_MOD: case CMD_EVENT_OVERLAY_SET_ALPHA_MOD:
{
#ifdef HAVE_OVERLAY #ifdef HAVE_OVERLAY
const settings_t *settings = (const settings_t*)config_get_ptr(); retroarch_overlay_set_alpha_mod();
input_overlay_set_alpha_mod(overlay_ptr, settings->floats.input_overlay_opacity);
#endif #endif
}
break; break;
case CMD_EVENT_AUDIO_REINIT: case CMD_EVENT_AUDIO_REINIT:
driver_uninit(DRIVER_AUDIO_MASK); driver_uninit(DRIVER_AUDIO_MASK);

View File

@ -241,9 +241,6 @@ void input_overlay_loaded(retro_task_t *task,
void input_overlay_set_visibility(int overlay_idx,enum overlay_visibility vis); void input_overlay_set_visibility(int overlay_idx,enum overlay_visibility vis);
/* FIXME - temporary. Globals are bad */
extern input_overlay_t *overlay_ptr;
RETRO_END_DECLS RETRO_END_DECLS
#endif #endif

View File

@ -1379,7 +1379,7 @@ struct input_overlay
input_overlay_state_t overlay_state; input_overlay_state_t overlay_state;
}; };
input_overlay_t *overlay_ptr = NULL; static input_overlay_t *overlay_ptr = NULL;
#endif #endif
/* INPUT GLOBAL VARIABLES */ /* INPUT GLOBAL VARIABLES */
@ -4530,6 +4530,54 @@ static void input_poll_overlay(input_overlay_t *ol, float opacity,
else else
input_overlay_poll_clear(ol, opacity); input_overlay_poll_clear(ol, opacity);
} }
void retroarch_overlay_next(void)
{
settings_t *settings = configuration_settings;
input_overlay_next(overlay_ptr, settings->floats.input_overlay_opacity);
}
void retroarch_overlay_set_scale_factor(void)
{
settings_t *settings = configuration_settings;
input_overlay_set_scale_factor(overlay_ptr, settings->floats.input_overlay_scale);
}
void retroarch_overlay_set_alpha_mod(void)
{
#ifdef HAVE_OVERLAY
settings_t *settings = configuration_settings;
input_overlay_set_alpha_mod(overlay_ptr, settings->floats.input_overlay_opacity);
#endif
}
void retroarch_overlay_deinit(void)
{
input_overlay_free(overlay_ptr);
overlay_ptr = NULL;
}
void retroarch_overlay_init(void)
{
settings_t *settings = configuration_settings;
#if defined(GEKKO)
/* Avoid a crash at startup or even when toggling overlay in rgui */
uint64_t memory_used = frontend_driver_get_used_memory();
if(memory_used > (72 * 1024 * 1024))
break;
#endif
retroarch_overlay_deinit();
if (settings->bools.input_overlay_enable)
task_push_overlay_load_default(input_overlay_loaded,
settings->paths.path_overlay,
settings->bools.input_overlay_hide_in_menu,
settings->bools.input_overlay_enable,
settings->floats.input_overlay_opacity,
settings->floats.input_overlay_scale,
NULL);
}
#endif #endif
/* INPUT REMOTE */ /* INPUT REMOTE */
@ -11185,8 +11233,10 @@ static bool video_driver_init_internal(bool *video_is_threaded)
video_driver_init_input(tmp); video_driver_init_input(tmp);
command_event(CMD_EVENT_OVERLAY_DEINIT, NULL); #ifdef HAVE_OVERLAY
command_event(CMD_EVENT_OVERLAY_INIT, NULL); retroarch_overlay_deinit();
retroarch_overlay_init();
#endif
#ifdef HAVE_VIDEO_LAYOUT #ifdef HAVE_VIDEO_LAYOUT
if (settings->bools.video_layout_enable) if (settings->bools.video_layout_enable)
@ -16185,7 +16235,7 @@ void rarch_menu_running_finished(bool quit)
#ifdef HAVE_OVERLAY #ifdef HAVE_OVERLAY
if (!quit) if (!quit)
if (settings && settings->bools.input_overlay_hide_in_menu) if (settings && settings->bools.input_overlay_hide_in_menu)
command_event(CMD_EVENT_OVERLAY_INIT, NULL); retroarch_overlay_init();
#endif #endif
} }
@ -17686,12 +17736,12 @@ static enum runloop_state runloop_check_state(
if (input_driver_keyboard_linefeed_enable) if (input_driver_keyboard_linefeed_enable)
{ {
prev_overlay_restore = false; prev_overlay_restore = false;
command_event(CMD_EVENT_OVERLAY_INIT, NULL); retroarch_overlay_init();
} }
else if (prev_overlay_restore) else if (prev_overlay_restore)
{ {
if (!settings->bools.input_overlay_hide_in_menu) if (!settings->bools.input_overlay_hide_in_menu)
command_event(CMD_EVENT_OVERLAY_INIT, NULL); retroarch_overlay_init();
prev_overlay_restore = false; prev_overlay_restore = false;
} }
} }

View File

@ -2259,6 +2259,16 @@ void driver_camera_stop(void);
bool driver_camera_start(void); bool driver_camera_start(void);
void retroarch_overlay_next(void);
void retroarch_overlay_set_scale_factor(void);
void retroarch_overlay_set_alpha_mod(void);
void retroarch_overlay_deinit(void);
void retroarch_overlay_init(void);
RETRO_END_DECLS RETRO_END_DECLS
#endif #endif