Update the drawable size when changing the view's frame.
Change-Id: I2ef4930e880ff8d3409d766cad4b6d14746a49dc
Bug: webrtc:9179
Change-Id: I2ef4930e880ff8d3409d766cad4b6d14746a49dc
Reviewed-on: https://webrtc-review.googlesource.com/71638
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Commit-Queue: JT Teh <jtteh@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22985}
diff --git a/sdk/objc/Framework/Classes/Metal/RTCMTLVideoView.m b/sdk/objc/Framework/Classes/Metal/RTCMTLVideoView.m
index dde6266..46e5f21 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];
});