gl: win32: do not call SetParent in release_parent_win_id()

When called from gst_gl_window_win32_close(), internal window
could not exist, and if it does it's going to be destroyed just
after that anyway. Also it causes window_proc() to be called
and crash because it gets a NULL context.

When called from gst_gl_window_win32_set_window_handle() we are
going to set another parent anyway, and it's probably better to
reparent directly instead of passing by a NULL parent which could
cause the internal window to popup briefly.

https://bugzilla.gnome.org/show_bug.cgi?id=749601
This commit is contained in:
Xavier Claessens 2015-05-21 15:30:34 -04:00 committed by Nicolas Dufresne
parent ae77afeb74
commit 1a98face84

View file

@ -182,6 +182,7 @@ set_parent_win_id (GstGLWindowWin32 * window_win32)
/* no parent so the internal window needs borders and system menu */ /* no parent so the internal window needs borders and system menu */
SetWindowLongPtr (window_win32->internal_win_id, GWL_STYLE, SetWindowLongPtr (window_win32->internal_win_id, GWL_STYLE,
WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_OVERLAPPEDWINDOW); WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_OVERLAPPEDWINDOW);
SetParent (window_win32->internal_win_id, NULL);
return; return;
} }
@ -229,7 +230,6 @@ release_parent_win_id (GstGLWindowWin32 * window_win32)
SetWindowLongPtr (window_win32->parent_win_id, GWLP_WNDPROC, SetWindowLongPtr (window_win32->parent_win_id, GWLP_WNDPROC,
(LONG_PTR) parent_proc); (LONG_PTR) parent_proc);
SetParent (window_win32->internal_win_id, NULL);
RemoveProp (window_win32->parent_win_id, "gl_window_parent_proc"); RemoveProp (window_win32->parent_win_id, "gl_window_parent_proc");
} }