From 5c14725d53a6bebbdc47fb88f7a1b2191cbe060f Mon Sep 17 00:00:00 2001 From: JT Teh Date: Sun, 22 Apr 2018 09:28:27 -0700 Subject: [PATCH] Update the drawable size when changing the view's frame. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I2ef4930e880ff8d3409d766cad4b6d14746a49dc Bug: webrtc:9179 Change-Id: I2ef4930e880ff8d3409d766cad4b6d14746a49dc Reviewed-on: https://webrtc-review.googlesource.com/71638 Reviewed-by: Kári Helgason Commit-Queue: JT Teh Cr-Commit-Position: refs/heads/master@{#22985} --- sdk/objc/Framework/Classes/Metal/RTCMTLVideoView.m | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/sdk/objc/Framework/Classes/Metal/RTCMTLVideoView.m b/sdk/objc/Framework/Classes/Metal/RTCMTLVideoView.m index dde626645a..46e5f21fe2 100644 --- a/sdk/objc/Framework/Classes/Metal/RTCMTLVideoView.m +++ b/sdk/objc/Framework/Classes/Metal/RTCMTLVideoView.m @@ -35,6 +35,7 @@ @implementation RTCMTLVideoView { int64_t _lastFrameTimeNs; + CGSize _videoFrameSize; } @synthesize delegate = _delegate; @@ -94,6 +95,7 @@ _metalView.delegate = self; [self addSubview:_metalView]; _metalView.contentMode = UIViewContentModeScaleAspectFit; + _videoFrameSize = CGSizeZero; } } @@ -105,7 +107,13 @@ - (void)layoutSubviews { [super layoutSubviews]; - _metalView.frame = self.bounds; + CGRect bounds = self.bounds; + _metalView.frame = bounds; + if (!CGSizeEqualToSize(_videoFrameSize, CGSizeZero)) { + _metalView.drawableSize = _videoFrameSize; + } else { + _metalView.drawableSize = bounds.size; + } } #pragma mark - MTKViewDelegate methods @@ -149,6 +157,7 @@ - (void)setSize:(CGSize)size { self.metalView.drawableSize = size; + _videoFrameSize = size; dispatch_async(dispatch_get_main_queue(), ^{ [self.delegate videoView:self didChangeVideoSize:size]; });