vlc | branch: master | Hugo Beauzée-Luyssen <[email protected]> | Tue May 16 15:06:53 2017 +0200| [fe77ddf757417a0c6d7910d51fad8fe173924fea] | committer: Hugo Beauzée-Luyssen
qt: action_manager: Support multiple renderers > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=fe77ddf757417a0c6d7910d51fad8fe173924fea --- modules/gui/qt/actions_manager.cpp | 34 ++++++++++++---------------------- modules/gui/qt/actions_manager.hpp | 3 ++- 2 files changed, 14 insertions(+), 23 deletions(-) diff --git a/modules/gui/qt/actions_manager.cpp b/modules/gui/qt/actions_manager.cpp index f81d9ec7d8..bff6af8f6d 100644 --- a/modules/gui/qt/actions_manager.cpp +++ b/modules/gui/qt/actions_manager.cpp @@ -40,12 +40,11 @@ ActionsManager::ActionsManager( intf_thread_t * _p_i ) : p_intf( _p_i ) - , p_rd( NULL ) { } ActionsManager::~ActionsManager() { - if ( p_rd != NULL ) + foreach ( vlc_renderer_discovery_t* p_rd, m_rds ) vlc_rd_release( p_rd ); } @@ -283,7 +282,7 @@ void ActionsManager::renderer_event_item_removed( void ActionsManager::ScanRendererAction(bool checked) { - if (checked == (p_rd != NULL)) + if (checked == !m_rds.empty()) return; /* nothing changed */ if (checked) @@ -327,35 +326,26 @@ void ActionsManager::ScanRendererAction(bool checked) char **ppsz_name = ppsz_names, **ppsz_longname = ppsz_longnames; for( ; *ppsz_name; ppsz_name++, ppsz_longname++ ) { - /* TODO launch all discovery services for renderers */ msg_Dbg( p_intf, "starting renderer discovery service %s", *ppsz_longname ); - if ( p_rd == NULL ) + vlc_renderer_discovery_t* p_rd = vlc_rd_new( VLC_OBJECT(p_intf), *ppsz_name, &owner ); + if( !p_rd ) + msg_Err( p_intf, "Could not start renderer discovery services" ); + else { - p_rd = vlc_rd_new( VLC_OBJECT(p_intf), *ppsz_name, &owner ); - if( !p_rd ) - msg_Err( p_intf, "Could not start renderer discovery services" ); + if ( vlc_rd_start( p_rd ) == VLC_SUCCESS ) + m_rds.push_back( p_rd ); + else + vlc_rd_release( p_rd ); } - break; } free( ppsz_names ); free( ppsz_longnames ); - - if ( p_rd != NULL ) - { - if( vlc_rd_start( p_rd ) != VLC_SUCCESS ) - { - vlc_rd_release( p_rd ); - p_rd = NULL; - } - } } else { - if ( p_rd != NULL ) - { + foreach ( vlc_renderer_discovery_t* p_rd, m_rds ) vlc_rd_release( p_rd ); - p_rd = NULL; - } + m_rds.clear(); } } diff --git a/modules/gui/qt/actions_manager.hpp b/modules/gui/qt/actions_manager.hpp index 04a299bbff..1f11c8d062 100644 --- a/modules/gui/qt/actions_manager.hpp +++ b/modules/gui/qt/actions_manager.hpp @@ -30,6 +30,7 @@ #include "qt.hpp" #include "util/singleton.hpp" +#include <QVector> #include <QObject> class QAction; @@ -74,7 +75,7 @@ private: virtual ~ActionsManager(); intf_thread_t* const p_intf; - vlc_renderer_discovery_t *p_rd; + QVector<vlc_renderer_discovery_t*> m_rds; static void renderer_event_item_added( vlc_renderer_discovery_t *, vlc_renderer_item_t * ); _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
