You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
2.0 KiB
50 lines
2.0 KiB
4 years ago
|
From 8221ba62045012abf8a4443de20f17a0a8fc1288 Mon Sep 17 00:00:00 2001
|
||
|
From: Jan Seeger <jan.seeger@thenybble.de>
|
||
|
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 <jan.seeger@thenybble.de>
|
||
|
---
|
||
|
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
|
||
|
|