mirror of
https://github.com/RetroDECK/Duckstation.git
synced 2024-11-23 14:25:37 +00:00
HostInterface: Don't sleep when syncing to host refresh
This commit is contained in:
parent
0884954d10
commit
16ad54143b
|
@ -609,6 +609,7 @@ void CommonHostInterface::UpdateSpeedLimiterState()
|
||||||
(m_fast_forward_enabled ? g_settings.fast_forward_speed : g_settings.emulation_speed);
|
(m_fast_forward_enabled ? g_settings.fast_forward_speed : g_settings.emulation_speed);
|
||||||
m_speed_limiter_enabled = (target_speed != 0.0f);
|
m_speed_limiter_enabled = (target_speed != 0.0f);
|
||||||
|
|
||||||
|
bool syncing_to_host = false;
|
||||||
if (g_settings.sync_to_host_refresh_rate && g_settings.audio_resampling && target_speed == 1.0f &&
|
if (g_settings.sync_to_host_refresh_rate && g_settings.audio_resampling && target_speed == 1.0f &&
|
||||||
g_settings.video_sync_enabled && m_display && System::IsRunning())
|
g_settings.video_sync_enabled && m_display && System::IsRunning())
|
||||||
{
|
{
|
||||||
|
@ -616,10 +617,10 @@ void CommonHostInterface::UpdateSpeedLimiterState()
|
||||||
if (m_display->GetHostRefreshRate(&host_refresh_rate))
|
if (m_display->GetHostRefreshRate(&host_refresh_rate))
|
||||||
{
|
{
|
||||||
const float ratio = host_refresh_rate / System::GetThrottleFrequency();
|
const float ratio = host_refresh_rate / System::GetThrottleFrequency();
|
||||||
const bool can_sync = (ratio >= 0.95f && ratio <= 1.05f);
|
syncing_to_host = (ratio >= 0.95f && ratio <= 1.05f);
|
||||||
Log_InfoPrintf("Refresh rate: Host=%fhz Guest=%fhz Ratio=%f - %s", host_refresh_rate,
|
Log_InfoPrintf("Refresh rate: Host=%fhz Guest=%fhz Ratio=%f - %s", host_refresh_rate,
|
||||||
System::GetThrottleFrequency(), ratio, can_sync ? "can sync" : "can't sync");
|
System::GetThrottleFrequency(), ratio, syncing_to_host ? "can sync" : "can't sync");
|
||||||
if (can_sync)
|
if (syncing_to_host)
|
||||||
target_speed *= ratio;
|
target_speed *= ratio;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -663,6 +664,9 @@ void CommonHostInterface::UpdateSpeedLimiterState()
|
||||||
System::SetTargetSpeed(m_speed_limiter_enabled ? target_speed : 1.0f);
|
System::SetTargetSpeed(m_speed_limiter_enabled ? target_speed : 1.0f);
|
||||||
System::ResetPerformanceCounters();
|
System::ResetPerformanceCounters();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (syncing_to_host)
|
||||||
|
m_speed_limiter_enabled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CommonHostInterface::RecreateSystem()
|
void CommonHostInterface::RecreateSystem()
|
||||||
|
|
Loading…
Reference in a new issue