summaryrefslogtreecommitdiff
path: root/media/libcubeb/bug1292803_pulse_assert.patch
diff options
context:
space:
mode:
Diffstat (limited to 'media/libcubeb/bug1292803_pulse_assert.patch')
-rw-r--r--media/libcubeb/bug1292803_pulse_assert.patch46
1 files changed, 0 insertions, 46 deletions
diff --git a/media/libcubeb/bug1292803_pulse_assert.patch b/media/libcubeb/bug1292803_pulse_assert.patch
deleted file mode 100644
index 8dee88777b..0000000000
--- a/media/libcubeb/bug1292803_pulse_assert.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-commit 2c7617f5ca20b764c605e19af490889c761e65e2
-Author: Matthew Gregan <kinetik@flim.org>
-Date: Thu Nov 10 19:07:07 2016 +1300
-
- pulse: Bail early from pulse_defer_event_cb when shutting down.
-
- When starting a stream, trigger_user_callback may be called from
- stream_write_callback and immediately enter a drain situation, creating
- a drain timer and setting shutdown to true. If pulse_defer_event_cb
- then runs without checking for shutdown, it can overwrite the current
- timer with a new timer, resulting in a leaked timer and a null pointer
- assertion.
-
-diff --git a/src/cubeb_pulse.c b/src/cubeb_pulse.c
-index 5b61bda..86f2ba3 100644
---- a/src/cubeb_pulse.c
-+++ b/src/cubeb_pulse.c
-@@ -181,9 +181,9 @@ static void
- stream_drain_callback(pa_mainloop_api * a, pa_time_event * e, struct timeval const * tv, void * u)
- {
- (void)a;
-- (void)e;
- (void)tv;
- cubeb_stream * stm = u;
-+ assert(stm->drain_timer == e);
- stream_state_change_callback(stm, CUBEB_STATE_DRAINED);
- /* there's no pa_rttime_free, so use this instead. */
- a->time_free(stm->drain_timer);
-@@ -267,6 +267,7 @@ trigger_user_callback(pa_stream * s, void const * input_data, size_t nbytes, cub
- assert(r == 0 || r == -PA_ERR_NODATA);
- /* pa_stream_drain is useless, see PA bug# 866. this is a workaround. */
- /* arbitrary safety margin: double the current latency. */
-+ assert(!stm->drain_timer);
- stm->drain_timer = WRAP(pa_context_rttime_new)(stm->context->context, WRAP(pa_rtclock_now)() + 2 * latency, stream_drain_callback, stm);
- stm->shutdown = 1;
- return;
-@@ -851,6 +852,9 @@ pulse_defer_event_cb(pa_mainloop_api * a, void * userdata)
- {
- (void)a;
- cubeb_stream * stm = userdata;
-+ if (stm->shutdown) {
-+ return;
-+ }
- size_t writable_size = WRAP(pa_stream_writable_size)(stm->output_stream);
- trigger_user_callback(stm->output_stream, NULL, writable_size, stm);
- }