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() ...@@ -261,27 +261,40 @@ MainInputManager::~MainInputManager()
void MainInputManager::updateInput() void MainInputManager::updateInput()
{ {
vlc_mutex_lock( &p_intf->change_lock ); if( VLC_OBJECT_INTF == p_intf->i_object_type )
if( p_input && p_input->b_dead )
{ {
vlc_object_release( p_input ); vlc_mutex_lock( &p_intf->change_lock );
getIM()->delInput(); if( p_input && p_input->b_dead )
p_input = NULL; {
emit inputChanged( NULL ); vlc_object_release( p_input );
} getIM()->delInput();
p_input = NULL;
emit inputChanged( NULL );
}
if( !p_input ) if( !p_input )
{ {
QPL_LOCK; QPL_LOCK;
p_input = THEPL->p_input; p_input = THEPL->p_input;
if( 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 ); emit inputChanged( p_input );
} }
QPL_UNLOCK;
} }
vlc_mutex_unlock( &p_intf->change_lock );
} }
void MainInputManager::stop() void MainInputManager::stop()
......
...@@ -54,7 +54,7 @@ struct intf_sys_t ...@@ -54,7 +54,7 @@ struct intf_sys_t
#define QPL_UNLOCK vlc_mutex_unlock( &THEPL->object_lock ); #define QPL_UNLOCK vlc_mutex_unlock( &THEPL->object_lock );
#define THEDP DialogsProvider::getInstance() #define THEDP DialogsProvider::getInstance()
#define THEMIM MainInputManager::getInstance( NULL ) #define THEMIM MainInputManager::getInstance( p_intf )
#define qfu( i ) QString::fromUtf8( i ) #define qfu( i ) QString::fromUtf8( i )
#define qtr( 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