vlc | branch: master | Thomas Guillem <tho...@gllm.fr> | Wed Mar 21 11:08:48 2018 +0100| [ef3978a7e1f1aa1477d4e884f45fb09c5d17d00a] | committer: Thomas Guillem
qt: set audioDeviceMenu non static That way, we can attach vlc_objects to this menu without leaks. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=ef3978a7e1f1aa1477d4e884f45fb09c5d17d00a --- modules/gui/qt/menus.cpp | 16 ++++++++++------ modules/gui/qt/menus.hpp | 2 +- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/modules/gui/qt/menus.cpp b/modules/gui/qt/menus.cpp index cab6c16f52..3652827f72 100644 --- a/modules/gui/qt/menus.cpp +++ b/modules/gui/qt/menus.cpp @@ -80,7 +80,6 @@ enum static QActionGroup *currentGroup; QMenu *VLCMenuBar::recentsMenu = NULL; -QMenu *VLCMenuBar::audioDeviceMenu = NULL; QMenu *VLCMenuBar::rendererMenu = NULL; QActionGroup *VLCMenuBar::rendererGroup = NULL; @@ -611,28 +610,33 @@ QMenu *VLCMenuBar::AudioMenu( intf_thread_t *p_intf, QMenu * current ) { QVector<vlc_object_t *> objects; QVector<const char *> varnames; + QMenu *audioDeviceMenu; audio_output_t *p_aout; input_thread_t *p_input; - if (!audioDeviceMenu) - audioDeviceMenu = new QMenu( qtr( "Audio &Device" ) ); - if( current->isEmpty() ) { addActionWithSubmenu( current, "audio-es", qtr( "Audio &Track" ) ); - current->addMenu( audioDeviceMenu ); + audioDeviceMenu = addActionWithSubmenu( current, "audio-device", qtr( "Audio &Device" ) ); addActionWithSubmenu( current, "stereo-mode", qtr( "&Stereo Mode" ) ); current->addSeparator(); addActionWithSubmenu( current, "visual", qtr( "&Visualizations" ) ); VolumeEntries( p_intf, current ); } + else + { + QAction *action = FindActionWithVar( current, "audio-device" ); + audioDeviceMenu = action ? action->menu() : NULL; + } p_input = THEMIM->getInput(); p_aout = THEMIM->getAout(); EnableStaticEntries( current, ( p_aout != NULL ) ); AudioAutoMenuBuilder( p_input, objects, varnames ); - updateAudioDevice( p_intf, p_aout, audioDeviceMenu ); + if( audioDeviceMenu ) + updateAudioDevice( p_intf, p_aout, audioDeviceMenu ); + if( p_aout ) { vlc_object_release( p_aout ); diff --git a/modules/gui/qt/menus.hpp b/modules/gui/qt/menus.hpp index 5bdd9bba58..1bc6519d61 100644 --- a/modules/gui/qt/menus.hpp +++ b/modules/gui/qt/menus.hpp @@ -152,7 +152,7 @@ private: static void EnableStaticEntries( QMenu *, bool ); /* recentMRL menu */ - static QMenu *recentsMenu, *audioDeviceMenu; + static QMenu *recentsMenu; static void updateAudioDevice( intf_thread_t *, audio_output_t *, QMenu* ); _______________________________________________ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits