mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-02 20:42:30 +00:00
d3d11window: Use ANSI version WIN32 API explicitly
We were using ANSI version APIs implicitly because UNICODE is not defined by ourselves. But potentially it can be broken if user defines UNICODE. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2286>
This commit is contained in:
parent
a4dfcd74e4
commit
0d65762411
1 changed files with 36 additions and 36 deletions
|
@ -207,7 +207,7 @@ gst_d3d11_window_win32_unprepare (GstD3D11Window * window)
|
||||||
|
|
||||||
if (self->external_hwnd) {
|
if (self->external_hwnd) {
|
||||||
gst_d3d11_window_win32_release_external_handle (self->external_hwnd);
|
gst_d3d11_window_win32_release_external_handle (self->external_hwnd);
|
||||||
RemoveProp (self->internal_hwnd, D3D11_WINDOW_PROP_NAME);
|
RemovePropA (self->internal_hwnd, D3D11_WINDOW_PROP_NAME);
|
||||||
|
|
||||||
if (self->internal_hwnd_thread == g_thread_self ()) {
|
if (self->internal_hwnd_thread == g_thread_self ()) {
|
||||||
/* State changing thread is identical to internal window thread.
|
/* State changing thread is identical to internal window thread.
|
||||||
|
@ -223,7 +223,7 @@ gst_d3d11_window_win32_unprepare (GstD3D11Window * window)
|
||||||
* Instead, posts message so that it can be closed from window thread
|
* Instead, posts message so that it can be closed from window thread
|
||||||
* asynchronously */
|
* asynchronously */
|
||||||
GST_INFO_OBJECT (self, "Posting custom destory message");
|
GST_INFO_OBJECT (self, "Posting custom destory message");
|
||||||
PostMessage (self->internal_hwnd, WM_GST_D3D11_DESTROY_INTERNAL_WINDOW,
|
PostMessageA (self->internal_hwnd, WM_GST_D3D11_DESTROY_INTERNAL_WINDOW,
|
||||||
0, 0);
|
0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -264,11 +264,11 @@ gst_d3d11_window_win32_set_render_rectangle (GstD3D11Window * window,
|
||||||
|
|
||||||
if (self->internal_hwnd_thread == g_thread_self ()) {
|
if (self->internal_hwnd_thread == g_thread_self ()) {
|
||||||
/* We are on message pumping thread already, handle this synchroniously */
|
/* We are on message pumping thread already, handle this synchroniously */
|
||||||
SendMessage (self->internal_hwnd, WM_GST_D3D11_MOVE_WINDOW, 0, 0);
|
SendMessageA (self->internal_hwnd, WM_GST_D3D11_MOVE_WINDOW, 0, 0);
|
||||||
} else {
|
} else {
|
||||||
/* Post message to message pumping thread. Handling HWND specific message
|
/* Post message to message pumping thread. Handling HWND specific message
|
||||||
* on message pumping thread is not a worst idea in generall */
|
* on message pumping thread is not a worst idea in generall */
|
||||||
PostMessage (self->internal_hwnd, WM_GST_D3D11_MOVE_WINDOW, 0, 0);
|
PostMessageA (self->internal_hwnd, WM_GST_D3D11_MOVE_WINDOW, 0, 0);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* XXX: Not sure what's expected behavior if we are drawing on internal
|
/* XXX: Not sure what's expected behavior if we are drawing on internal
|
||||||
|
@ -363,7 +363,7 @@ gst_d3d11_window_win32_thread_func (gpointer data)
|
||||||
|
|
||||||
g_main_loop_run (self->loop);
|
g_main_loop_run (self->loop);
|
||||||
|
|
||||||
RemoveProp (self->internal_hwnd, D3D11_WINDOW_PROP_NAME);
|
RemovePropA (self->internal_hwnd, D3D11_WINDOW_PROP_NAME);
|
||||||
gst_d3d11_window_win32_destroy_internal_window (self->internal_hwnd);
|
gst_d3d11_window_win32_destroy_internal_window (self->internal_hwnd);
|
||||||
self->internal_hwnd = NULL;
|
self->internal_hwnd = NULL;
|
||||||
self->internal_hwnd_thread = NULL;
|
self->internal_hwnd_thread = NULL;
|
||||||
|
@ -407,20 +407,20 @@ gst_d3d11_window_win32_set_external_handle (GstD3D11WindowWin32 * self)
|
||||||
WNDPROC external_window_proc;
|
WNDPROC external_window_proc;
|
||||||
|
|
||||||
external_window_proc =
|
external_window_proc =
|
||||||
(WNDPROC) GetWindowLongPtr (self->external_hwnd, GWLP_WNDPROC);
|
(WNDPROC) GetWindowLongPtrA (self->external_hwnd, GWLP_WNDPROC);
|
||||||
|
|
||||||
GST_DEBUG_OBJECT (self, "set external window %" G_GUINTPTR_FORMAT
|
GST_DEBUG_OBJECT (self, "set external window %" G_GUINTPTR_FORMAT
|
||||||
", original window procedure %p", (guintptr) self->external_hwnd,
|
", original window procedure %p", (guintptr) self->external_hwnd,
|
||||||
external_window_proc);
|
external_window_proc);
|
||||||
|
|
||||||
SetProp (self->external_hwnd, EXTERNAL_PROC_PROP_NAME,
|
SetPropA (self->external_hwnd, EXTERNAL_PROC_PROP_NAME,
|
||||||
(HANDLE) external_window_proc);
|
(HANDLE) external_window_proc);
|
||||||
SetProp (self->external_hwnd, D3D11_WINDOW_PROP_NAME, self);
|
SetPropA (self->external_hwnd, D3D11_WINDOW_PROP_NAME, self);
|
||||||
SetWindowLongPtr (self->external_hwnd, GWLP_WNDPROC,
|
SetWindowLongPtrA (self->external_hwnd, GWLP_WNDPROC,
|
||||||
(LONG_PTR) sub_class_proc);
|
(LONG_PTR) sub_class_proc);
|
||||||
|
|
||||||
/* Will create our internal window on parent window's thread */
|
/* Will create our internal window on parent window's thread */
|
||||||
SendMessage (self->external_hwnd, WM_GST_D3D11_CONSTRUCT_INTERNAL_WINDOW,
|
SendMessageA (self->external_hwnd, WM_GST_D3D11_CONSTRUCT_INTERNAL_WINDOW,
|
||||||
0, 0);
|
0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -432,7 +432,7 @@ gst_d3d11_window_win32_release_external_handle (HWND hwnd)
|
||||||
if (!hwnd)
|
if (!hwnd)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
external_proc = (WNDPROC) GetProp (hwnd, EXTERNAL_PROC_PROP_NAME);
|
external_proc = (WNDPROC) GetPropA (hwnd, EXTERNAL_PROC_PROP_NAME);
|
||||||
if (!external_proc) {
|
if (!external_proc) {
|
||||||
GST_WARNING ("Failed to get original window procedure");
|
GST_WARNING ("Failed to get original window procedure");
|
||||||
return;
|
return;
|
||||||
|
@ -441,29 +441,29 @@ gst_d3d11_window_win32_release_external_handle (HWND hwnd)
|
||||||
GST_DEBUG ("release external window %" G_GUINTPTR_FORMAT
|
GST_DEBUG ("release external window %" G_GUINTPTR_FORMAT
|
||||||
", original window procedure %p", (guintptr) hwnd, external_proc);
|
", original window procedure %p", (guintptr) hwnd, external_proc);
|
||||||
|
|
||||||
RemoveProp (hwnd, EXTERNAL_PROC_PROP_NAME);
|
RemovePropA (hwnd, EXTERNAL_PROC_PROP_NAME);
|
||||||
RemoveProp (hwnd, D3D11_WINDOW_PROP_NAME);
|
RemovePropA (hwnd, D3D11_WINDOW_PROP_NAME);
|
||||||
|
|
||||||
if (!SetWindowLongPtr (hwnd, GWLP_WNDPROC, (LONG_PTR) external_proc))
|
if (!SetWindowLongPtrA (hwnd, GWLP_WNDPROC, (LONG_PTR) external_proc))
|
||||||
GST_WARNING ("Couldn't restore original window procedure");
|
GST_WARNING ("Couldn't restore original window procedure");
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
gst_d3d11_window_win32_create_internal_window (GstD3D11WindowWin32 * self)
|
gst_d3d11_window_win32_create_internal_window (GstD3D11WindowWin32 * self)
|
||||||
{
|
{
|
||||||
WNDCLASSEX wc;
|
WNDCLASSEXA wc;
|
||||||
ATOM atom = 0;
|
ATOM atom = 0;
|
||||||
HINSTANCE hinstance = GetModuleHandle (NULL);
|
HINSTANCE hinstance = GetModuleHandleA (NULL);
|
||||||
|
|
||||||
GST_LOG_OBJECT (self, "Attempting to create a win32 window");
|
GST_LOG_OBJECT (self, "Attempting to create a win32 window");
|
||||||
|
|
||||||
G_LOCK (create_lock);
|
G_LOCK (create_lock);
|
||||||
atom = GetClassInfoEx (hinstance, "GSTD3D11", &wc);
|
atom = GetClassInfoExA (hinstance, "GSTD3D11", &wc);
|
||||||
if (atom == 0) {
|
if (atom == 0) {
|
||||||
GST_LOG_OBJECT (self, "Register internal window class");
|
GST_LOG_OBJECT (self, "Register internal window class");
|
||||||
ZeroMemory (&wc, sizeof (WNDCLASSEX));
|
ZeroMemory (&wc, sizeof (WNDCLASSEXA));
|
||||||
|
|
||||||
wc.cbSize = sizeof (WNDCLASSEX);
|
wc.cbSize = sizeof (WNDCLASSEXA);
|
||||||
wc.lpfnWndProc = window_proc;
|
wc.lpfnWndProc = window_proc;
|
||||||
wc.hInstance = hinstance;
|
wc.hInstance = hinstance;
|
||||||
wc.hIcon = LoadIcon (NULL, IDI_WINLOGO);
|
wc.hIcon = LoadIcon (NULL, IDI_WINLOGO);
|
||||||
|
@ -472,7 +472,7 @@ gst_d3d11_window_win32_create_internal_window (GstD3D11WindowWin32 * self)
|
||||||
wc.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH);
|
wc.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH);
|
||||||
wc.lpszClassName = "GSTD3D11";
|
wc.lpszClassName = "GSTD3D11";
|
||||||
|
|
||||||
atom = RegisterClassEx (&wc);
|
atom = RegisterClassExA (&wc);
|
||||||
|
|
||||||
if (atom == 0) {
|
if (atom == 0) {
|
||||||
G_UNLOCK (create_lock);
|
G_UNLOCK (create_lock);
|
||||||
|
@ -488,7 +488,7 @@ gst_d3d11_window_win32_create_internal_window (GstD3D11WindowWin32 * self)
|
||||||
self->internal_hwnd = 0;
|
self->internal_hwnd = 0;
|
||||||
self->visible = FALSE;
|
self->visible = FALSE;
|
||||||
|
|
||||||
self->internal_hwnd = CreateWindowEx (0,
|
self->internal_hwnd = CreateWindowExA (0,
|
||||||
"GSTD3D11",
|
"GSTD3D11",
|
||||||
"Direct3D11 renderer",
|
"Direct3D11 renderer",
|
||||||
WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_OVERLAPPEDWINDOW,
|
WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_OVERLAPPEDWINDOW,
|
||||||
|
@ -540,7 +540,7 @@ gst_d3d11_window_win32_change_fullscreen_mode_internal (GstD3D11WindowWin32 *
|
||||||
|
|
||||||
if (!window->fullscreen) {
|
if (!window->fullscreen) {
|
||||||
/* Restore the window's attributes and size */
|
/* Restore the window's attributes and size */
|
||||||
SetWindowLong (hwnd, GWL_STYLE, self->restore_style);
|
SetWindowLongA (hwnd, GWL_STYLE, self->restore_style);
|
||||||
|
|
||||||
SetWindowPos (hwnd, HWND_NOTOPMOST,
|
SetWindowPos (hwnd, HWND_NOTOPMOST,
|
||||||
self->restore_rect.left,
|
self->restore_rect.left,
|
||||||
|
@ -564,7 +564,7 @@ gst_d3d11_window_win32_change_fullscreen_mode_internal (GstD3D11WindowWin32 *
|
||||||
self->restore_style = GetWindowLong (hwnd, GWL_STYLE);
|
self->restore_style = GetWindowLong (hwnd, GWL_STYLE);
|
||||||
|
|
||||||
/* Make the window borderless so that the client area can fill the screen */
|
/* Make the window borderless so that the client area can fill the screen */
|
||||||
SetWindowLong (hwnd, GWL_STYLE,
|
SetWindowLongA (hwnd, GWL_STYLE,
|
||||||
self->restore_style &
|
self->restore_style &
|
||||||
~(WS_CAPTION | WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_SYSMENU |
|
~(WS_CAPTION | WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_SYSMENU |
|
||||||
WS_THICKFRAME));
|
WS_THICKFRAME));
|
||||||
|
@ -672,7 +672,7 @@ gst_d3d11_window_win32_handle_window_proc (GstD3D11WindowWin32 * self,
|
||||||
break;
|
break;
|
||||||
case WM_CLOSE:
|
case WM_CLOSE:
|
||||||
if (self->internal_hwnd) {
|
if (self->internal_hwnd) {
|
||||||
RemoveProp (self->internal_hwnd, D3D11_WINDOW_PROP_NAME);
|
RemovePropA (self->internal_hwnd, D3D11_WINDOW_PROP_NAME);
|
||||||
ShowWindow (self->internal_hwnd, SW_HIDE);
|
ShowWindow (self->internal_hwnd, SW_HIDE);
|
||||||
gst_d3d11_window_win32_destroy_internal_window (self->internal_hwnd);
|
gst_d3d11_window_win32_destroy_internal_window (self->internal_hwnd);
|
||||||
self->internal_hwnd = NULL;
|
self->internal_hwnd = NULL;
|
||||||
|
@ -697,7 +697,7 @@ gst_d3d11_window_win32_handle_window_proc (GstD3D11WindowWin32 * self,
|
||||||
|
|
||||||
/* DefWindowProc will not chain up mouse event to parent window */
|
/* DefWindowProc will not chain up mouse event to parent window */
|
||||||
if (self->external_hwnd && self->external_hwnd != hWnd)
|
if (self->external_hwnd && self->external_hwnd != hWnd)
|
||||||
SendMessage (self->external_hwnd, uMsg, wParam, lParam);
|
SendMessageA (self->external_hwnd, uMsg, wParam, lParam);
|
||||||
break;
|
break;
|
||||||
case WM_SYSKEYDOWN:
|
case WM_SYSKEYDOWN:
|
||||||
if ((window->fullscreen_toggle_mode &
|
if ((window->fullscreen_toggle_mode &
|
||||||
|
@ -765,9 +765,9 @@ window_proc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
*/
|
*/
|
||||||
ReleaseDC (hWnd, self->device_handle);
|
ReleaseDC (hWnd, self->device_handle);
|
||||||
|
|
||||||
SetProp (hWnd, D3D11_WINDOW_PROP_NAME, self);
|
SetPropA (hWnd, D3D11_WINDOW_PROP_NAME, self);
|
||||||
} else if (GetProp (hWnd, D3D11_WINDOW_PROP_NAME)) {
|
} else if (GetPropA (hWnd, D3D11_WINDOW_PROP_NAME)) {
|
||||||
HANDLE handle = GetProp (hWnd, D3D11_WINDOW_PROP_NAME);
|
HANDLE handle = GetPropA (hWnd, D3D11_WINDOW_PROP_NAME);
|
||||||
|
|
||||||
if (!GST_IS_D3D11_WINDOW_WIN32 (handle)) {
|
if (!GST_IS_D3D11_WINDOW_WIN32 (handle)) {
|
||||||
GST_WARNING ("%p is not d3d11window object", handle);
|
GST_WARNING ("%p is not d3d11window object", handle);
|
||||||
|
@ -791,16 +791,16 @@ window_proc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
done:
|
done:
|
||||||
return DefWindowProc (hWnd, uMsg, wParam, lParam);
|
return DefWindowProcA (hWnd, uMsg, wParam, lParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
static LRESULT FAR PASCAL
|
static LRESULT FAR PASCAL
|
||||||
sub_class_proc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
sub_class_proc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
WNDPROC external_window_proc =
|
WNDPROC external_window_proc =
|
||||||
(WNDPROC) GetProp (hWnd, EXTERNAL_PROC_PROP_NAME);
|
(WNDPROC) GetPropA (hWnd, EXTERNAL_PROC_PROP_NAME);
|
||||||
GstD3D11WindowWin32 *self =
|
GstD3D11WindowWin32 *self =
|
||||||
(GstD3D11WindowWin32 *) GetProp (hWnd, D3D11_WINDOW_PROP_NAME);
|
(GstD3D11WindowWin32 *) GetPropA (hWnd, D3D11_WINDOW_PROP_NAME);
|
||||||
|
|
||||||
if (uMsg == WM_GST_D3D11_CONSTRUCT_INTERNAL_WINDOW) {
|
if (uMsg == WM_GST_D3D11_CONSTRUCT_INTERNAL_WINDOW) {
|
||||||
GstD3D11Window *window = GST_D3D11_WINDOW (self);
|
GstD3D11Window *window = GST_D3D11_WINDOW (self);
|
||||||
|
@ -810,7 +810,7 @@ sub_class_proc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
|
|
||||||
window->initialized = gst_d3d11_window_win32_create_internal_window (self);
|
window->initialized = gst_d3d11_window_win32_create_internal_window (self);
|
||||||
|
|
||||||
SetWindowLongPtr (self->internal_hwnd, GWL_STYLE, WS_CHILD | WS_MAXIMIZE);
|
SetWindowLongPtrA (self->internal_hwnd, GWL_STYLE, WS_CHILD | WS_MAXIMIZE);
|
||||||
SetParent (self->internal_hwnd, self->external_hwnd);
|
SetParent (self->internal_hwnd, self->external_hwnd);
|
||||||
|
|
||||||
/* take changes into account: SWP_FRAMECHANGED */
|
/* take changes into account: SWP_FRAMECHANGED */
|
||||||
|
@ -835,7 +835,7 @@ sub_class_proc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
gst_d3d11_window_win32_release_external_handle (self->external_hwnd);
|
gst_d3d11_window_win32_release_external_handle (self->external_hwnd);
|
||||||
self->external_hwnd = NULL;
|
self->external_hwnd = NULL;
|
||||||
|
|
||||||
RemoveProp (self->internal_hwnd, D3D11_WINDOW_PROP_NAME);
|
RemovePropA (self->internal_hwnd, D3D11_WINDOW_PROP_NAME);
|
||||||
ShowWindow (self->internal_hwnd, SW_HIDE);
|
ShowWindow (self->internal_hwnd, SW_HIDE);
|
||||||
gst_d3d11_window_win32_destroy_internal_window (self->internal_hwnd);
|
gst_d3d11_window_win32_destroy_internal_window (self->internal_hwnd);
|
||||||
self->internal_hwnd = NULL;
|
self->internal_hwnd = NULL;
|
||||||
|
@ -849,7 +849,7 @@ sub_class_proc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return CallWindowProc (external_window_proc, hWnd, uMsg, wParam, lParam);
|
return CallWindowProcA (external_window_proc, hWnd, uMsg, wParam, lParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -1110,7 +1110,7 @@ gst_d3d11_window_win32_update_swap_chain (GstD3D11Window * window)
|
||||||
GstD3D11WindowWin32 *self = GST_D3D11_WINDOW_WIN32 (window);
|
GstD3D11WindowWin32 *self = GST_D3D11_WINDOW_WIN32 (window);
|
||||||
|
|
||||||
if (self->internal_hwnd)
|
if (self->internal_hwnd)
|
||||||
PostMessage (self->internal_hwnd, WM_SIZE, 0, 0);
|
PostMessageA (self->internal_hwnd, WM_SIZE, 0, 0);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1122,7 +1122,7 @@ gst_d3d11_window_win32_change_fullscreen_mode (GstD3D11Window * window)
|
||||||
|
|
||||||
if (self->internal_hwnd) {
|
if (self->internal_hwnd) {
|
||||||
g_atomic_int_add (&self->pending_fullscreen_count, 1);
|
g_atomic_int_add (&self->pending_fullscreen_count, 1);
|
||||||
PostMessage (self->internal_hwnd, WM_GST_D3D11_FULLSCREEN, 0, 0);
|
PostMessageA (self->internal_hwnd, WM_GST_D3D11_FULLSCREEN, 0, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue