aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2015-02-13 13:48:31 -0600
committerTed Gould <ted@gould.cx>2015-02-13 13:48:31 -0600
commiteb8a797c9e7ce01e3345edc20db1486764c84d08 (patch)
treeda361ad41c33233413e088c9b85dba3f3e2b95be
parent0a8a0f7185b4082ea189c43bc2e02eee506a623f (diff)
downloadayatana-indicator-sound-eb8a797c9e7ce01e3345edc20db1486764c84d08.tar.gz
ayatana-indicator-sound-eb8a797c9e7ce01e3345edc20db1486764c84d08.tar.bz2
ayatana-indicator-sound-eb8a797c9e7ce01e3345edc20db1486764c84d08.zip
Block notifications in the volume event instead of in the notification one so that high volume warnings can get through
-rw-r--r--src/service.vala31
-rw-r--r--tests/notifications-test.cc5
2 files changed, 17 insertions, 19 deletions
diff --git a/src/service.vala b/src/service.vala
index 0b03b6e..14a49da 100644
--- a/src/service.vala
+++ b/src/service.vala
@@ -299,21 +299,6 @@ 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;
@@ -461,6 +446,22 @@ public class IndicatorSound.Service: Object {
volume_action.set_state (new Variant.double (this.volume_control.volume / this.max_volume));
this.update_root_icon ();
+
+ /* 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;
+
this.update_sync_notification ();
});
diff --git a/tests/notifications-test.cc b/tests/notifications-test.cc
index 9c98e4f..22402cd 100644
--- a/tests/notifications-test.cc
+++ b/tests/notifications-test.cc
@@ -319,7 +319,6 @@ TEST_F(NotificationsTest, HighVolume) {
EXPECT_EQ("Volume", notev[0].summary);
EXPECT_EQ("", notev[0].body);
EXPECT_GVARIANT_EQ("@s 'false'", notev[0].hints["x-canonical-value-bar-tint"]);
- EXPECT_GVARIANT_EQ("@i 50", notev[0].hints["value"]);
/* Set high volume with volume change */
notifications->clearNotifications();
@@ -327,11 +326,10 @@ TEST_F(NotificationsTest, HighVolume) {
volume_control_set_volume(volumeControl.get(), 0.90);
loop(50);
notev = notifications->getNotifications();
- ASSERT_EQ(1, notev.size());
+ ASSERT_LT(0, notev.size());
EXPECT_EQ("Volume", notev[0].summary);
EXPECT_EQ("High volume", notev[0].body);
EXPECT_GVARIANT_EQ("@s 'true'", notev[0].hints["x-canonical-value-bar-tint"]);
- EXPECT_GVARIANT_EQ("@i 90", notev[0].hints["value"]);
/* Move it back */
volume_control_mock_set_mock_high_volume(VOLUME_CONTROL_MOCK(volumeControl.get()), FALSE);
@@ -348,5 +346,4 @@ TEST_F(NotificationsTest, HighVolume) {
EXPECT_EQ("Volume", notev[0].summary);
EXPECT_EQ("High volume", notev[0].body);
EXPECT_GVARIANT_EQ("@s 'true'", notev[0].hints["x-canonical-value-bar-tint"]);
- EXPECT_GVARIANT_EQ("@i 90", notev[0].hints["value"]);
}