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) void uninit_video_input(void)
{ {
rarch_main_command(RARCH_CMD_OVERLAY_DEINIT); rarch_main_command(RARCH_CMD_OVERLAY_DEINIT);
rarch_main_command(RARCH_CMD_OSK_OVERLAY_DEINIT);
if ( if (
!driver.input_data_own && !driver.input_data_own &&
@ -485,9 +484,7 @@ void init_video(void)
init_video_input(tmp); init_video_input(tmp);
rarch_main_command(RARCH_CMD_OVERLAY_DEINIT); 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_OVERLAY_INIT);
rarch_main_command(RARCH_CMD_OSK_OVERLAY_INIT);
g_extern.measure_data.frame_time_samples_count = 0; g_extern.measure_data.frame_time_samples_count = 0;

View File

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