aboutsummaryrefslogtreecommitdiff
path: root/src/volume-control-pulse.vala
diff options
context:
space:
mode:
authorXavi Garcia Mena <xavi.garcia.mena@canonical.com>2016-01-05 15:08:12 +0000
committerCI Train Bot <ci-train-bot@canonical.com>2016-01-05 15:08:12 +0000
commite1feb61a02a1353b42fcd85ced8e0489c711a451 (patch)
treeb91e31644dd757bad22f2241532100f9009bad92 /src/volume-control-pulse.vala
parent6869e11338783297c2b3fd3b4184cca1cd2d2150 (diff)
parent0eea8e8a2cee47f72292384ac856d3f68208d680 (diff)
downloadayatana-indicator-sound-e1feb61a02a1353b42fcd85ced8e0489c711a451.tar.gz
ayatana-indicator-sound-e1feb61a02a1353b42fcd85ced8e0489c711a451.tar.bz2
ayatana-indicator-sound-e1feb61a02a1353b42fcd85ced8e0489c711a451.zip
This branch re-adds the integration tests using gmenuharness.
* Added OSD notifications to show output source when the volume or source change (LP: #1382548, LP: #1415480, LP: #1484589) * debian/control: Added the following build dependencies: - cmake-extras (>= 0.4), - google-mock (>= 1.6.0+svn437), - libqtdbusmock1-dev (>= 0.3), - libqtdbustest1-dev, - libunity-api-dev, - pulseaudio, - qt5-default, - qtbase5-dev, - qtbase5-dev-tools, - qtdeclarative5-dev, - qtdeclarative5-dev-tools * Added gmenuharness library for integration tests support. New Files: - src/gmenuharness/CMakeLists.txt - src/gmenuharness/MatchResult.cpp - src/gmenuharness/MatchUtils.cpp - src/gmenuharness/MenuItemMatcher.cpp - src/gmenuharness/MenuMatcher.cpp - include/unity/gmenuharness/MatchResult.h - include/unity/gmenuharness/MatchUtils.h - include/unity/gmenuharness/MenuItemMatcher.h - include/unity/gmenuharness/MenuMatcher.h * Added integration tests using gmenuharness New Files: - tests/dbus-types/CMakeLists.txt - tests/dbus-types/com.ubuntu.AccountsService.Sound.xml - tests/dbus-types/dbus-types.h - tests/dbus-types/org.PulseAudio.Ext.StreamRestore1.xml - tests/dbus-types/org.freedesktop.Accounts.xml - tests/dbus-types/org.freedesktop.DBus.Properties.xml - tests/dbus-types/org.freedesktop.Notifications.xml - tests/dbus-types/org.gtk.Actions.xml - tests/dbus-types/pulseaudio-volume.cpp - tests/dbus-types/pulseaudio-volume.h - tests/integration/CMakeLists.txt - tests/integration/indicator-sound-test-base.cpp - tests/integration/indicator-sound-test-base.h - tests/integration/main.cpp - tests/integration/test-indicator.cpp - tests/integration/touch-stream-restore.table - tests/integration/utils/dbus-pulse-volume.cpp - tests/integration/utils/dbus-pulse-volume.h - tests/integration/utils/get-volume.cpp - tests/integration/utils/set-volume.cpp - tests/service-mocks/CMakeLists.txt - tests/service-mocks/DBusPropertiesNotifier.cpp - tests/service-mocks/DBusPropertiesNotifier.h - tests/service-mocks/accounts-mock/AccountsDefs.h - tests/service-mocks/accounts-mock/AccountsMock.cpp - tests/service-mocks/accounts-mock/AccountsMock.h - tests/service-mocks/accounts-mock/AccountsServiceSoundMock.cpp - tests/service-mocks/accounts-mock/AccountsServiceSoundMock.h - tests/service-mocks/accounts-mock/CMakeLists.txt - tests/service-mocks/accounts-mock/com.ubuntu.AccountsService.Sound.Mock.xml - tests/service-mocks/accounts-mock/main.cpp - tests/service-mocks/accounts-mock/org.freedesktop.Accounts.Mock.xml - tests/service-mocks/media-player-mpris-mock/CMakeLists.txt - tests/service-mocks/media-player-mpris-mock/MediaPlayerMprisDefs.h - tests/service-mocks/media-player-mpris-mock/MediaPlayerMprisMock.cpp - tests/service-mocks/media-player-mpris-mock/MediaPlayerMprisMock.h - tests/service-mocks/media-player-mpris-mock/applications/testplayer1.desktop - tests/service-mocks/media-player-mpris-mock/main.cpp - tests/service-mocks/media-player-mpris-mock/org.mpris.MediaPlayer2.Player.xml - tests/service-mocks/media-player-mpris-mock/org.mpris.MediaPlayer2.xml - tests/service-mocks/media-player-mpris-mock/player-update.cpp Approved by: Charles Kerr, Xavi Garcia
Diffstat (limited to 'src/volume-control-pulse.vala')
-rw-r--r--src/volume-control-pulse.vala63
1 files changed, 41 insertions, 22 deletions
diff --git a/src/volume-control-pulse.vala b/src/volume-control-pulse.vala
index 8122f26..66b6ba4 100644
--- a/src/volume-control-pulse.vala
+++ b/src/volume-control-pulse.vala
@@ -140,40 +140,45 @@ public class VolumeControlPulse : VolumeControl
VolumeControl.ActiveOutput ret_output = VolumeControl.ActiveOutput.SPEAKERS;
/* Check if the current active port is headset/headphone */
- /* There is not easy way to check if the port is a headset/headphone besides
- * checking for the port name. On touch (with the pulseaudio droid element)
- * the headset/headphone port is called 'output-headset' and 'output-headphone'.
- * On the desktop this is usually called 'analog-output-headphones' */
+ /* There is not easy way to check if the port is a headset/headphone besides
+ * checking for the port name. On touch (with the pulseaudio droid element)
+ * the headset/headphone port is called 'output-headset' and 'output-headphone'.
+ * On the desktop this is usually called 'analog-output-headphones' */
+
+ // first of all check if we are in call mode
+ if (sink.active_port != null && sink.active_port.name == "output-speaker+wired_headphone") {
+ return VolumeControl.ActiveOutput.CALL_MODE;
+ }
// look if it's a headset/headphones
if (sink.name == "indicator_sound_test_headphones" ||
(sink.active_port != null &&
(sink.active_port.name.contains("headset") ||
- sink.active_port.name.contains("headphone")))) {
- _active_port_headphone = true;
- // check if it's a bluetooth device
- var device_bus = sink.proplist.gets ("device.bus");
- if (device_bus != null && device_bus == "bluetooth") {
- ret_output = VolumeControl.ActiveOutput.BLUETOOTH_HEADPHONES;
- } else if (device_bus != null && device_bus == "usb") {
- ret_output = VolumeControl.ActiveOutput.USB_HEADPHONES;
- } else if (device_bus != null && device_bus == "hdmi") {
- ret_output = VolumeControl.ActiveOutput.HDMI_HEADPHONES;
- } else {
- ret_output = VolumeControl.ActiveOutput.HEADPHONES;
- }
+ sink.active_port.name.contains("headphone")))) {
+ _active_port_headphone = true;
+ // check if it's a bluetooth device
+ var device_bus = sink.proplist.gets ("device.bus");
+ if (device_bus != null && device_bus == "bluetooth") {
+ ret_output = VolumeControl.ActiveOutput.BLUETOOTH_HEADPHONES;
+ } else if (device_bus != null && device_bus == "usb") {
+ ret_output = VolumeControl.ActiveOutput.USB_HEADPHONES;
+ } else if (device_bus != null && device_bus == "hdmi") {
+ ret_output = VolumeControl.ActiveOutput.HDMI_HEADPHONES;
+ } else {
+ ret_output = VolumeControl.ActiveOutput.HEADPHONES;
+ }
} else {
// speaker
_active_port_headphone = false;
var device_bus = sink.proplist.gets ("device.bus");
- if (device_bus != null && device_bus == "bluetooth") {
- ret_output = VolumeControl.ActiveOutput.BLUETOOTH_SPEAKER;
- } else if (device_bus != null && device_bus == "usb") {
+ if (device_bus != null && device_bus == "bluetooth") {
+ ret_output = VolumeControl.ActiveOutput.BLUETOOTH_SPEAKER;
+ } else if (device_bus != null && device_bus == "usb") {
ret_output = VolumeControl.ActiveOutput.USB_SPEAKER;
} else if (device_bus != null && device_bus == "hdmi") {
ret_output = VolumeControl.ActiveOutput.HDMI_SPEAKER;
} else {
ret_output = VolumeControl.ActiveOutput.SPEAKERS;
- }
+ }
}
return ret_output;
@@ -253,7 +258,9 @@ public class VolumeControlPulse : VolumeControl
// check if the output has changed, if so... emit a signal
VolumeControl.ActiveOutput active_output_now = active_output;
- if (active_output_now != active_output_before) {
+ if (active_output_now != active_output_before &&
+ (active_output_now != VolumeControl.ActiveOutput.CALL_MODE &&
+ active_output_before != VolumeControl.ActiveOutput.CALL_MODE)) {
this.active_output_changed (active_output_now);
if (active_output_now == VolumeControl.ActiveOutput.SPEAKERS) {
_high_volume_approved = false;
@@ -738,6 +745,10 @@ public class VolumeControlPulse : VolumeControl
get { return this._high_volume; }
private set { this._high_volume = value; }
}
+ public override bool below_warning_volume {
+ get { return this._volume.volume < this._warning_volume_norms; }
+ private set { }
+ }
private void init_high_volume() {
_settings.changed["warning-volume-enabled"].connect(() => update_high_volume_cache());
_settings.changed["warning-volume-decibels"].connect(() => update_high_volume_cache());
@@ -779,6 +790,14 @@ public class VolumeControlPulse : VolumeControl
}
}
+ public override void set_warning_volume() {
+ var vol = new VolumeControl.Volume();
+ vol.volume = _warning_volume_norms;
+ vol.reason = _volume.reason;
+ debug("Setting warning level volume from %f down to %f", _volume.volume, vol.volume);
+ volume = vol;
+ }
+
/** HIGH VOLUME APPROVED PROPERTY **/
private bool _high_volume_approved = false;