aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/media-player-mpris.vala4
-rw-r--r--src/mpris2-interfaces.vala2
-rw-r--r--src/volume-control-pulse.vala29
3 files changed, 19 insertions, 16 deletions
diff --git a/src/media-player-mpris.vala b/src/media-player-mpris.vala
index bf25e21..741d887 100644
--- a/src/media-player-mpris.vala
+++ b/src/media-player-mpris.vala
@@ -202,7 +202,7 @@ public class MediaPlayerMpris: MediaPlayer {
gproxy.g_properties_changed.connect (this.proxy_properties_changed);
this.notify_property ("is-running");
- this.state = this.proxy.PlaybackStatus;
+ this.state = this.proxy.PlaybackStatus != null ? this.proxy.PlaybackStatus : "Unknown";
this.update_current_track (gproxy.get_cached_property ("Metadata"));
if (this.play_when_attached) {
@@ -270,7 +270,7 @@ public class MediaPlayerMpris: MediaPlayer {
void proxy_properties_changed (DBusProxy proxy, Variant changed_properties, string[] invalidated_properties) {
if (changed_properties.lookup ("PlaybackStatus", "s", null)) {
- this.state = this.proxy.PlaybackStatus;
+ this.state = this.proxy.PlaybackStatus != null ? this.proxy.PlaybackStatus : "Unknown";
}
var metadata = changed_properties.lookup_value ("Metadata", new VariantType ("a{sv}"));
diff --git a/src/mpris2-interfaces.vala b/src/mpris2-interfaces.vala
index cb68e84..a472d5c 100644
--- a/src/mpris2-interfaces.vala
+++ b/src/mpris2-interfaces.vala
@@ -37,7 +37,7 @@ public interface MprisPlayer : Object {
// properties
public abstract HashTable<string, Variant?> Metadata{owned get; set;}
public abstract int32 Position{owned get; set;}
- public abstract string PlaybackStatus{owned get; set;}
+ public abstract string? PlaybackStatus{owned get; set;}
// methods
public abstract async void PlayPause() throws IOError;
public abstract async void Next() throws IOError;
diff --git a/src/volume-control-pulse.vala b/src/volume-control-pulse.vala
index 9ac7dce..050318b 100644
--- a/src/volume-control-pulse.vala
+++ b/src/volume-control-pulse.vala
@@ -616,23 +616,26 @@ public class VolumeControlPulse : VolumeControl
return _volume;
}
set {
- debug("Setting volume to %f for profile %d because %d", value.volume, _active_sink_input, value.reason);
+ if (value.volume != _volume.volume) {
+ debug("Setting volume to %f for profile %d because %d", value.volume, _active_sink_input, value.reason);
- var old_high_volume = this.high_volume;
- _volume = value;
+ var old_high_volume = this.high_volume;
+ _volume = value;
- /* Make sure we're connected to Pulse and pulse didn't give us the change */
- if (context.get_state () == Context.State.READY &&
- _volume.reason != VolumeControl.VolumeReasons.PULSE_CHANGE)
- if (_pulse_use_stream_restore)
- set_volume_active_role.begin ();
- else
- context.get_server_info (server_info_cb_for_set_volume);
+ /* Make sure we're connected to Pulse and pulse didn't give us the change */
+ if (context.get_state () == Context.State.READY &&
+ _volume.reason != VolumeControl.VolumeReasons.PULSE_CHANGE)
+ if (_pulse_use_stream_restore)
+ set_volume_active_role.begin ();
+ else
+ context.get_server_info (server_info_cb_for_set_volume);
- if (this.high_volume != old_high_volume)
- this.notify_property("high-volume");
+ if (this.high_volume != old_high_volume)
+ this.notify_property("high-volume");
- start_local_volume_timer();
+ if (volume.reason != VolumeControl.VolumeReasons.ACCOUNTS_SERVICE_SET)
+ start_local_volume_timer();
+ }
}
}