vlc | branch: master | Francois Cartegnie <[email protected]> | Sat Apr 2 19:06:39 2011 +0200| [f1378a157e771df928917d524c2f0a03cc416704] | committer: Francois Cartegnie
epg: hold input before lock access > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=f1378a157e771df928917d524c2f0a03cc416704 --- modules/gui/qt4/dialogs/epg.cpp | 21 ++++++++++++++++++--- 1 files changed, 18 insertions(+), 3 deletions(-) diff --git a/modules/gui/qt4/dialogs/epg.cpp b/modules/gui/qt4/dialogs/epg.cpp index 0a036ad..21ce324 100644 --- a/modules/gui/qt4/dialogs/epg.cpp +++ b/modules/gui/qt4/dialogs/epg.cpp @@ -27,6 +27,7 @@ #include "dialogs/epg.hpp" #include "components/epg/EPGWidget.hpp" +#include <vlc_playlist.h> #include <QVBoxLayout> #include <QSplitter> @@ -119,7 +120,21 @@ void EpgDialog::showEvent( EPGItem *epgItem ) void EpgDialog::updateInfos() { timer->stop(); - if( !THEMIM->getInput() ) return; - epg->updateEPG( input_GetItem( THEMIM->getInput() ) ); - if ( isVisible() ) timer->start(); + input_item_t *p_input_item = NULL; + playlist_t *p_playlist = THEPL; + input_thread_t *p_input_thread = playlist_CurrentInput( p_playlist ); /* w/hold */ + if( p_input_thread ) + { + PL_LOCK; /* as input_GetItem still unfixed */ + p_input_item = input_GetItem( p_input_thread ); + if ( p_input_item ) vlc_gc_incref( p_input_item ); + PL_UNLOCK; + vlc_object_release( p_input_thread ); + if ( p_input_item ) + { + epg->updateEPG( p_input_item ); + vlc_gc_decref( p_input_item ); + if ( isVisible() ) timer->start(); + } + } } _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
