Commit a878f3ac authored by Damien Fouilleul's avatar Damien Fouilleul

qt4: a few stability fixes when working as a dialogs provider, needs a lot more ...

parent 9924f657
......@@ -261,27 +261,40 @@ MainInputManager::~MainInputManager()
void MainInputManager::updateInput()
{
vlc_mutex_lock( &p_intf->change_lock );
if( p_input && p_input->b_dead )
if( VLC_OBJECT_INTF == p_intf->i_object_type )
{
vlc_object_release( p_input );
getIM()->delInput();
p_input = NULL;
emit inputChanged( NULL );
}
vlc_mutex_lock( &p_intf->change_lock );
if( p_input && p_input->b_dead )
{
vlc_object_release( p_input );
getIM()->delInput();
p_input = NULL;
emit inputChanged( NULL );
}
if( !p_input )
{
QPL_LOCK;
p_input = THEPL->p_input;
if( p_input )
if( !p_input )
{
QPL_LOCK;
p_input = THEPL->p_input;
if( p_input )
{
vlc_object_yield( p_input );
emit inputChanged( p_input );
}
QPL_UNLOCK;
}
vlc_mutex_unlock( &p_intf->change_lock );
}
else {
/* we are working as a dialogs provider */
playlist_t *p_playlist = (playlist_t *) vlc_object_find( p_intf,
VLC_OBJECT_PLAYLIST, FIND_ANYWHERE );
if( p_playlist )
{
vlc_object_yield( p_input );
p_input = p_playlist->p_input;
emit inputChanged( p_input );
}
QPL_UNLOCK;
}
vlc_mutex_unlock( &p_intf->change_lock );
}
void MainInputManager::stop()
......
......@@ -54,7 +54,7 @@ struct intf_sys_t
#define QPL_UNLOCK vlc_mutex_unlock( &THEPL->object_lock );
#define THEDP DialogsProvider::getInstance()
#define THEMIM MainInputManager::getInstance( NULL )
#define THEMIM MainInputManager::getInstance( p_intf )
#define qfu( i ) QString::fromUtf8( i )
#define qtr( i ) QString::fromUtf8( _(i) )
......
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