[vlc-devel] [PATCH 1/2] mmdevice: handle "--no-volume-save"
Rémi Denis-Courmont
remi at remlab.net
Tue Feb 27 14:21:28 CET 2018
Le 27 février 2018 14:59:48 GMT+02:00, Thomas Guillem <thomas at gllm.fr> a écrit :
>It's handled the other way around than old aout modules.
>
>By default, "volume-save" is true and we keep the current behavior (the
>volume
>is saved by Windows for this session). If "volume-save" is false, then
>we use
>the prefered volume set by the user "mmdevice-volume".
>
>This reverts commit 6bbc6b6cb191f1a4dd29bd059c90e9cbaf0edb16.
>
>Fixes #19664
>---
> modules/audio_output/mmdevice.c | 26 ++++++++++++++++++++------
> 1 file changed, 20 insertions(+), 6 deletions(-)
>
>diff --git a/modules/audio_output/mmdevice.c
>b/modules/audio_output/mmdevice.c
>index ca142f5d6a..7980125cec 100644
>--- a/modules/audio_output/mmdevice.c
>+++ b/modules/audio_output/mmdevice.c
>@@ -197,7 +197,7 @@ static void Flush(audio_output_t *aout, bool wait)
> vlc_FromHR(aout, hr);
> }
>
>-static int VolumeSet(audio_output_t *aout, float vol)
>+static int VolumeSetLocked(audio_output_t *aout, float vol)
> {
> aout_sys_t *sys = aout->sys;
> float gain = 1.f;
>@@ -212,12 +212,20 @@ static int VolumeSet(audio_output_t *aout, float
>vol)
>
> aout_GainRequest(aout, gain);
>
>- EnterCriticalSection(&sys->lock);
> sys->gain = gain;
> sys->requested_volume = vol;
>+ return 0;
>+}
>+
>+static int VolumeSet(audio_output_t *aout, float vol)
>+{
>+ aout_sys_t *sys = aout->sys;
>+
>+ EnterCriticalSection(&sys->lock);
>+ int ret = VolumeSetLocked(aout, vol);
> WakeConditionVariable(&sys->work);
> LeaveCriticalSection(&sys->lock);
>- return 0;
>+ return ret;
> }
>
> static int MuteSet(audio_output_t *aout, bool mute)
>@@ -1266,9 +1274,6 @@ static void Stop(audio_output_t *aout)
>
> static int Open(vlc_object_t *obj)
> {
>- if (!var_InheritBool(obj, "volume-save"))
>- return VLC_EGENERIC;
>-
> audio_output_t *aout = (audio_output_t *)obj;
>
> aout_sys_t *sys = malloc(sizeof (*sys));
>@@ -1291,6 +1296,10 @@ static int Open(vlc_object_t *obj)
> sys->requested_volume = -1.f;
> sys->requested_mute = -1;
> sys->acquired_device = NULL;
>+
>+ if (!var_InheritBool(aout, "volume-save"))
>+ VolumeSetLocked(aout, var_InheritFloat(aout,
>"mmdevice-volume"));
>+
> InitializeCriticalSection(&sys->lock);
> InitializeConditionVariable(&sys->work);
> InitializeConditionVariable(&sys->ready);
>@@ -1475,6 +1484,9 @@ static const char *const
>ppsz_mmdevice_passthrough_texts[] = {
> #define DEVICE_TEXT N_("Output device")
> #define DEVICE_LONGTEXT N_("Select your audio output device")
>
>+#define VOLUME_TEXT N_("Audio volume")
>+#define VOLUME_LONGTEXT N_("Audio volume in hundredths of decibels
>(dB).")
>+
> vlc_module_begin()
> set_shortname("MMDevice")
> set_description(N_("Windows Multimedia Device output"))
>@@ -1491,4 +1503,6 @@ vlc_module_begin()
> ppsz_mmdevice_passthrough_texts )
>add_string("mmdevice-audio-device", NULL, DEVICE_TEXT, DEVICE_LONGTEXT,
>false)
> change_string_cb(ReloadAudioDevices)
>+ add_float("mmdevice-volume", 1.f, VOLUME_TEXT, VOLUME_LONGTEXT,
>true)
>+ change_float_range( 0.f, 1.25f )
> vlc_module_end()
>--
>2.11.0
>
>_______________________________________________
>vlc-devel mailing list
>To unsubscribe or modify your subscription options:
>https://mailman.videolan.org/listinfo/vlc-devel
This is wrong. It will corrupt the volume saved in the OS, thus messing with other instances and LibVLC apps.
--
Remi Denis-Courmont
More information about the vlc-devel
mailing list