Host: Fix error when switching to surfaceless

This commit is contained in:
Stenzek 2024-10-20 22:02:16 +10:00
parent 4666057158
commit 428c3e3426
No known key found for this signature in database
1 changed files with 13 additions and 4 deletions

View File

@ -378,10 +378,19 @@ void Host::UpdateDisplayWindow(bool fullscreen)
g_gpu_device->DestroyMainSwapChain();
Error error;
std::optional<WindowInfo> wi;
if (!(wi = Host::AcquireRenderWindow(g_gpu_device->GetRenderAPI(), fullscreen, fullscreen_mode.has_value(), &error))
.has_value() ||
!g_gpu_device->RecreateMainSwapChain(wi.value(), vsync_mode, allow_present_throttle,
std::optional<WindowInfo> wi =
Host::AcquireRenderWindow(g_gpu_device->GetRenderAPI(), fullscreen, fullscreen_mode.has_value(), &error);
if (!wi.has_value())
{
Host::ReportFatalError("Failed to get render window after update", error.GetDescription());
return;
}
// if surfaceless, just leave it
if (wi->IsSurfaceless())
return;
if (!g_gpu_device->RecreateMainSwapChain(wi.value(), vsync_mode, allow_present_throttle,
fullscreen_mode.has_value() ? &fullscreen_mode.value() : nullptr,
exclusive_fullscreen_control, &error))
{