Due to limitations in how the input overlay driver talks

back to the video driver, we can only have one active overlay
state running at a time. So build around this
This commit is contained in:
twinaphex 2015-01-29 20:57:44 +01:00
parent 28f6922520
commit 0ea6a28b6b
2 changed files with 11 additions and 14 deletions

View File

@ -317,7 +317,6 @@ static void init_video_input(const input_driver_t *tmp)
void uninit_video_input(void)
{
rarch_main_command(RARCH_CMD_OVERLAY_DEINIT);
rarch_main_command(RARCH_CMD_OSK_OVERLAY_DEINIT);
if (
!driver.input_data_own &&
@ -485,9 +484,7 @@ void init_video(void)
init_video_input(tmp);
rarch_main_command(RARCH_CMD_OVERLAY_DEINIT);
rarch_main_command(RARCH_CMD_OSK_OVERLAY_DEINIT);
rarch_main_command(RARCH_CMD_OVERLAY_INIT);
rarch_main_command(RARCH_CMD_OSK_OVERLAY_INIT);
g_extern.measure_data.frame_time_samples_count = 0;

View File

@ -2687,10 +2687,14 @@ bool rarch_main_command(unsigned cmd)
break;
case RARCH_CMD_OSK_OVERLAY_STOP:
#ifdef HAVE_OVERLAY
driver.osk_active = false;
g_settings.osk.opacity = 0;
input_overlay_set_alpha_mod(driver.osk_overlay,
g_settings.osk.opacity);
rarch_main_command(RARCH_CMD_OSK_OVERLAY_DEINIT);
if (g_settings.input.overlay_enable)
rarch_main_command(RARCH_CMD_OSK_OVERLAY_INIT);
#endif
break;
case RARCH_CMD_OSK_OVERLAY_START:
@ -2698,18 +2702,14 @@ bool rarch_main_command(unsigned cmd)
if (!g_settings.osk.enable)
return false;
rarch_main_command(RARCH_CMD_OVERLAY_DEINIT);
rarch_main_command(RARCH_CMD_OSK_OVERLAY_INIT);
driver.osk_active = true;
g_settings.osk.opacity = 100;
input_overlay_set_alpha_mod(driver.osk_overlay,
g_settings.osk.opacity);
input_overlay_enable(driver.osk_overlay,
true);
#endif
break;
case RARCH_CMD_OSK_OVERLAY_DEINIT:
#ifdef HAVE_OVERLAY
if (driver.osk_active)
return false;
if (driver.osk_overlay)
input_overlay_free(driver.osk_overlay);
driver.osk_overlay = NULL;
@ -2720,7 +2720,7 @@ bool rarch_main_command(unsigned cmd)
rarch_main_command(RARCH_CMD_OSK_OVERLAY_DEINIT);
driver.osk_overlay = input_overlay_new(g_settings.osk.overlay, g_settings.osk.enable,
g_settings.osk.opacity, g_settings.osk.scale);
100, g_settings.osk.scale);
if (!driver.osk_overlay)
RARCH_ERR("Failed to load OSK overlay.\n");
#endif