summaryrefslogtreecommitdiff
blob: c0198ccc4ecf95808cc50695074cc6cb134208e8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
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