dshowvideosink: close our own window when changing the window id

If we created the window, it needs to be closed after setting a new
window id.

https://bugzilla.gnome.org/show_bug.cgi?id=574290
This commit is contained in:
Andoni Morales Alastruey 2010-07-25 17:04:12 +02:00 committed by Tim-Philipp Müller
parent 7ab007bafe
commit c2c32fe773

View file

@ -123,9 +123,16 @@ gst_dshowvideosink_set_window_id (GstXOverlay * overlay, ULONG window_id)
if (sink->connected && sink->filter_media_event) { if (sink->connected && sink->filter_media_event) {
HRESULT hres; HRESULT hres;
/* Return control of application window */ if (sink->is_new_window) {
SetWindowLongPtr (previous_window, GWL_WNDPROC, (LONG)sink->prevWndProc); /* If we created a new window */
SetWindowPos (previous_window, 0, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED); SendMessage (previous_window, WM_CLOSE, NULL, NULL);
sink->is_new_window = FALSE;
sink->window_closed = FALSE;
} else {
/* Return control of application window */
SetWindowLongPtr (previous_window, GWL_WNDPROC, (LONG)sink->prevWndProc);
SetWindowPos (previous_window, 0, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
}
gst_dshowvideosink_set_window_for_renderer (sink); gst_dshowvideosink_set_window_for_renderer (sink);