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];
   });