diff --git a/framework/Source/Operations/ImageBuffer.swift b/framework/Source/Operations/ImageBuffer.swift index 6b5b5675..29e1100e 100644 --- a/framework/Source/Operations/ImageBuffer.swift +++ b/framework/Source/Operations/ImageBuffer.swift @@ -10,7 +10,7 @@ public class ImageBuffer: ImageProcessingOperation { public func newFramebufferAvailable(_ framebuffer:Framebuffer, fromSourceIndex:UInt) { bufferedFramebuffers.append(framebuffer) - if (bufferedFramebuffers.count > Int(bufferSize)) { + if (bufferedFramebuffers.count >= Int(bufferSize)) { let releasedFramebuffer = bufferedFramebuffers.removeFirst() updateTargetsWithFramebuffer(releasedFramebuffer) releasedFramebuffer.unlock() diff --git a/framework/Source/Pipeline.swift b/framework/Source/Pipeline.swift index 3ddfe9b5..b6f72219 100755 --- a/framework/Source/Pipeline.swift +++ b/framework/Source/Pipeline.swift @@ -92,7 +92,7 @@ class WeakImageConsumer { public class TargetContainer:Sequence { var targets = [WeakImageConsumer]() - var count:Int { get {return targets.count}} + var count:Int { get { return self.dispatchQueue.sync{return targets.count}}} #if !os(Linux) let dispatchQueue = DispatchQueue(label:"com.sunsetlakesoftware.GPUImage.targetContainerQueue", attributes: []) #endif