vlc | branch: master | Hugo Beauzée-Luyssen <[email protected]> | Thu Dec 10 15:01:47 2015 +0100| [45ecb6947875bef52ed5f7b40b884372da26d150] | committer: Hugo Beauzée-Luyssen
qt4: Fix initial input probing inputChangedHandler only reads from the current MIM input, which isn't set until the next playlist callback is received. This actively probes the current input, sets it, and inform potential listeners refs #14162 > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=45ecb6947875bef52ed5f7b40b884372da26d150 --- modules/gui/qt4/input_manager.cpp | 4 ++++ modules/gui/qt4/input_manager.hpp | 3 +++ modules/gui/qt4/qt4.cpp | 7 ++----- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/modules/gui/qt4/input_manager.cpp b/modules/gui/qt4/input_manager.cpp index 0aac345..cae2735 100644 --- a/modules/gui/qt4/input_manager.cpp +++ b/modules/gui/qt4/input_manager.cpp @@ -1061,7 +1061,11 @@ void MainInputManager::customEvent( QEvent *event ) default: if( type != IMEvent::ItemChanged ) return; } + probeCurrentInput(); +} +void MainInputManager::probeCurrentInput() +{ if( p_input != NULL ) vlc_object_release( p_input ); p_input = playlist_CurrentInput( THEPL ); diff --git a/modules/gui/qt4/input_manager.hpp b/modules/gui/qt4/input_manager.hpp index 3b6f4c6..57dfd4d 100644 --- a/modules/gui/qt4/input_manager.hpp +++ b/modules/gui/qt4/input_manager.hpp @@ -271,6 +271,9 @@ public: bool hasEmptyPlaylist(); void requestVoutUpdate() { return im->UpdateVout(); } + // Probe for initial input. Doing this from the constructor would cause + // the getInstance to call itself recursively from the inputChangedHandler + void probeCurrentInput(); protected: QSignalMapper *menusAudioMapper; diff --git a/modules/gui/qt4/qt4.cpp b/modules/gui/qt4/qt4.cpp index 6721021..43ba185 100644 --- a/modules/gui/qt4/qt4.cpp +++ b/modules/gui/qt4/qt4.cpp @@ -514,11 +514,8 @@ static void *Thread( void *obj ) /* Initialize the Dialog Provider and the Main Input Manager */ DialogsProvider::getInstance( p_intf ); - MainInputManager *mim = MainInputManager::getInstance( p_intf ); - /* initialize p_input (an input can already be running) */ - input_thread_t *p_input = playlist_CurrentInput( THEPL ); - if( p_input ) - mim->getIM()->inputChangedHandler(); + MainInputManager* mim = MainInputManager::getInstance( p_intf ); + mim->probeCurrentInput(); #ifdef UPDATE_CHECK /* Checking for VLC updates */ _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
