diff options
author | Xavi Garcia Mena <xavi.garcia.mena@canonical.com> | 2016-01-05 15:08:12 +0000 |
---|---|---|
committer | CI Train Bot <ci-train-bot@canonical.com> | 2016-01-05 15:08:12 +0000 |
commit | e1feb61a02a1353b42fcd85ced8e0489c711a451 (patch) | |
tree | b91e31644dd757bad22f2241532100f9009bad92 /src/volume-control-pulse.vala | |
parent | 6869e11338783297c2b3fd3b4184cca1cd2d2150 (diff) | |
parent | 0eea8e8a2cee47f72292384ac856d3f68208d680 (diff) | |
download | ayatana-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.vala | 63 |
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; |