vlc | branch: master | Thomas Guillem <tho...@gllm.fr> | Tue Mar 20 16:04:20 2018 +0100| [a32e93567b6d5d284a0f2d326f9f446f5b1c5cae] | committer: Thomas Guillem
qt: fix wrong audio settings with automatic device Fetch the actual audio module instead of relying on the config. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=a32e93567b6d5d284a0f2d326f9f446f5b1c5cae --- modules/gui/qt/components/simple_preferences.cpp | 36 ++++++++++++++++-------- modules/gui/qt/components/simple_preferences.hpp | 1 + 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/modules/gui/qt/components/simple_preferences.cpp b/modules/gui/qt/components/simple_preferences.cpp index da2fea5ee8..cd65b5b2fe 100644 --- a/modules/gui/qt/components/simple_preferences.cpp +++ b/modules/gui/qt/components/simple_preferences.cpp @@ -29,6 +29,7 @@ #include "components/simple_preferences.hpp" #include "components/preferences_widgets.hpp" +#include "input_manager.hpp" #include <vlc_config_cat.h> #include <vlc_configuration.h> @@ -128,15 +129,7 @@ static struct { static int getDefaultAudioVolume(const char *aout) { if (!strcmp(aout, "") || !strcmp(aout, "any")) -#ifdef _WIN32 - /* All Windows aouts, that can be selected automatically, handle volume - * saving. In case of automatic mode, we'll save the last volume for - * every modules. Therefore, all volumes variable we be the same and we - * can use the first one (mmdevice). */ - return config_GetFloat("mmdevice-volume") * 100.f + .5f; -#else return -1; -#endif else /* Note: For hysterical raisins, this is sorted by decreasing priority * order (then alphabetical order). */ @@ -964,15 +957,36 @@ void SPrefsPanel::updateVideoOptions( int number ) #endif } +char *SPrefsPanel::getAoutModuleName() +{ + audio_output_t *p_aout = THEMIM->getAout(); + if (p_aout == NULL) + return NULL; + + char *module = var_GetString(p_aout, "module-name"); + vlc_object_release(p_aout); + return module; +} void SPrefsPanel::updateAudioOptions( int number) { QString value = qobject_cast<QComboBox *>(optionWidgets["audioOutCoB"]) ->itemData( number ).toString(); + + if (value == "any" || value == "") + { + char *module = getAoutModuleName(); + if (module != NULL) + { + value = qfu(module); + free(module); + } + } + #ifdef _WIN32 /* Since MMDevice is most likely to be used by default, we show MMDevice * options by default */ - const bool mmDeviceEnabled = value == "mmdevice" || value == "any"; + const bool mmDeviceEnabled = value == "mmdevice"; optionWidgets["mmdevicePassthroughL"]->setVisible( mmDeviceEnabled ); optionWidgets["mmdevicePassthroughB"]->setVisible( mmDeviceEnabled ); optionWidgets["mmdeviceW"]->setVisible( mmDeviceEnabled ); @@ -1113,12 +1127,12 @@ void SPrefsPanel::apply() qobject_cast<QSlider *>(optionWidgets["defaultVolume"])->value(); bool b_reset_volume = qobject_cast<QCheckBox *>(optionWidgets["resetVolumeCheckbox"])->isChecked(); - char *psz_aout = config_GetPsz( "aout" ); + char *psz_aout = getAoutModuleName(); float f_gain = powf( i_volume / 100.f, 3 ); #define save_vol_aout( name ) \ - module_exists( name ) && ( !psz_aout || !strcmp( psz_aout, name ) || !strcmp( psz_aout, "any" ) ) + module_exists( name ) && ( !psz_aout || !strcmp( psz_aout, name ) ) //FIXME this is moot #if defined( _WIN32 ) diff --git a/modules/gui/qt/components/simple_preferences.hpp b/modules/gui/qt/components/simple_preferences.hpp index 856b88ba97..6f72836972 100644 --- a/modules/gui/qt/components/simple_preferences.hpp +++ b/modules/gui/qt/components/simple_preferences.hpp @@ -113,6 +113,7 @@ private: bool addType( const char * psz_ext, QTreeWidgetItem*, QTreeWidgetItem*, QVLCRegistry* ); void saveLang(); #endif + char *getAoutModuleName(); /* Display only the options for the selected audio output */ private slots: _______________________________________________ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits