volume: Only emit sound feedback after volume changes

gnome-settings-daemon doesn't play the volume change sound when
the volume stayed the same (that is, it is already at its maximum
or minimum). This looks like the right thing to do, so copy its
behavior.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/53
This commit is contained in:
Florian Müllner 2018-02-23 23:58:22 +01:00
parent 5af8bf2788
commit 6c8eb1a18e

View File

@ -113,6 +113,7 @@ var StreamSlider = class {
let value = this._slider.value; let value = this._slider.value;
let volume = value * this._control.get_vol_max_norm(); let volume = value * this._control.get_vol_max_norm();
let prevMuted = this._stream.is_muted; let prevMuted = this._stream.is_muted;
let prevVolume = this._stream.volume;
if (volume < 1) { if (volume < 1) {
this._stream.volume = 0; this._stream.volume = 0;
if (!prevMuted) if (!prevMuted)
@ -124,7 +125,8 @@ var StreamSlider = class {
} }
this._stream.push_volume(); this._stream.push_volume();
if (!this._notifyVolumeChangeId && !this._inDrag) { let volumeChanged = this._stream.volume !== prevVolume;
if (volumeChanged && !this._notifyVolumeChangeId && !this._inDrag) {
this._notifyVolumeChangeId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 30, () => { this._notifyVolumeChangeId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 30, () => {
this._notifyVolumeChange(); this._notifyVolumeChange();
this._notifyVolumeChangeId = 0; this._notifyVolumeChangeId = 0;