From 87c2174f7ec8baacfc4a2395805d84bef5af67c4 Mon Sep 17 00:00:00 2001 From: OBattler Date: Mon, 20 Nov 2017 09:57:45 +0100 Subject: [PATCH] Direct3D now always calls EndScene if BeginScene was successful. --- src/win/win_d3d.cc | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/win/win_d3d.cc b/src/win/win_d3d.cc index 483c89016..bc72af635 100644 --- a/src/win/win_d3d.cc +++ b/src/win/win_d3d.cc @@ -121,6 +121,7 @@ static void d3d_blit_fs(int x, int y, int y1, int y2, int w, int h) { HRESULT hr = D3D_OK; + HRESULT hbsr = D3D_OK; VOID* pVoid; D3DLOCKED_RECT dr; RECT w_rect; @@ -191,7 +192,7 @@ d3d_blit_fs(int x, int y, int y1, int y2, int w, int h) hr = v_buffer->Unlock(); if (hr == D3D_OK) - hr = d3ddev->BeginScene(); + hbsr = hr = d3ddev->BeginScene(); if (hr == D3D_OK) { if (hr == D3D_OK) @@ -211,11 +212,11 @@ d3d_blit_fs(int x, int y, int y1, int y2, int w, int h) if (hr == D3D_OK) hr = d3ddev->SetTexture(0, NULL); - - if (hr == D3D_OK) - hr = d3ddev->EndScene(); } + if (hbsr == D3D_OK) + hr = d3ddev->EndScene(); + if (hr == D3D_OK) hr = d3ddev->Present(NULL, NULL, d3d_device_window, NULL); @@ -228,6 +229,7 @@ static void d3d_blit(int x, int y, int y1, int y2, int w, int h) { HRESULT hr = D3D_OK; + HRESULT hbsr = D3D_OK; VOID* pVoid; D3DLOCKED_RECT dr; RECT r; @@ -284,7 +286,7 @@ d3d_blit(int x, int y, int y1, int y2, int w, int h) hr = v_buffer->Unlock(); // unlock the vertex buffer if (hr == D3D_OK) - hr = d3ddev->BeginScene(); + hbsr = hr = d3ddev->BeginScene(); if (hr == D3D_OK) { if (hr == D3D_OK) @@ -301,11 +303,11 @@ d3d_blit(int x, int y, int y1, int y2, int w, int h) if (hr == D3D_OK) hr = d3ddev->SetTexture(0, NULL); - - if (hr == D3D_OK) - hr = d3ddev->EndScene(); } + if (hbsr == D3D_OK) + hr = d3ddev->EndScene(); + if (hr == D3D_OK) hr = d3ddev->Present(NULL, NULL, d3d_hwnd, NULL);