diff --git a/i3pystatus/pulseaudio/__init__.py b/i3pystatus/pulseaudio/__init__.py index 390caa2..cd1fd6a 100644 --- a/i3pystatus/pulseaudio/__init__.py +++ b/i3pystatus/pulseaudio/__init__.py @@ -113,10 +113,15 @@ class PulseAudio(Module, ColorRangeModule): pa_context_set_subscribe_callback(context, self._update_cb, None) pa_operation_unref(pa_context_subscribe( - context, PA_SUBSCRIPTION_EVENT_CHANGE | PA_SUBSCRIPTION_MASK_SINK, self._success_cb, None)) + context, PA_SUBSCRIPTION_EVENT_CHANGE | PA_SUBSCRIPTION_MASK_SINK | PA_SUBSCRIPTION_MASK_SERVER, self._success_cb, None)) def update_cb(self, context, t, idx, userdata): """A sink property changed, calls request_update""" + + if t & PA_SUBSCRIPTION_EVENT_FACILITY_MASK == PA_SUBSCRIPTION_EVENT_SERVER: + pa_operation_unref( + pa_context_get_server_info(context, self._server_info_cb, None)) + self.request_update(context) def sink_info_cb(self, context, sink_info_p, _, __): diff --git a/i3pystatus/pulseaudio/pulse.py b/i3pystatus/pulseaudio/pulse.py index 99dfce8..9c4327e 100644 --- a/i3pystatus/pulseaudio/pulse.py +++ b/i3pystatus/pulseaudio/pulse.py @@ -18,7 +18,10 @@ PA_OPERATION_CANCELLED = 2 PA_OPERATION_DONE = 1 PA_OPERATION_RUNNING = 0 PA_SUBSCRIPTION_EVENT_CHANGE = 16 +PA_SUBSCRIPTION_EVENT_FACILITY_MASK = 15 +PA_SUBSCRIPTION_EVENT_SERVER = 7 PA_SUBSCRIPTION_MASK_SINK = 1 +PA_SUBSCRIPTION_MASK_SERVER = 0x80 class pa_sink_port_info(Structure):