aboutsummaryrefslogtreecommitdiff
path: root/src/service.vala
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2015-02-06 08:16:47 -0600
committerTed Gould <ted@gould.cx>2015-02-06 08:16:47 -0600
commit9ea7cad48eec56bafb47c7f05f1b04c79c7c3e78 (patch)
tree1d1e99d047bcd375247456bcd7fad605afae0fce /src/service.vala
parent6ac4cc8173c25b12cf8c18869f7d1e142c28ad44 (diff)
parent1b0c78a1bd4237a920a569a64efe6bd006e4a9ca (diff)
downloadayatana-indicator-sound-9ea7cad48eec56bafb47c7f05f1b04c79c7c3e78.tar.gz
ayatana-indicator-sound-9ea7cad48eec56bafb47c7f05f1b04c79c7c3e78.tar.bz2
ayatana-indicator-sound-9ea7cad48eec56bafb47c7f05f1b04c79c7c3e78.zip
Update to trunk
Diffstat (limited to 'src/service.vala')
-rw-r--r--src/service.vala17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/service.vala b/src/service.vala
index fb56215..b07f267 100644
--- a/src/service.vala
+++ b/src/service.vala
@@ -270,6 +270,8 @@ public class IndicatorSound.Service: Object {
private bool check_sync_notification = false;
private bool support_sync_notification = false;
+ private string last_output_notification = "multimedia";
+ private double last_volume_notification = 0;
void update_sync_notification () {
if (!check_sync_notification) {
@@ -283,6 +285,21 @@ public class IndicatorSound.Service: Object {
if (!support_sync_notification)
return;
+ /* Update our volume and output */
+ var oldoutput = this.last_output_notification;
+ this.last_output_notification = this.volume_control.stream;
+
+ var oldvolume = this.last_volume_notification;
+ this.last_volume_notification = volume_control.volume;
+
+ /* Suppress notifications of volume changes if it is because the
+ output stream changed. */
+ if (oldoutput != this.last_output_notification)
+ return;
+ /* Supress updates that don't change the value */
+ if (GLib.Math.fabs(oldvolume - this.last_volume_notification) < 0.01)
+ return;
+
var shown_action = actions.lookup_action ("indicator-shown") as SimpleAction;
if (shown_action != null && shown_action.get_state().get_boolean())
return;