0c7016
From fe2a549e5d6dd9352a6d14c1d0d45a5c263c5d06 Mon Sep 17 00:00:00 2001
0c7016
From: Ondrej Holy <oholy@redhat.com>
0c7016
Date: Thu, 11 Jun 2015 13:25:35 +0200
0c7016
Subject: [PATCH] rdpsnd/pulse: Fix crashes in pulseaudio
0c7016
0c7016
Function pa_stream_trigger has to be called under lock to avoid
0c7016
following crashes on asserts:
0c7016
0c7016
Assertion 'e->mainloop->n_enabled_defer_events > 0' failed at pulse/mainloop.c:257, function mainloop_defer_enable(). Aborting.
0c7016
Assertion '!e->next' failed at pulsecore/queue.c:104, function pa_queue_pop(). Aborting.
0c7016
Assertion 'q->front' failed at pulsecore/queue.c:81, function pa_queue_push(). Aborting.
0c7016
---
0c7016
 channels/rdpsnd/pulse/rdpsnd_pulse.c | 2 ++
0c7016
 1 file changed, 2 insertions(+)
0c7016
0c7016
diff --git a/channels/rdpsnd/pulse/rdpsnd_pulse.c b/channels/rdpsnd/pulse/rdpsnd_pulse.c
0c7016
index 1a331f0..0fcedef 100644
0c7016
--- a/channels/rdpsnd/pulse/rdpsnd_pulse.c
0c7016
+++ b/channels/rdpsnd/pulse/rdpsnd_pulse.c
0c7016
@@ -452,7 +452,9 @@ static void rdpsnd_pulse_start(rdpsndDevicePlugin* device)
0c7016
 	if (!pulse->stream)
0c7016
 		return;
0c7016
 
0c7016
+	pa_threaded_mainloop_lock(pulse->mainloop);
0c7016
 	pa_stream_trigger(pulse->stream, NULL, NULL);
0c7016
+	pa_threaded_mainloop_unlock(pulse->mainloop);
0c7016
 }
0c7016
 
0c7016
 int FreeRDPRdpsndDeviceEntry(PFREERDP_RDPSND_DEVICE_ENTRY_POINTS pEntryPoints)
0c7016
-- 
0c7016
2.5.0
0c7016