Revert "Improve thread-safety of MTL Renderer."
This reverts commit a8f13ccad400eb8ff84a379042c0595951ca9658.
Reason for revert: It's causing no video to be shown after the 1st call.
Original change's description:
> Improve thread-safety of MTL Renderer.
>
> Bug: b/77579859
> Change-Id: I427d0f41593155dc5cbf98a09d7ec826497b803c
> Reviewed-on: https://webrtc-review.googlesource.com/67040
> Commit-Queue: Kári Helgason <kthelgason@webrtc.org>
> Reviewed-by: Anders Carlsson <andersc@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#22795}
TBR=andersc@webrtc.org,kthelgason@webrtc.org
Change-Id: Ia8f33995e087178f1c3be7753f70be8ba18447f8
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: b/77579859
Reviewed-on: https://webrtc-review.googlesource.com/68860
Reviewed-by: JT Teh <jtteh@webrtc.org>
Commit-Queue: JT Teh <jtteh@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22800}
diff --git a/sdk/objc/Framework/Classes/Metal/RTCMTLVideoView.m b/sdk/objc/Framework/Classes/Metal/RTCMTLVideoView.m
index e343bb4..0e17777 100644
--- a/sdk/objc/Framework/Classes/Metal/RTCMTLVideoView.m
+++ b/sdk/objc/Framework/Classes/Metal/RTCMTLVideoView.m
@@ -105,32 +105,32 @@
- (void)drawInMTKView:(nonnull MTKView *)view {
NSAssert(view == self.metalView, @"Receiving draw callbacks from foreign instance.");
- RTCVideoFrame *videoFrame = self.videoFrame;
- if (!videoFrame) {
+ if (!self.videoFrame) {
return;
}
- if ([videoFrame.buffer isKindOfClass:[RTCCVPixelBuffer class]]) {
- static dispatch_once_t nv12_token;
- dispatch_once(&nv12_token, ^{
+ id<RTCMTLRenderer> renderer = nil;
+ if ([self.videoFrame.buffer isKindOfClass:[RTCCVPixelBuffer class]]) {
+ if (!self.rendererNV12) {
self.rendererNV12 = [RTCMTLVideoView createNV12Renderer];
if (![self.rendererNV12 addRenderingDestination:self.metalView]) {
self.rendererNV12 = nil;
RTCLogError(@"Failed to create NV12 renderer");
}
- });
- [self.rendererNV12 drawFrame:videoFrame];
+ }
+ renderer = self.rendererNV12;
} else {
- static dispatch_once_t i420_token;
- dispatch_once(&i420_token, ^{
+ if (!self.rendererI420) {
self.rendererI420 = [RTCMTLVideoView createI420Renderer];
if (![self.rendererI420 addRenderingDestination:self.metalView]) {
self.rendererI420 = nil;
RTCLogError(@"Failed to create I420 renderer");
}
- });
- [self.rendererI420 drawFrame:videoFrame];
+ }
+ renderer = self.rendererI420;
}
+
+ [renderer drawFrame:self.videoFrame];
}
- (void)mtkView:(MTKView *)view drawableSizeWillChange:(CGSize)size {