d3d11videosink: Fix rendering with initial fullscreen state
authorSeungha Yang <seungha@centricular.com>
Wed, 11 Oct 2023 17:26:07 +0000 (02:26 +0900)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Thu, 12 Oct 2023 00:24:58 +0000 (00:24 +0000)
Change fullscreen mode once the swapchain is fully configured

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5466>

subprojects/gst-plugins-bad/sys/d3d11/gstd3d11window_win32.cpp

index eb415f8..8cfc370 100644 (file)
@@ -1222,6 +1222,9 @@ gst_d3d11_window_win32_show (GstD3D11Window * window)
       PostMessageA (self->internal_hwnd, WM_GST_D3D11_SHOW_WINDOW, 0, 0);
     }
 
+    if (g_atomic_int_get (&self->pending_fullscreen_count) > 0)
+      PostMessageA (self->internal_hwnd, WM_GST_D3D11_FULLSCREEN, 0, 0);
+
     self->visible = TRUE;
   }
 }
@@ -1289,7 +1292,8 @@ gst_d3d11_window_win32_change_fullscreen_mode (GstD3D11Window * window)
 
   if (self->internal_hwnd) {
     g_atomic_int_add (&self->pending_fullscreen_count, 1);
-    PostMessageA (self->internal_hwnd, WM_GST_D3D11_FULLSCREEN, 0, 0);
+    if (self->visible)
+      PostMessageA (self->internal_hwnd, WM_GST_D3D11_FULLSCREEN, 0, 0);
   }
 }