[vlc-commits] Really fix audio volume underflow (audio_volume_t is unsigned)
Rémi Denis-Courmont
git at videolan.org
Thu Apr 7 23:09:56 CEST 2011
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Fri Apr 8 00:05:26 2011 +0300| [7b753608c874749a82ba5ba7ba35235eb637e2c8] | committer: Rémi Denis-Courmont
Really fix audio volume underflow (audio_volume_t is unsigned)
This reverts commit 164c18c9233b160c9b36062e6a78b57f30591435.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=7b753608c874749a82ba5ba7ba35235eb637e2c8
---
src/audio_output/intf.c | 28 +++++++++++++---------------
1 files changed, 13 insertions(+), 15 deletions(-)
diff --git a/src/audio_output/intf.c b/src/audio_output/intf.c
index fe235ef..fd45173 100644
--- a/src/audio_output/intf.c
+++ b/src/audio_output/intf.c
@@ -76,17 +76,10 @@ static void prepareVolume (vlc_object_t *obj, aout_instance_t **aoutp,
/** Commit a volume change transaction. */
static int commitVolume (vlc_object_t *obj, aout_instance_t *aout,
- audio_volume_t *volp, bool mute)
+ audio_volume_t volume, bool mute)
{
int ret = 0;
- audio_volume_t volume = *volp;
- if (volume < AOUT_VOLUME_MIN)
- volume = AOUT_VOLUME_MIN;
- if (volume > AOUT_VOLUME_MAX)
- volume = AOUT_VOLUME_MAX;
- *volp = volume;
-
var_SetInteger (obj, "volume", volume);
var_SetBool (obj, "mute", mute);
@@ -149,7 +142,7 @@ int aout_VolumeSet (vlc_object_t *obj, audio_volume_t volume)
bool mute;
prepareVolume (obj, &aout, NULL, &mute);
- return commitVolume (obj, aout, &volume, mute);
+ return commitVolume (obj, aout, volume, mute);
}
#undef aout_VolumeUp
@@ -161,13 +154,18 @@ int aout_VolumeUp (vlc_object_t *obj, int steps, audio_volume_t *volp)
{
aout_instance_t *aout;
int ret;
- int stepsize = var_InheritInteger (obj, "volume-step");
- audio_volume_t volume;
+ int volume;
bool mute;
+ steps *= var_InheritInteger (obj, "volume-step");
+
prepareVolume (obj, &aout, &volume, &mute);
- volume += stepsize * steps;
- ret = commitVolume (obj, aout, &volume, mute);
+ volume += steps;
+ if (volume < AOUT_VOLUME_MIN)
+ volume = AOUT_VOLUME_MIN;
+ if (volume > AOUT_VOLUME_MAX)
+ volume = AOUT_VOLUME_MAX;
+ ret = commitVolume (obj, aout, volume, mute);
if (volp != NULL)
*volp = volume;
return ret;
@@ -195,7 +193,7 @@ int aout_ToggleMute (vlc_object_t *obj, audio_volume_t *volp)
prepareVolume (obj, &aout, &volume, &mute);
mute = !mute;
- ret = commitVolume (obj, aout, &volume, mute);
+ ret = commitVolume (obj, aout, volume, mute);
if (volp != NULL)
*volp = mute ? AOUT_VOLUME_MIN : volume;
return ret;
@@ -228,7 +226,7 @@ int aout_SetMute (vlc_object_t *obj, audio_volume_t *volp, bool mute)
audio_volume_t volume;
prepareVolume (obj, &aout, &volume, NULL);
- ret = commitVolume (obj, aout, &volume, mute);
+ ret = commitVolume (obj, aout, volume, mute);
if (volp != NULL)
*volp = mute ? AOUT_VOLUME_MIN : volume;
return ret;
More information about the vlc-commits
mailing list