[vlc-devel] [PATCH 6/7] qt: add AudioDeviceConfigControl

Thomas Guillem thomas at gllm.fr
Tue Feb 27 14:43:09 CET 2018



On Tue, Feb 27, 2018, at 14:39, Rémi Denis-Courmont wrote:
> Le 27 février 2018 12:41:10 GMT+02:00, Thomas Guillem <thomas at gllm.fr> a écrit :
> >Same as StringListConfigControl() but it also calls aout_DeviceSet()
> >when
> >applying the configuration.
> >---
> >modules/gui/qt/components/preferences_widgets.cpp | 19
> >+++++++++++++++++++
> > modules/gui/qt/components/preferences_widgets.hpp | 15 +++++++++++++--
> > 2 files changed, 32 insertions(+), 2 deletions(-)
> >
> >diff --git a/modules/gui/qt/components/preferences_widgets.cpp
> >b/modules/gui/qt/components/preferences_widgets.cpp
> >index 1419bac114..6bbcb91765 100644
> >--- a/modules/gui/qt/components/preferences_widgets.cpp
> >+++ b/modules/gui/qt/components/preferences_widgets.cpp
> >@@ -35,6 +35,7 @@
> > #include "util/customwidgets.hpp"
> > #include "util/searchlineedit.hpp"
> > #include "util/qt_dirs.hpp"
> >+#include "input_manager.hpp"
> > #include <vlc_actions.h>
> > #include <vlc_intf_strings.h>
> > #include <vlc_modules.h>
> >@@ -466,6 +467,24 @@ QString StringListConfigControl::getValue() const
> >     return combo->itemData( combo->currentIndex() ).toString();
> > }
> > 
> >+AudioDeviceConfigControl::AudioDeviceConfigControl( intf_thread_t
> >*_p_intf,
> >+                module_config_t *_p_item, QLabel *_label, QComboBox
> >*_combo )
> >+    : StringListConfigControl( VLC_OBJECT(_p_intf), _p_item, _label,
> >_combo, false )
> >+    , p_intf(_p_intf)
> >+{
> >+}
> >+
> >+void AudioDeviceConfigControl::doApply()
> >+{
> >+    StringListConfigControl::doApply();
> >+    audio_output_t *aout = THEMIM->getAout();
> >+    if (aout != NULL)
> >+    {
> >+        aout_DeviceSet(aout, qtu(getValue()));
> >+        vlc_object_release(aout);
> >+    }
> >+}
> >+
> >void setfillVLCConfigCombo( const char *configname, intf_thread_t
> >*p_intf,
> >                             QComboBox *combo )
> > {
> >diff --git a/modules/gui/qt/components/preferences_widgets.hpp
> >b/modules/gui/qt/components/preferences_widgets.hpp
> >index 5f516fbd5d..00b466fd13 100644
> >--- a/modules/gui/qt/components/preferences_widgets.hpp
> >+++ b/modules/gui/qt/components/preferences_widgets.hpp
> >@@ -302,7 +302,7 @@ class VStringConfigControl : public ConfigControl
> > public:
> >     virtual QString getValue() const = 0;
> >     int getType() const Q_DECL_OVERRIDE;
> >-    void doApply() Q_DECL_OVERRIDE;
> >+    virtual void doApply() Q_DECL_OVERRIDE;
> > protected:
> >     VStringConfigControl( vlc_object_t *a, module_config_t *b ) :
> >                 ConfigControl(a,b) {}
> >@@ -451,13 +451,24 @@ protected:
> >     void fillGrid( QGridLayout*, int ) Q_DECL_OVERRIDE;
> >     QComboBox *combo;
> > private:
> >-    void finish(module_config_t * );
> >+    virtual void finish(module_config_t * );
> >     QLabel *label;
> >     QList<QPushButton *> buttons;
> > private slots:
> >     void comboIndexChanged( int );
> > };
> > 
> >+class AudioDeviceConfigControl : public StringListConfigControl
> >+{
> >+    Q_OBJECT
> >+public:
> >+    AudioDeviceConfigControl( intf_thread_t *, module_config_t *,
> >QLabel *,
> >+                              QComboBox* );
> >+    virtual void doApply() Q_DECL_OVERRIDE;
> >+private:
> >+    intf_thread_t *p_intf;
> >+};
> >+
> >void setfillVLCConfigCombo(const char *configname, intf_thread_t
> >*p_intf,
> >                         QComboBox *combo );
> > 
> >-- 
> >2.11.0
> >
> >_______________________________________________
> >vlc-devel mailing list
> >To unsubscribe or modify your subscription options:
> >https://mailman.videolan.org/listinfo/vlc-devel
> 
> This is a bad idea on multiple levels.
> 
> At technical level, there are no obvious or documented reasons why audio 
> volume should be a special snowflake in preferences. There are plenty of 
> settings that could be applied without restart through custom code, 
> including many in the simple preferences.
> 
> On user level, there is a clear and simple story now that VLC should be 
> restarted after changing preferences. This only makes stuff more 
> complicated. This ia bound to cascade into even more support problems as 
> users will expect everything to work like audio volume.

We are in 2018, I don't think any new users will expect to restart a program when they change a preference.
I'm not saying to change everything now, but we should focus on improving it for future VLC versions.

> 
> Unlike the ancient preferences live update code, this has no glaring 
> bugs. But it looks like setting a very dangerous precedent / stepping on 
> a slippery slope.
> -- 
> Remi Denis-Courmont
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel


More information about the vlc-devel mailing list