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
No related merge requests found
......@@ -60,7 +60,7 @@
VideoWidget::VideoWidget( intf_thread_t *_p_i ) : QFrame( NULL ), p_intf( _p_i )
{
/* Init */
p_vout = NULL;
i_vout = 0;
hide(); setMinimumSize( 16, 16 );
videoSize.rwidth() = -1;
videoSize.rheight() = -1;
......@@ -97,6 +97,9 @@ void VideoWidget::paintEvent(QPaintEvent *ev)
VideoWidget::~VideoWidget()
{
vout_thread_t *p_vout = i_vout
? (vout_thread_t *)vlc_object_get( i_vout ) : NULL;
if( p_vout )
{
if( !p_intf->psz_switch_intf )
......@@ -109,6 +112,7 @@ VideoWidget::~VideoWidget()
if( vout_Control( p_vout, VOUT_REPARENT ) != VLC_SUCCESS )
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,
{
msg_Dbg( p_intf, "Video was requested %i, %i", *pi_x, *pi_y );
emit askVideoWidgetToShow( *pi_width, *pi_height );
if( p_vout )
if( i_vout )
{
msg_Dbg( p_intf, "embedded video already in use" );
return NULL;
}
p_vout = p_nvout;
i_vout = p_nvout->i_object_id;
msg_Dbg( p_intf, "embedded video ready (handle %p)", winId() );
return ( void* )winId();
}
......@@ -145,7 +149,7 @@ void VideoWidget::SetSizing( unsigned int w, unsigned int h )
void VideoWidget::release( void *p_win )
{
msg_Dbg( p_intf, "Video is not needed anymore" );
p_vout = NULL;
i_vout = 0;
videoSize.rwidth() = 0;
videoSize.rheight() = 0;
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