/** Commit a volume change transaction. */
static int commitVolume (vlc_object_t *obj, aout_instance_t *aout,
- audio_volume_t volume, bool mute)
+ audio_volume_t *volp, 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);
bool mute;
prepareVolume (obj, &aout, NULL, &mute);
- return commitVolume (obj, aout, volume, mute);
+ return commitVolume (obj, aout, &volume, mute);
}
#undef aout_VolumeUp
prepareVolume (obj, &aout, &volume, &mute);
volume += stepsize * steps;
- ret = commitVolume (obj, aout, volume, mute);
+ ret = commitVolume (obj, aout, &volume, mute);
if (volp != NULL)
*volp = volume;
return ret;
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;
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;