From: Gildas Bazin Date: Sat, 5 Jun 2004 17:49:22 +0000 (+0000) Subject: * src/video_output/vout_intf.c: only embed the video if the main interface supports... X-Git-Tag: 0.8.0~1222 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=788a3c84dc231bc4b5467fe4f49d0d1932010d52;p=vlc * src/video_output/vout_intf.c: only embed the video if the main interface supports it (don't check other interfaces). * modules/gui/wxwindows/video.cpp, modules/video_output/x11/xcommon.c: in embedded mode, close the vout window if vlc is exiting. --- diff --git a/modules/gui/wxwindows/video.cpp b/modules/gui/wxwindows/video.cpp index e8e6f0d990..4cded77770 100644 --- a/modules/gui/wxwindows/video.cpp +++ b/modules/gui/wxwindows/video.cpp @@ -127,8 +127,12 @@ VideoWindow::~VideoWindow() vlc_mutex_lock( &lock ); if( p_vout ) { - if( vout_Control( p_vout, VOUT_REPARENT ) != VLC_SUCCESS ) - vout_Control( p_vout, VOUT_CLOSE ); + if( !p_intf->psz_switch_intf ) + if( vout_Control( p_vout, VOUT_CLOSE ) != VLC_SUCCESS ) + vout_Control( p_vout, VOUT_REPARENT ); + else + if( vout_Control( p_vout, VOUT_REPARENT ) != VLC_SUCCESS ) + vout_Control( p_vout, VOUT_CLOSE ); } p_intf->pf_request_window = NULL; diff --git a/modules/video_output/x11/xcommon.c b/modules/video_output/x11/xcommon.c index 863f69bc26..0b7180d392 100644 --- a/modules/video_output/x11/xcommon.c +++ b/modules/video_output/x11/xcommon.c @@ -2123,6 +2123,13 @@ static int Control( vout_thread_t *p_vout, int i_query, va_list args ) vlc_mutex_unlock( &p_vout->p_sys->lock ); return VLC_SUCCESS; + case VOUT_CLOSE: + vlc_mutex_lock( &p_vout->p_sys->lock ); + XUnmapWindow( p_vout->p_sys->p_display, + p_vout->p_sys->p_win->base_window ); + vlc_mutex_unlock( &p_vout->p_sys->lock ); + /* Fall through */ + case VOUT_REPARENT: vlc_mutex_lock( &p_vout->p_sys->lock ); XReparentWindow( p_vout->p_sys->p_display, diff --git a/src/video_output/vout_intf.c b/src/video_output/vout_intf.c index 5dc92b956f..515dabf99c 100644 --- a/src/video_output/vout_intf.c +++ b/src/video_output/vout_intf.c @@ -75,14 +75,14 @@ void *vout_RequestWindow( vout_thread_t *p_vout, var_Get( p_vout->p_vlc, "drawable", &val ); if( val.i_int ) return (void *)val.i_int; - /* Find the first interface which supports embedding */ + /* Find if the main interface supports embedding */ p_list = vlc_list_find( p_vout, VLC_OBJECT_INTF, FIND_ANYWHERE ); if( !p_list ) return NULL; for( i = 0; i < p_list->i_count; i++ ) { p_intf = (intf_thread_t *)p_list->p_values[i].p_object; - if( p_intf->pf_request_window ) break; + if( p_intf->b_block && p_intf->pf_request_window ) break; p_intf = NULL; }