From 8221ba62045012abf8a4443de20f17a0a8fc1288 Mon Sep 17 00:00:00 2001 From: Jan Seeger Date: Wed, 5 Aug 2020 15:39:20 +0200 Subject: Fixed crash on virtual sinks. Taken from upstream commits https://github.com/brndnmtthws/conky/commit/ddf8a0f58f3110e31ec4c44ecff838d2b231f6f3 and https://github.com/brndnmtthws/conky/commit/2a7226d89331f7d5d0abf0b9aff6d75435dd3a2d. Signed-off-by: Jan Seeger --- src/pulseaudio.cc | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/pulseaudio.cc b/src/pulseaudio.cc index 93226c1b..af814bd6 100644 --- a/src/pulseaudio.cc +++ b/src/pulseaudio.cc @@ -53,8 +53,13 @@ void pa_sink_info_callback(pa_context *c, const pa_sink_info *i, int eol, void * pdr->sink_mute = i->mute; pdr->sink_card = i->card; pdr->sink_index = i->index; - pdr->sink_active_port_name.assign(i->active_port->name); - pdr->sink_active_port_description.assign(i->active_port->description); + if (i->active_port != nullptr) { + pdr->sink_active_port_name.assign(i->active_port->name); + pdr->sink_active_port_description.assign(i->active_port->description); + } else { + pdr->sink_active_port_name.erase(); + pdr->sink_active_port_name.erase(); + } pdr->sink_volume = round_to_int(100.0f * (float)pa_cvolume_avg(&(i->volume)) / (float)PA_VOLUME_NORM); pa_threaded_mainloop_signal(pulseaudio->mainloop, 0); } @@ -224,9 +229,10 @@ void init_pulseaudio(struct text_object *obj) { return; } - if(pulseaudio->result.sink_card!=(uint32_t)-1) + if(pulseaudio->result.sink_card!=(uint32_t)-1) { PULSEAUDIO_WAIT(pa_context_get_card_info_by_index(pulseaudio->context, pulseaudio->result.sink_card, pa_card_info_callback, &pulseaudio->result)); + } // get notification when something changes in PA pa_context_set_subscribe_callback(pulseaudio->context, subscribe_cb, &pulseaudio->result); -- 2.26.2