aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2015-02-09 12:05:06 -0600
committerTed Gould <ted@gould.cx>2015-02-09 12:05:06 -0600
commita30edaddc32d70d8a64fe8158b879620ead22e87 (patch)
tree1331bf2cfe5d924040ad12eaa3ad2bcc5bc617bb
parentfe57009ba87b4cd9403cd219c26cc9487ac5d276 (diff)
parent1b0c78a1bd4237a920a569a64efe6bd006e4a9ca (diff)
downloadayatana-indicator-sound-a30edaddc32d70d8a64fe8158b879620ead22e87.tar.gz
ayatana-indicator-sound-a30edaddc32d70d8a64fe8158b879620ead22e87.tar.bz2
ayatana-indicator-sound-a30edaddc32d70d8a64fe8158b879620ead22e87.zip
Update to trunk
-rw-r--r--debian/changelog9
-rw-r--r--debian/control1
-rwxr-xr-xdebian/rules3
-rw-r--r--src/service.vala17
-rw-r--r--src/volume-control.vala8
-rw-r--r--tests/CMakeLists.txt25
-rw-r--r--tests/indicator-test.cc8
7 files changed, 67 insertions, 4 deletions
diff --git a/debian/changelog b/debian/changelog
index aad0867..718e4e4 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,12 @@
+indicator-sound (12.10.2+15.04.20150205-0ubuntu1) vivid; urgency=medium
+
+ [ Ted Gould ]
+ * Don't show notification when output mode changes (LP: #1416233)
+ * Initial support for indicator service testing from the GMenu/GAction
+ interfaces
+
+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Thu, 05 Feb 2015 17:19:42 +0000
+
indicator-sound (12.10.2+15.04.20150129.1-0ubuntu1) vivid; urgency=low
[ Ted Gould ]
diff --git a/debian/control b/debian/control
index 15b47f1..cdb1267 100644
--- a/debian/control
+++ b/debian/control
@@ -10,6 +10,7 @@ Build-Depends: debhelper (>= 9.0),
dh-translations,
gir1.2-accountsservice-1.0,
gnome-common,
+ gsettings-ubuntu-schemas,
autotools-dev,
valac (>= 0.20),
libaccountsservice-dev,
diff --git a/debian/rules b/debian/rules
index 8fb0f91..7e4e4ef 100755
--- a/debian/rules
+++ b/debian/rules
@@ -17,3 +17,6 @@ override_dh_install:
install -m 644 debian/indicator-sound-crashdb.conf debian/indicator-sound/etc/apport/crashdb.conf.d/
dh_install --fail-missing
+# For live test logs:
+#override_dh_auto_test:
+# ARGS=-V dh_auto_test
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;
diff --git a/src/volume-control.vala b/src/volume-control.vala
index bf97021..62cb2d0 100644
--- a/src/volume-control.vala
+++ b/src/volume-control.vala
@@ -54,6 +54,14 @@ public class VolumeControl : Object
private bool _pulse_use_stream_restore = false;
private uint32 _active_sink_input = -1;
private string[] _valid_roles = {"multimedia", "alert", "alarm", "phone"};
+ public string stream {
+ get {
+ if (_active_sink_input < 0 || _active_sink_input >= _valid_roles.length)
+ return "multimedia";
+ else
+ return _valid_roles[_active_sink_input];
+ }
+ }
private string? _objp_role_multimedia = null;
private string? _objp_role_alert = null;
private string? _objp_role_alarm = null;
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index bc2df0d..38a76ae 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -11,6 +11,29 @@ add_library (gtest STATIC
target_link_libraries(gtest ${GTEST_LIBS})
###########################
+# GSettings Schema
+###########################
+
+# build the necessary schemas
+set_directory_properties (PROPERTIES
+ ADDITIONAL_MAKE_CLEAN_FILES gschemas.compiled)
+set_source_files_properties (gschemas.compiled GENERATED)
+
+# GSettings:
+# compile the indicator-sound schema into a gschemas.compiled file in this directory,
+# and help the tests to find that file by setting -DSCHEMA_DIR
+set (SCHEMA_DIR "${CMAKE_CURRENT_BINARY_DIR}/gsettings-schemas")
+add_definitions(-DSCHEMA_DIR="${SCHEMA_DIR}")
+execute_process (COMMAND ${PKG_CONFIG_EXECUTABLE} gio-2.0 --variable glib_compile_schemas
+ OUTPUT_VARIABLE COMPILE_SCHEMA_EXECUTABLE
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+add_custom_command (OUTPUT gschemas.compiled
+ DEPENDS ${CMAKE_SOURCE_DIR}/data/com.canonical.indicator.sound.gschema.xml
+ COMMAND mkdir -p ${SCHEMA_DIR}
+ COMMAND cp -f ${CMAKE_SOURCE_DIR}/data/*gschema.xml ${SCHEMA_DIR}
+ COMMAND ${COMPILE_SCHEMA_EXECUTABLE} ${SCHEMA_DIR})
+
+###########################
# Vala Mocks
###########################
@@ -217,7 +240,7 @@ add_definitions(
-DINDICATOR_SOUND_SERVICE_BINARY="${CMAKE_BINARY_DIR}/src/indicator-sound-service"
-DPA_MOCK_LIB="${CMAKE_CURRENT_BINARY_DIR}/libpulse-mock.so"
)
-add_executable (indicator-test indicator-test.cc)
+add_executable (indicator-test indicator-test.cc gschemas.compiled)
target_link_libraries (
indicator-test
gtest
diff --git a/tests/indicator-test.cc b/tests/indicator-test.cc
index 07d5f91..f7d0b2b 100644
--- a/tests/indicator-test.cc
+++ b/tests/indicator-test.cc
@@ -39,6 +39,9 @@ protected:
//addMock(buildBustleMock("indicator-test-system.bustle", DBUS_TEST_SERVICE_BUS_SYSTEM));
g_setenv("LD_PRELOAD", PA_MOCK_LIB, TRUE);
+ g_setenv("GSETTINGS_SCHEMA_DIR", SCHEMA_DIR, TRUE);
+ g_setenv("GSETTINGS_BACKEND", "memory", TRUE);
+
as = std::make_shared<AccountsServiceMock>();
addMock(*as);
@@ -81,8 +84,8 @@ TEST_F(IndicatorTest, DesktopMenu) {
EXPECT_MENU_ATTRIB(std::vector<int>({0, 0, 0}), "action", "indicator.mute");
EXPECT_MENU_ATTRIB(std::vector<int>({0, 0, 0}), "label", "Mute");
- EXPECT_MENU_ATTRIB(std::vector<int>({0, 2}), "action", "indicator.desktop-settings");
- EXPECT_MENU_ATTRIB(std::vector<int>({0, 2}), "label", "Sound Settingsā€¦");
+ EXPECT_MENU_ATTRIB(std::vector<int>({0, 1}), "action", "indicator.desktop-settings");
+ EXPECT_MENU_ATTRIB(std::vector<int>({0, 1}), "label", "Sound Settingsā€¦");
}
TEST_F(IndicatorTest, BaseActions) {
@@ -99,7 +102,6 @@ TEST_F(IndicatorTest, BaseActions) {
ASSERT_ACTION_EXISTS("mute");
ASSERT_ACTION_STATE_TYPE("mute", G_VARIANT_TYPE_BOOLEAN);
- EXPECT_ACTION_STATE("mute", false);
ASSERT_ACTION_EXISTS("mic-volume");
ASSERT_ACTION_STATE_TYPE("mic-volume", G_VARIANT_TYPE_DOUBLE);