Commit 8fa65a4d authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

Qt4: weak reference the video output...

...so we don't try to vout_Control() it after it's been destroyed.
We cannot yield the video output for real either, as it would prevent
it from being destroyed once it is not needed anymore.
parent 7ca46db5
...@@ -60,7 +60,7 @@ ...@@ -60,7 +60,7 @@
VideoWidget::VideoWidget( intf_thread_t *_p_i ) : QFrame( NULL ), p_intf( _p_i ) VideoWidget::VideoWidget( intf_thread_t *_p_i ) : QFrame( NULL ), p_intf( _p_i )
{ {
/* Init */ /* Init */
p_vout = NULL; i_vout = 0;
hide(); setMinimumSize( 16, 16 ); hide(); setMinimumSize( 16, 16 );
videoSize.rwidth() = -1; videoSize.rwidth() = -1;
videoSize.rheight() = -1; videoSize.rheight() = -1;
...@@ -97,6 +97,9 @@ void VideoWidget::paintEvent(QPaintEvent *ev) ...@@ -97,6 +97,9 @@ void VideoWidget::paintEvent(QPaintEvent *ev)
VideoWidget::~VideoWidget() VideoWidget::~VideoWidget()
{ {
vout_thread_t *p_vout = i_vout
? (vout_thread_t *)vlc_object_get( i_vout ) : NULL;
if( p_vout ) if( p_vout )
{ {
if( !p_intf->psz_switch_intf ) if( !p_intf->psz_switch_intf )
...@@ -109,6 +112,7 @@ VideoWidget::~VideoWidget() ...@@ -109,6 +112,7 @@ VideoWidget::~VideoWidget()
if( vout_Control( p_vout, VOUT_REPARENT ) != VLC_SUCCESS ) if( vout_Control( p_vout, VOUT_REPARENT ) != VLC_SUCCESS )
vout_Control( p_vout, VOUT_CLOSE ); vout_Control( p_vout, VOUT_CLOSE );
} }
vlc_object_release( p_vout );
} }
} }
...@@ -120,12 +124,12 @@ void *VideoWidget::request( vout_thread_t *p_nvout, int *pi_x, int *pi_y, ...@@ -120,12 +124,12 @@ void *VideoWidget::request( vout_thread_t *p_nvout, int *pi_x, int *pi_y,
{ {
msg_Dbg( p_intf, "Video was requested %i, %i", *pi_x, *pi_y ); msg_Dbg( p_intf, "Video was requested %i, %i", *pi_x, *pi_y );
emit askVideoWidgetToShow( *pi_width, *pi_height ); emit askVideoWidgetToShow( *pi_width, *pi_height );
if( p_vout ) if( i_vout )
{ {
msg_Dbg( p_intf, "embedded video already in use" ); msg_Dbg( p_intf, "embedded video already in use" );
return NULL; return NULL;
} }
p_vout = p_nvout; i_vout = p_nvout->i_object_id;
msg_Dbg( p_intf, "embedded video ready (handle %p)", winId() ); msg_Dbg( p_intf, "embedded video ready (handle %p)", winId() );
return ( void* )winId(); return ( void* )winId();
} }
...@@ -145,7 +149,7 @@ void VideoWidget::SetSizing( unsigned int w, unsigned int h ) ...@@ -145,7 +149,7 @@ void VideoWidget::SetSizing( unsigned int w, unsigned int h )
void VideoWidget::release( void *p_win ) void VideoWidget::release( void *p_win )
{ {
msg_Dbg( p_intf, "Video is not needed anymore" ); msg_Dbg( p_intf, "Video is not needed anymore" );
p_vout = NULL; i_vout = 0;
videoSize.rwidth() = 0; videoSize.rwidth() = 0;
videoSize.rheight() = 0; videoSize.rheight() = 0;
hide(); hide();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment