[vlc-commits] direct3d11: make sure we always select a format for the swapchain

Steve Lhomme git at videolan.org
Thu May 9 15:31:15 CEST 2019


vlc | branch: master | Steve Lhomme <robux4 at ycbcr.xyz> | Thu May  9 13:09:01 2019 +0200| [da7a0f3f28a73fa7e98ee36cf763e374b1dee4a4] | committer: Steve Lhomme

direct3d11: make sure we always select a format for the swapchain

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=da7a0f3f28a73fa7e98ee36cf763e374b1dee4a4
---

 modules/video_output/win32/direct3d11.c | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/modules/video_output/win32/direct3d11.c b/modules/video_output/win32/direct3d11.c
index d8610cc395..cbaf66e64c 100644
--- a/modules/video_output/win32/direct3d11.c
+++ b/modules/video_output/win32/direct3d11.c
@@ -1163,12 +1163,10 @@ static bool canHandleConversion(const dxgi_color_space *src, const dxgi_color_sp
 static void SelectSwapchainColorspace(struct d3d11_local_swapchain *display, const struct direct3d_cfg_t *cfg)
 {
     HRESULT hr;
-    int best = -1;
+    int best = 0;
     int score, best_score = 0;
     UINT support;
     IDXGISwapChain3 *dxgiswapChain3 = NULL;
-    display->colorspace = &color_spaces[0];
-
     hr = IDXGISwapChain_QueryInterface( display->dxgiswapChain, &IID_IDXGISwapChain3, (void **)&dxgiswapChain3);
     if (FAILED(hr)) {
         msg_Warn(display->obj, "could not get a IDXGISwapChain3");
@@ -1177,6 +1175,7 @@ static void SelectSwapchainColorspace(struct d3d11_local_swapchain *display, con
 
     /* pick the best output based on color support and transfer */
     /* TODO support YUV output later */
+    best = -1;
     for (int i=0; color_spaces[i].name; ++i)
     {
         hr = IDXGISwapChain3_CheckColorSpaceSupport(dxgiswapChain3, color_spaces[i].dxgi, &support);
@@ -1246,13 +1245,11 @@ static void SelectSwapchainColorspace(struct d3d11_local_swapchain *display, con
 
     hr = IDXGISwapChain3_SetColorSpace1(dxgiswapChain3, color_spaces[best].dxgi);
     if (SUCCEEDED(hr))
-    {
-        display->colorspace = &color_spaces[best];
-        msg_Dbg(display->obj, "using colorspace %s", display->colorspace->name);
-    }
+        msg_Dbg(display->obj, "using colorspace %s", color_spaces[best].name);
     else
-        msg_Err(display->obj, "Failed to set colorspace %s. (hr=0x%lX)", display->colorspace->name, hr);
+        msg_Err(display->obj, "Failed to set colorspace %s. (hr=0x%lX)", color_spaces[best].name, hr);
 done:
+    display->colorspace = &color_spaces[best];
     if (dxgiswapChain3)
         IDXGISwapChain3_Release(dxgiswapChain3);
 }



More information about the vlc-commits mailing list