mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-23 18:21:04 +00:00
d3d11window: Invoke initial resize method from baseclass
... instead of calling from subclass in order for baseclass to handle more things between swapchain creation and resource creation.
This commit is contained in:
parent
7aad9187e4
commit
c1d2d9171d
5 changed files with 91 additions and 64 deletions
|
@ -103,6 +103,8 @@ static void gst_d3d11_window_get_property (GObject * object, guint prop_id,
|
||||||
static void gst_d3d11_window_dispose (GObject * object);
|
static void gst_d3d11_window_dispose (GObject * object);
|
||||||
static GstFlowReturn gst_d3d111_window_present (GstD3D11Window * self,
|
static GstFlowReturn gst_d3d111_window_present (GstD3D11Window * self,
|
||||||
GstBuffer * buffer);
|
GstBuffer * buffer);
|
||||||
|
static void gst_d3d11_window_on_resize_default (GstD3D11Window * window,
|
||||||
|
guint width, guint height);
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gst_d3d11_window_class_init (GstD3D11WindowClass * klass)
|
gst_d3d11_window_class_init (GstD3D11WindowClass * klass)
|
||||||
|
@ -113,6 +115,8 @@ gst_d3d11_window_class_init (GstD3D11WindowClass * klass)
|
||||||
gobject_class->get_property = gst_d3d11_window_get_property;
|
gobject_class->get_property = gst_d3d11_window_get_property;
|
||||||
gobject_class->dispose = gst_d3d11_window_dispose;
|
gobject_class->dispose = gst_d3d11_window_dispose;
|
||||||
|
|
||||||
|
klass->on_resize = GST_DEBUG_FUNCPTR (gst_d3d11_window_on_resize_default);
|
||||||
|
|
||||||
g_object_class_install_property (gobject_class, PROP_D3D11_DEVICE,
|
g_object_class_install_property (gobject_class, PROP_D3D11_DEVICE,
|
||||||
g_param_spec_object ("d3d11device", "D3D11 Device",
|
g_param_spec_object ("d3d11device", "D3D11 Device",
|
||||||
"GstD3D11Device object for creating swapchain",
|
"GstD3D11Device object for creating swapchain",
|
||||||
|
@ -283,8 +287,9 @@ gst_d3d11_window_dispose (GObject * object)
|
||||||
G_OBJECT_CLASS (parent_class)->dispose (object);
|
G_OBJECT_CLASS (parent_class)->dispose (object);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
static void
|
||||||
gst_d3d11_window_on_resize (GstD3D11Window * window, guint width, guint height)
|
gst_d3d11_window_on_resize_default (GstD3D11Window * window, guint width,
|
||||||
|
guint height)
|
||||||
{
|
{
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
ID3D11Device *device_handle;
|
ID3D11Device *device_handle;
|
||||||
|
@ -690,6 +695,9 @@ gst_d3d11_window_prepare (GstD3D11Window * window, guint width, guint height,
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* call resize to allocated resources */
|
||||||
|
klass->on_resize (window, width, height);
|
||||||
|
|
||||||
if (window->requested_fullscreen != window->fullscreen) {
|
if (window->requested_fullscreen != window->fullscreen) {
|
||||||
klass->change_fullscreen_mode (window);
|
klass->change_fullscreen_mode (window);
|
||||||
}
|
}
|
||||||
|
|
|
@ -134,6 +134,10 @@ struct _GstD3D11WindowClass
|
||||||
gboolean (*unlock) (GstD3D11Window * window);
|
gboolean (*unlock) (GstD3D11Window * window);
|
||||||
|
|
||||||
gboolean (*unlock_stop) (GstD3D11Window * window);
|
gboolean (*unlock_stop) (GstD3D11Window * window);
|
||||||
|
|
||||||
|
void (*on_resize) (GstD3D11Window * window,
|
||||||
|
guint width,
|
||||||
|
guint height);
|
||||||
};
|
};
|
||||||
|
|
||||||
GType gst_d3d11_window_get_type (void);
|
GType gst_d3d11_window_get_type (void);
|
||||||
|
@ -161,10 +165,6 @@ gboolean gst_d3d11_window_unlock (GstD3D11Window * window);
|
||||||
|
|
||||||
gboolean gst_d3d11_window_unlock_stop (GstD3D11Window * window);
|
gboolean gst_d3d11_window_unlock_stop (GstD3D11Window * window);
|
||||||
|
|
||||||
void gst_d3d11_window_on_resize (GstD3D11Window * window,
|
|
||||||
guint width,
|
|
||||||
guint height);
|
|
||||||
|
|
||||||
void gst_d3d11_window_on_key_event (GstD3D11Window * window,
|
void gst_d3d11_window_on_key_event (GstD3D11Window * window,
|
||||||
const gchar * event,
|
const gchar * event,
|
||||||
const gchar * key);
|
const gchar * key);
|
||||||
|
|
|
@ -94,8 +94,10 @@ gst_d3d11_window_core_window_unlock (GstD3D11Window * window);
|
||||||
static gboolean
|
static gboolean
|
||||||
gst_d3d11_window_core_window_unlock_stop (GstD3D11Window * window);
|
gst_d3d11_window_core_window_unlock_stop (GstD3D11Window * window);
|
||||||
static void
|
static void
|
||||||
gst_d3d11_window_core_window_on_resize (GstD3D11WindowCoreWindow * self,
|
gst_d3d11_window_core_window_on_resize (GstD3D11Window * window,
|
||||||
guint width, guint height);
|
guint width, guint height);
|
||||||
|
static void
|
||||||
|
gst_d3d11_window_core_window_on_resize_sync (GstD3D11Window * window);
|
||||||
|
|
||||||
static float
|
static float
|
||||||
get_logical_dpi (void)
|
get_logical_dpi (void)
|
||||||
|
@ -130,7 +132,7 @@ class CoreResizeHandler
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CoreResizeHandler () {}
|
CoreResizeHandler () {}
|
||||||
HRESULT RuntimeClassInitialize (GstD3D11WindowCoreWindow * listener)
|
HRESULT RuntimeClassInitialize (GstD3D11Window * listener)
|
||||||
{
|
{
|
||||||
if (!listener)
|
if (!listener)
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
|
@ -151,7 +153,9 @@ public:
|
||||||
width = (guint) dip_to_pixel (new_size.Width);
|
width = (guint) dip_to_pixel (new_size.Width);
|
||||||
height = (guint) dip_to_pixel (new_size.Height);
|
height = (guint) dip_to_pixel (new_size.Height);
|
||||||
|
|
||||||
gst_d3d11_window_core_window_on_resize (window, width, height);
|
window->surface_width = width;
|
||||||
|
window->surface_height = height;
|
||||||
|
gst_d3d11_window_core_window_on_resize_sync (window);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -159,7 +163,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
GstD3D11WindowCoreWindow * window;
|
GstD3D11Window * window;
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename CB>
|
template <typename CB>
|
||||||
|
@ -253,6 +257,8 @@ gst_d3d11_window_core_window_class_init (GstD3D11WindowCoreWindowClass * klass)
|
||||||
GST_DEBUG_FUNCPTR (gst_d3d11_window_core_window_unlock);
|
GST_DEBUG_FUNCPTR (gst_d3d11_window_core_window_unlock);
|
||||||
window_class->unlock_stop =
|
window_class->unlock_stop =
|
||||||
GST_DEBUG_FUNCPTR (gst_d3d11_window_core_window_unlock_stop);
|
GST_DEBUG_FUNCPTR (gst_d3d11_window_core_window_unlock_stop);
|
||||||
|
window_class->on_resize =
|
||||||
|
GST_DEBUG_FUNCPTR (gst_d3d11_window_core_window_on_resize);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -299,7 +305,7 @@ gst_d3d11_window_core_window_constructed (GObject * object)
|
||||||
window->surface_width = size.Width;
|
window->surface_width = size.Width;
|
||||||
window->surface_height = size.Height;
|
window->surface_height = size.Height;
|
||||||
|
|
||||||
hr = MakeAndInitialize<CoreResizeHandler>(&resize_handler, self);
|
hr = MakeAndInitialize<CoreResizeHandler>(&resize_handler, window);
|
||||||
if (!gst_d3d11_result (hr, NULL))
|
if (!gst_d3d11_result (hr, NULL))
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
|
@ -389,13 +395,6 @@ gst_d3d11_window_core_window_create_swap_chain (GstD3D11Window * window,
|
||||||
|
|
||||||
new_swapchain.CopyTo (swap_chain);
|
new_swapchain.CopyTo (swap_chain);
|
||||||
|
|
||||||
run_async (storage->dispatcher, storage->cancellable, DEFAULT_ASYNC_TIMEOUT,
|
|
||||||
[window] {
|
|
||||||
gst_d3d11_window_on_resize (window,
|
|
||||||
window->surface_width, window->surface_height);
|
|
||||||
return S_OK;
|
|
||||||
});
|
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -450,14 +449,9 @@ static void
|
||||||
gst_d3d11_window_core_window_update_swap_chain (GstD3D11Window * window)
|
gst_d3d11_window_core_window_update_swap_chain (GstD3D11Window * window)
|
||||||
{
|
{
|
||||||
GstD3D11WindowCoreWindow *self = GST_D3D11_WINDOW_CORE_WINDOW (window);
|
GstD3D11WindowCoreWindow *self = GST_D3D11_WINDOW_CORE_WINDOW (window);
|
||||||
CoreWindowWinRTStorage *storage = self->storage;
|
|
||||||
|
|
||||||
run_async (storage->dispatcher, storage->cancellable, DEFAULT_ASYNC_TIMEOUT,
|
gst_d3d11_window_core_window_on_resize (window,
|
||||||
[window] {
|
|
||||||
gst_d3d11_window_on_resize (window,
|
|
||||||
window->surface_width, window->surface_height);
|
window->surface_width, window->surface_height);
|
||||||
return S_OK;
|
|
||||||
});
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -471,17 +465,27 @@ gst_d3d11_window_core_window_change_fullscreen_mode (GstD3D11Window * window)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gst_d3d11_window_core_window_on_resize (GstD3D11WindowCoreWindow * self,
|
gst_d3d11_window_core_window_on_resize (GstD3D11Window * window,
|
||||||
guint width, guint height)
|
guint width, guint height)
|
||||||
{
|
{
|
||||||
GstD3D11Window *window = GST_D3D11_WINDOW (self);
|
GstD3D11WindowCoreWindow *self = GST_D3D11_WINDOW_CORE_WINDOW (window);
|
||||||
|
CoreWindowWinRTStorage *storage = self->storage;
|
||||||
|
|
||||||
window->surface_width = width;
|
run_async (storage->dispatcher, storage->cancellable, DEFAULT_ASYNC_TIMEOUT,
|
||||||
window->surface_height = height;
|
[window] {
|
||||||
|
gst_d3d11_window_core_window_on_resize_sync (window);
|
||||||
|
return S_OK;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
GST_LOG_OBJECT (self, "New size %dx%d", width, height);
|
static void
|
||||||
|
gst_d3d11_window_core_window_on_resize_sync (GstD3D11Window * window)
|
||||||
|
{
|
||||||
|
GST_LOG_OBJECT (window,
|
||||||
|
"New size %dx%d", window->surface_width, window->surface_height);
|
||||||
|
|
||||||
gst_d3d11_window_on_resize (GST_D3D11_WINDOW (self), width, height);
|
GST_D3D11_WINDOW_CLASS (parent_class)->on_resize (window,
|
||||||
|
window->surface_width, window->surface_height);
|
||||||
}
|
}
|
||||||
|
|
||||||
GstD3D11Window *
|
GstD3D11Window *
|
||||||
|
|
|
@ -91,16 +91,18 @@ gst_d3d11_window_swap_chain_panel_unlock (GstD3D11Window * window);
|
||||||
static gboolean
|
static gboolean
|
||||||
gst_d3d11_window_swap_chain_panel_unlock_stop (GstD3D11Window * window);
|
gst_d3d11_window_swap_chain_panel_unlock_stop (GstD3D11Window * window);
|
||||||
static void
|
static void
|
||||||
gst_d3d11_window_swap_chain_panel_on_resize (GstD3D11WindowSwapChainPanel *
|
gst_d3d11_window_swap_chain_panel_on_resize (GstD3D11Window * window,
|
||||||
self, guint width, guint height);
|
guint width, guint height);
|
||||||
|
static void
|
||||||
|
gst_d3d11_window_swap_chain_panel_on_resize_sync (GstD3D11Window *
|
||||||
|
window);
|
||||||
class PanelResizeHandler
|
class PanelResizeHandler
|
||||||
: public RuntimeClass<RuntimeClassFlags<ClassicCom>,
|
: public RuntimeClass<RuntimeClassFlags<ClassicCom>,
|
||||||
Xaml::ISizeChangedEventHandler>
|
Xaml::ISizeChangedEventHandler>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PanelResizeHandler () {}
|
PanelResizeHandler () {}
|
||||||
HRESULT RuntimeClassInitialize (GstD3D11WindowSwapChainPanel * listener)
|
HRESULT RuntimeClassInitialize (GstD3D11Window * listener)
|
||||||
{
|
{
|
||||||
if (!listener)
|
if (!listener)
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
|
@ -116,8 +118,9 @@ public:
|
||||||
Size new_size;
|
Size new_size;
|
||||||
HRESULT hr = args->get_NewSize(&new_size);
|
HRESULT hr = args->get_NewSize(&new_size);
|
||||||
if (SUCCEEDED(hr)) {
|
if (SUCCEEDED(hr)) {
|
||||||
gst_d3d11_window_swap_chain_panel_on_resize (window,
|
window->surface_width = new_size.Width;
|
||||||
new_size.Width, new_size.Height);
|
window->surface_height = new_size.Height;
|
||||||
|
gst_d3d11_window_swap_chain_panel_on_resize_sync (window);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -125,7 +128,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
GstD3D11WindowSwapChainPanel * window;
|
GstD3D11Window * window;
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename CB>
|
template <typename CB>
|
||||||
|
@ -219,6 +222,8 @@ gst_d3d11_window_swap_chain_panel_class_init (GstD3D11WindowSwapChainPanelClass
|
||||||
GST_DEBUG_FUNCPTR (gst_d3d11_window_swap_chain_panel_unlock);
|
GST_DEBUG_FUNCPTR (gst_d3d11_window_swap_chain_panel_unlock);
|
||||||
window_class->unlock_stop =
|
window_class->unlock_stop =
|
||||||
GST_DEBUG_FUNCPTR (gst_d3d11_window_swap_chain_panel_unlock_stop);
|
GST_DEBUG_FUNCPTR (gst_d3d11_window_swap_chain_panel_unlock_stop);
|
||||||
|
window_class->on_resize =
|
||||||
|
GST_DEBUG_FUNCPTR (gst_d3d11_window_swap_chain_panel_on_resize);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -270,7 +275,7 @@ gst_d3d11_window_swap_chain_panel_constructed (GObject * object)
|
||||||
window->surface_width = size.Width;
|
window->surface_width = size.Width;
|
||||||
window->surface_height = size.Height;
|
window->surface_height = size.Height;
|
||||||
|
|
||||||
hr = MakeAndInitialize<PanelResizeHandler>(&resize_handler, self);
|
hr = MakeAndInitialize<PanelResizeHandler>(&resize_handler, window);
|
||||||
if (!gst_d3d11_result (hr, NULL))
|
if (!gst_d3d11_result (hr, NULL))
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
|
@ -378,13 +383,6 @@ gst_d3d11_window_swap_chain_panel_create_swap_chain (GstD3D11Window * window,
|
||||||
|
|
||||||
new_swapchain.CopyTo (swap_chain);
|
new_swapchain.CopyTo (swap_chain);
|
||||||
|
|
||||||
run_async (storage->dispatcher, storage->cancellable, DEFAULT_ASYNC_TIMEOUT,
|
|
||||||
[window] {
|
|
||||||
gst_d3d11_window_on_resize (window,
|
|
||||||
window->surface_width, window->surface_height);
|
|
||||||
return S_OK;
|
|
||||||
});
|
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -443,14 +441,9 @@ gst_d3d11_window_swap_chain_panel_update_swap_chain (GstD3D11Window * window)
|
||||||
{
|
{
|
||||||
GstD3D11WindowSwapChainPanel *self =
|
GstD3D11WindowSwapChainPanel *self =
|
||||||
GST_D3D11_WINDOW_SWAP_CHAIN_PANEL (window);
|
GST_D3D11_WINDOW_SWAP_CHAIN_PANEL (window);
|
||||||
SwapChainPanelWinRTStorage *storage = self->storage;
|
|
||||||
|
|
||||||
run_async (storage->dispatcher, storage->cancellable, DEFAULT_ASYNC_TIMEOUT,
|
gst_d3d11_window_swap_chain_panel_on_resize (window, window->surface_width,
|
||||||
[window] {
|
window->surface_height);
|
||||||
gst_d3d11_window_on_resize (window,
|
|
||||||
window->surface_width, window->surface_height);
|
|
||||||
return S_OK;
|
|
||||||
});
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -465,16 +458,28 @@ gst_d3d11_window_swap_chain_panel_change_fullscreen_mode (GstD3D11Window *
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gst_d3d11_window_swap_chain_panel_on_resize (GstD3D11WindowSwapChainPanel *
|
gst_d3d11_window_swap_chain_panel_on_resize (GstD3D11Window * window,
|
||||||
self, guint width, guint height)
|
guint width, guint height)
|
||||||
{
|
{
|
||||||
GstD3D11Window *window = GST_D3D11_WINDOW (self);
|
GstD3D11WindowSwapChainPanel *self =
|
||||||
window->surface_width = width;
|
GST_D3D11_WINDOW_SWAP_CHAIN_PANEL (window);
|
||||||
window->surface_height = height;
|
SwapChainPanelWinRTStorage *storage = self->storage;
|
||||||
|
|
||||||
GST_LOG_OBJECT (self, "New size %dx%d", width, height);
|
run_async (storage->dispatcher, storage->cancellable, DEFAULT_ASYNC_TIMEOUT,
|
||||||
|
[window] {
|
||||||
|
gst_d3d11_window_swap_chain_panel_on_resize_sync (window);
|
||||||
|
return S_OK;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
gst_d3d11_window_on_resize (GST_D3D11_WINDOW (self), width, height);
|
static void
|
||||||
|
gst_d3d11_window_swap_chain_panel_on_resize_sync (GstD3D11Window * window)
|
||||||
|
{
|
||||||
|
GST_LOG_OBJECT (window,
|
||||||
|
"New size %dx%d", window->surface_width, window->surface_height);
|
||||||
|
|
||||||
|
GST_D3D11_WINDOW_CLASS (parent_class)->on_resize (window,
|
||||||
|
window->surface_width, window->surface_height);
|
||||||
}
|
}
|
||||||
|
|
||||||
GstD3D11Window *
|
GstD3D11Window *
|
||||||
|
|
|
@ -115,6 +115,9 @@ static void gst_d3d11_window_win32_release_external_handle (GstD3D11WindowWin32
|
||||||
static void
|
static void
|
||||||
gst_d3d11_window_win32_set_window_handle (GstD3D11WindowWin32 * self,
|
gst_d3d11_window_win32_set_window_handle (GstD3D11WindowWin32 * self,
|
||||||
guintptr handle);
|
guintptr handle);
|
||||||
|
static void
|
||||||
|
gst_d3d11_window_win32_on_resize (GstD3D11Window * window,
|
||||||
|
guint width, guint height);
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gst_d3d11_window_win32_class_init (GstD3D11WindowWin32Class * klass)
|
gst_d3d11_window_win32_class_init (GstD3D11WindowWin32Class * klass)
|
||||||
|
@ -134,6 +137,8 @@ gst_d3d11_window_win32_class_init (GstD3D11WindowWin32Class * klass)
|
||||||
window_class->create_swap_chain =
|
window_class->create_swap_chain =
|
||||||
GST_DEBUG_FUNCPTR (gst_d3d11_window_win32_create_swap_chain);
|
GST_DEBUG_FUNCPTR (gst_d3d11_window_win32_create_swap_chain);
|
||||||
window_class->present = GST_DEBUG_FUNCPTR (gst_d3d11_window_win32_present);
|
window_class->present = GST_DEBUG_FUNCPTR (gst_d3d11_window_win32_present);
|
||||||
|
window_class->on_resize =
|
||||||
|
GST_DEBUG_FUNCPTR (gst_d3d11_window_win32_on_resize);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -573,7 +578,7 @@ gst_d3d11_window_win32_handle_window_proc (GstD3D11WindowWin32 * self,
|
||||||
|
|
||||||
switch (uMsg) {
|
switch (uMsg) {
|
||||||
case WM_SIZE:
|
case WM_SIZE:
|
||||||
gst_d3d11_window_on_resize (window, 0, 0);
|
gst_d3d11_window_win32_on_resize (window, 0, 0);
|
||||||
break;
|
break;
|
||||||
case WM_CLOSE:
|
case WM_CLOSE:
|
||||||
if (self->internal_hwnd) {
|
if (self->internal_hwnd) {
|
||||||
|
@ -790,9 +795,6 @@ gst_d3d11_window_win32_create_swap_chain (GstD3D11Window * window,
|
||||||
|
|
||||||
*swap_chain = new_swapchain;
|
*swap_chain = new_swapchain;
|
||||||
|
|
||||||
/* Set zero width and height here. dxgi will decide client area by itself */
|
|
||||||
gst_d3d11_window_on_resize (window, 0, 0);
|
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -883,6 +885,14 @@ gst_d3d11_window_win32_present (GstD3D11Window * window, guint present_flags)
|
||||||
return GST_FLOW_OK;
|
return GST_FLOW_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gst_d3d11_window_win32_on_resize (GstD3D11Window * window,
|
||||||
|
guint width, guint height)
|
||||||
|
{
|
||||||
|
/* Set zero width and height here. dxgi will decide client area by itself */
|
||||||
|
GST_D3D11_WINDOW_CLASS (parent_class)->on_resize (window, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gst_d3d11_window_win32_update_swap_chain (GstD3D11Window * window)
|
gst_d3d11_window_win32_update_swap_chain (GstD3D11Window * window)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue