diff --git a/src/core/gpu_thread.cpp b/src/core/gpu_thread.cpp index 3afb80303..008e6bc10 100644 --- a/src/core/gpu_thread.cpp +++ b/src/core/gpu_thread.cpp @@ -814,19 +814,22 @@ bool GPUThread::CreateGPUBackendOnThread(GPURenderer renderer, bool upload_vram, void GPUThread::ReconfigureOnThread(GPUThreadReconfigureCommand* cmd) { + // Store state. + s_state.requested_vsync = cmd->vsync_mode; + s_state.requested_allow_present_throttle = cmd->allow_present_throttle; + s_state.requested_fullscreen_ui = cmd->start_fullscreen_ui.value_or(s_state.requested_fullscreen_ui); + // Are we shutting down everything? if (!cmd->renderer.has_value() && !s_state.requested_fullscreen_ui) { DestroyGPUBackendOnThread(); DestroyGPUPresenterOnThread(); DestroyDeviceOnThread(true); + s_state.game_serial = {}; return; } - // Store state. - s_state.requested_vsync = cmd->vsync_mode; - s_state.requested_allow_present_throttle = cmd->allow_present_throttle; - s_state.requested_fullscreen_ui = cmd->start_fullscreen_ui.value_or(s_state.requested_fullscreen_ui); + // Serial clear must be after backend destroy, otherwise textures won't dump. s_state.game_serial = std::move(cmd->game_serial); g_gpu_settings = std::move(cmd->settings);