diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/service.vala | 7 | ||||
-rw-r--r-- | src/volume-control-pulse.vala | 18 | ||||
-rw-r--r-- | src/volume-control.vala | 1 |
3 files changed, 21 insertions, 5 deletions
diff --git a/src/service.vala b/src/service.vala index 312fec5..0a7e108 100644 --- a/src/service.vala +++ b/src/service.vala @@ -611,9 +611,11 @@ public class IndicatorSound.Service: Object { notify_server_caps_checked = true; var loud = volume_control.high_volume; + bool ignore_warning_this_time = this.volume_control.ignore_high_volume; var warn = loud && this.notify_server_supports_actions - && !this.volume_control.high_volume_approved; + && !this.volume_control.high_volume_approved + && !ignore_warning_this_time; if (waiting_user_approve_warn && volume_control.below_warning_volume) { volume_control.set_warning_volume(); close_notification(warn_notification); @@ -649,8 +651,7 @@ public class IndicatorSound.Service: Object { if (!waiting_user_approve_warn) { close_notification(warn_notification); - if (notify_server_supports_sync && !block_info_notifications) { - + if (notify_server_supports_sync && !block_info_notifications && !ignore_warning_this_time) { /* Determine Label */ string volume_label = get_notification_label (); diff --git a/src/volume-control-pulse.vala b/src/volume-control-pulse.vala index 3791f29..4bd3076 100644 --- a/src/volume-control-pulse.vala +++ b/src/volume-control-pulse.vala @@ -42,6 +42,7 @@ public class VolumeControlPulse : VolumeControl private PulseAudio.Context context; private bool _mute = true; private bool _is_playing = false; + private bool _ignore_warning_this_time = false; private VolumeControl.Volume _volume = new VolumeControl.Volume(); private double _mic_volume = 0.0; private Settings _settings = new Settings ("com.canonical.indicator.sound"); @@ -347,7 +348,8 @@ public class VolumeControlPulse : VolumeControl // Ignore changes from PULSE to avoid issues with // some apps that change the volume in the sink // We only take into account volume changes from the user - //this.volume = vol; + this._ignore_warning_this_time = true; + this.volume = vol; } } } @@ -394,7 +396,8 @@ public class VolumeControlPulse : VolumeControl // Ignore changes from PULSE to avoid issues with // some apps that change the volume in the sink // We only take into account volume changes from the user - //this.volume = vol; + this._ignore_warning_this_time = true; + this.volume = vol; } catch (GLib.Error e) { warning ("unable to get volume for active role %s (%s)", sink_input_objp, e.message); } @@ -747,6 +750,17 @@ public class VolumeControlPulse : VolumeControl private bool _warning_volume_enabled; private double _warning_volume_norms; /* 1.0 == PA_VOLUME_NORM */ private bool _high_volume = false; + public override bool ignore_high_volume { + get { + if (_ignore_warning_this_time) { + warning("Ignore"); + _ignore_warning_this_time = false; + return true; + } + return false; + } + set { } + } public override bool high_volume { get { return this._high_volume; } private set { this._high_volume = value; } diff --git a/src/volume-control.vala b/src/volume-control.vala index 7117990..90fc325 100644 --- a/src/volume-control.vala +++ b/src/volume-control.vala @@ -49,6 +49,7 @@ public abstract class VolumeControl : Object public virtual bool ready { get { return false; } set { } } public virtual bool active_mic { get { return false; } set { } } public virtual bool high_volume { get { return false; } protected set { } } + public virtual bool ignore_high_volume { get { return false; } protected set { } } public virtual bool below_warning_volume { get { return false; } protected set { } } public virtual bool mute { get { return false; } } public virtual bool is_playing { get { return false; } } |