aboutsummaryrefslogtreecommitdiff
path: root/src/volume-warning-pulse.vala
diff options
context:
space:
mode:
Diffstat (limited to 'src/volume-warning-pulse.vala')
-rw-r--r--src/volume-warning-pulse.vala116
1 files changed, 46 insertions, 70 deletions
diff --git a/src/volume-warning-pulse.vala b/src/volume-warning-pulse.vala
index 9be2359..335c8bf 100644
--- a/src/volume-warning-pulse.vala
+++ b/src/volume-warning-pulse.vala
@@ -26,16 +26,17 @@ public class VolumeWarningPulse : VolumeWarning
public VolumeWarningPulse (IndicatorSound.Options options,
PulseAudio.GLibMainLoop pgloop) {
base(options);
+
_pgloop = pgloop;
- pulse_start();
+ pulse_reconnect();
}
- ~VolumeWarningPulse ()
- {
- pulse_stop();
+ ~VolumeWarningPulse () {
+ pulse_reconnect_soon_cancel();
+ pulse_disconnect();
}
- protected override void sound_system_set_multimedia_volume(PulseAudio.Volume volume) {
+ protected override void sound_system_set_multimedia_volume (PulseAudio.Volume volume) {
pulse_set_sink_volume(volume);
}
@@ -53,8 +54,8 @@ public class VolumeWarningPulse : VolumeWarning
private unowned PulseAudio.CVolume _multimedia_cvolume;
- private bool is_active_multimedia (SinkInputInfo i)
- {
+ private bool is_active_multimedia (SinkInputInfo i) {
+
if (i.corked != 0)
return false;
@@ -66,61 +67,55 @@ public class VolumeWarningPulse : VolumeWarning
return true;
}
- private void update_multimedia_volume()
- {
+ private void update_multimedia_volume () {
+
GLib.return_if_fail(_pulse_context != null);
GLib.return_if_fail(_multimedia_sink_index != PulseAudio.INVALID_INDEX);
- GLib.message("updating multimedia volume");
-
_pulse_context.get_sink_info_by_index(_multimedia_sink_index, (c,i) => {
GLib.return_if_fail(i != null);
+ GLib.message("setting multimedia_volume to %s", i.volume.to_string());
_multimedia_cvolume = i.volume;
multimedia_volume = i.volume.max();
});
}
- private void set_multimedia_sink_index(uint32 index)
- {
- if (index == PulseAudio.INVALID_INDEX)
- {
+ private void set_multimedia_sink_index(uint32 index) {
+
+ if (index == PulseAudio.INVALID_INDEX) {
_multimedia_sink_index = PulseAudio.INVALID_INDEX;
multimedia_volume = PulseAudio.Volume.INVALID;
- }
- else if (_multimedia_sink_index != index)
- {
+ } else if (_multimedia_sink_index != index) {
_multimedia_sink_index = index;
multimedia_volume = PulseAudio.Volume.INVALID;
update_multimedia_volume();
}
}
- private void on_sink_input_info (Context c, SinkInputInfo? i, int eol)
- {
+ private void on_sink_input_info (Context c, SinkInputInfo? i, int eol) {
+
if (i == null)
return;
- if (is_active_multimedia(i)) {
- GLib.message("on_sink_input_info() setting multimedia sink input index to %d, sink index to %d", (int)i.index, (int)i.sink);
+ if (is_active_multimedia (i)) {
+ GLib.message ("on_sink_input_info() setting multimedia sink input index to %d, sink index to %d", (int)i.index, (int)i.sink);
_multimedia_sink_input_index = i.index;
- set_multimedia_sink_index(i.sink);
+ set_multimedia_sink_index (i.sink);
multimedia_active = true;
}
else if (i.index == _multimedia_sink_input_index) {
_multimedia_sink_input_index = PulseAudio.INVALID_INDEX;
- set_multimedia_sink_index(PulseAudio.INVALID_INDEX);
+ set_multimedia_sink_index (PulseAudio.INVALID_INDEX);
multimedia_active = false;
}
}
- private void pulse_update_sink_inputs()
- {
+ private void pulse_update_sink_inputs () {
_pulse_context.get_sink_input_info_list (on_sink_input_info);
}
- private void context_events_cb (Context c, Context.SubscriptionEventType t, uint32 index)
- {
+ private void context_events_cb (Context c, Context.SubscriptionEventType t, uint32 index) {
switch (t & Context.SubscriptionEventType.FACILITY_MASK)
{
case Context.SubscriptionEventType.SINK:
@@ -133,15 +128,15 @@ public class VolumeWarningPulse : VolumeWarning
{
case Context.SubscriptionEventType.NEW:
case Context.SubscriptionEventType.CHANGE:
- GLib.message("-> Context.SubscriptionEventType.CHANGE or NEW");
- c.get_sink_input_info(index, on_sink_input_info);
+ GLib.message ("-> Context.SubscriptionEventType.CHANGE or NEW");
+ c.get_sink_input_info (index, on_sink_input_info);
break;
case Context.SubscriptionEventType.REMOVE:
- GLib.message("-> Context.SubscriptionEventType.REMOVE");
- pulse_update_sink_inputs();
+ GLib.message ("-> Context.SubscriptionEventType.REMOVE");
+ pulse_update_sink_inputs ();
break;
default:
- GLib.debug("Sink input event not known.");
+ GLib.debug ("Sink input event not known.");
break;
}
break;
@@ -151,19 +146,18 @@ public class VolumeWarningPulse : VolumeWarning
}
}
- private void pulse_context_state_callback (Context c)
- {
+ private void pulse_context_state_callback (Context c) {
switch (c.get_state ()) {
case Context.State.READY:
c.set_subscribe_callback (context_events_cb);
c.subscribe (PulseAudio.Context.SubscriptionMask.SINK |
PulseAudio.Context.SubscriptionMask.SINK_INPUT);
- pulse_update_sink_inputs();
+ pulse_update_sink_inputs ();
break;
case Context.State.FAILED:
case Context.State.TERMINATED:
- pulse_reconnect_soon();
+ pulse_reconnect_soon ();
break;
default:
@@ -171,37 +165,32 @@ public class VolumeWarningPulse : VolumeWarning
}
}
- private void pulse_disconnect()
- {
+ private void pulse_disconnect () {
if (_pulse_context != null) {
_pulse_context.disconnect ();
_pulse_context = null;
}
}
- private void pulse_reconnect_soon ()
- {
+ private void pulse_reconnect_soon () {
if (_pulse_reconnect_timer == 0)
_pulse_reconnect_timer = Timeout.add_seconds (2, pulse_reconnect_timeout);
}
- private void pulse_reconnect_soon_cancel()
- {
+ private void pulse_reconnect_soon_cancel () {
if (_pulse_reconnect_timer != 0) {
- Source.remove(_pulse_reconnect_timer);
+ Source.remove (_pulse_reconnect_timer);
_pulse_reconnect_timer = 0;
}
}
- private bool pulse_reconnect_timeout ()
- {
+ private bool pulse_reconnect_timeout () {
_pulse_reconnect_timer = 0;
pulse_reconnect ();
return Source.REMOVE;
}
- void pulse_reconnect ()
- {
+ void pulse_reconnect () {
pulse_disconnect();
var props = new Proplist ();
@@ -213,38 +202,25 @@ public class VolumeWarningPulse : VolumeWarning
_pulse_context = new PulseAudio.Context (_pgloop.get_api(), null, props);
_pulse_context.set_state_callback (pulse_context_state_callback);
- var server_string = Environment.get_variable("PULSE_SERVER");
- if (_pulse_context.connect(server_string, Context.Flags.NOFAIL, null) < 0)
- warning( "pa_context_connect() failed: %s\n", PulseAudio.strerror(_pulse_context.errno()));
+ var server_string = Environment.get_variable ("PULSE_SERVER");
+ if (_pulse_context.connect (server_string, Context.Flags.NOFAIL, null) < 0)
+ GLib.warning ("pa_context_connect() failed: %s\n", PulseAudio.strerror(_pulse_context.errno()));
}
- void pulse_set_sink_volume(PulseAudio.Volume volume)
- {
+ void pulse_set_sink_volume (PulseAudio.Volume volume) {
var index = _warning_sink_index;
GLib.return_if_fail(_pulse_context != null);
GLib.return_if_fail(index != PulseAudio.INVALID_INDEX);
GLib.return_if_fail(volume != PulseAudio.Volume.INVALID);
- unowned CVolume cvol = CVolume();
- cvol.set(_multimedia_cvolume.channels, volume);
- GLib.message("setting multimedia volume to %s", cvol.to_string());
- _pulse_context.set_sink_volume_by_index(index, cvol);
- }
-
- private void pulse_start()
- {
- pulse_reconnect();
- }
-
- private void pulse_stop()
- {
- pulse_reconnect_soon_cancel();
- pulse_disconnect();
+ unowned CVolume cvol = CVolume ();
+ cvol.set (_multimedia_cvolume.channels, volume);
+ GLib.message ("setting multimedia volume to %s", cvol.to_string());
+ _pulse_context.set_sink_volume_by_index (index, cvol);
}
- protected override void preshow()
- {
+ protected override void preshow () {
_warning_sink_index = _multimedia_sink_index;
}
}