| From 8e649097b0e11d8b975ba321f343142dd97889cb Mon Sep 17 00:00:00 2001 |
| From: Oliver Wolff <oliver.wolff@qt.io> |
| Date: Wed, 22 Aug 2018 13:12:07 +0200 |
| Subject: [PATCH 5/8] ANGLE: Fix initialization of zero-sized window |
| |
| The clientRect might be empty when creating a window of zero size. The |
| side effect of a division by zero is that matrix transformation fails |
| and hence the swapchain gets into an invalid state. |
| |
| Change-Id: Idbaed72deadb7b87052ac27e194a40d1810e6f7a |
| --- |
| .../libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.cpp | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.cpp |
| index c6d07fc888..3425fad95d 100644 |
| --- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.cpp |
| +++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/winrt/SwapChainPanelNativeWindow.cpp |
| @@ -324,8 +324,8 @@ HRESULT SwapChainPanelNativeWindow::createSwapChain(ID3D11Device *device, |
| |
| HRESULT SwapChainPanelNativeWindow::scaleSwapChain(const Size &windowSize, const RECT &clientRect) |
| { |
| - Size renderScale = {windowSize.Width / (float)clientRect.right, |
| - windowSize.Height / (float)clientRect.bottom}; |
| + Size renderScale = {windowSize.Width / std::max(LONG(1), clientRect.right), |
| + windowSize.Height / std::max(LONG(1), clientRect.bottom)}; |
| // Setup a scale matrix for the swap chain |
| DXGI_MATRIX_3X2_F scaleMatrix = {}; |
| scaleMatrix._11 = renderScale.Width; |
| -- |
| 2.15.0.windows.1 |
| |