From c948484c7fe764467ee749aa04d02617d8fee591 Mon Sep 17 00:00:00 2001 From: Ilya Konstantinov Date: Thu, 7 May 2015 21:18:27 +0200 Subject: [PATCH] avfvideosrc: fix unconditional buffer queue unlock Unless stopRequest is set, we should unlock conditionally -- otherwise, the 'create:' method can wake up to an empty buffer queue and pull a nil buffer. https://bugzilla.gnome.org/show_bug.cgi?id=748054 --- sys/applemedia/avfvideosrc.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/applemedia/avfvideosrc.m b/sys/applemedia/avfvideosrc.m index 176502adbc..00f5c65242 100644 --- a/sys/applemedia/avfvideosrc.m +++ b/sys/applemedia/avfvideosrc.m @@ -824,7 +824,7 @@ didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer { [bufQueueLock lock]; stopRequest = NO; - [bufQueueLock unlock]; + [bufQueueLock unlockWithCondition:([bufQueue count] == 0) ? NO_BUFFERS : HAS_BUFFER_OR_STOP_REQUEST]; return YES; } @@ -862,7 +862,7 @@ didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer [self getSampleBuffer:sampleBuffer timestamp:×tamp duration:&duration]; if (timestamp == GST_CLOCK_TIME_NONE) { - [bufQueueLock unlock]; + [bufQueueLock unlockWithCondition:([bufQueue count] == 0) ? NO_BUFFERS : HAS_BUFFER_OR_STOP_REQUEST]; return; }