mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
T183626616 - [KP][WP iOS v] App crashes after rotation in landscape view during playing a video. (#45846)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/45846 In general this diff fixes all crashes related to RTCImageUtills happened because of uncovered cases in switch. In this current bug the problem was in this part of code RCTTargetSize(imageSize, imageScale, frame.size, RCTScreenScale(), (RCTResizeMode)self.contentMode, YES); when we cast UIViewContentMode to RCTResizeMode. RCTResizeMode doesnt cover all of UIViewContentMode values. So just added default cases to swithces in places where it was lost. Changelog: [iOS][Fixed] - fixed crash in RCTImageUtils Reviewed By: philIip Differential Revision: D60523540 fbshipit-source-id: b8027537c600a7ca226e62238d16a6b05301d4de
This commit is contained in:
committed by
Facebook GitHub Bot
parent
67367a0bba
commit
3572ef3f1b
@@ -447,8 +447,8 @@ RCT_NOT_IMPLEMENTED(-(instancetype)initWithFrame : (CGRect)frame)
|
||||
} else if ([self shouldReloadImageSourceAfterResize]) {
|
||||
CGSize imageSize = self.image.size;
|
||||
CGFloat imageScale = self.image.scale;
|
||||
CGSize idealSize =
|
||||
RCTTargetSize(imageSize, imageScale, frame.size, RCTScreenScale(), (RCTResizeMode)self.contentMode, YES);
|
||||
CGSize idealSize = RCTTargetSize(
|
||||
imageSize, imageScale, frame.size, RCTScreenScale(), RCTResizeModeFromUIViewContentMode(self.contentMode), YES);
|
||||
|
||||
// Don't reload if the current image or target image size is close enough
|
||||
if (!RCTShouldReloadImageForSizeChange(imageSize, idealSize) ||
|
||||
|
||||
@@ -15,6 +15,34 @@ typedef NS_ENUM(NSInteger, RCTResizeMode) {
|
||||
RCTResizeModeRepeat = -1, // Use negative values to avoid conflicts with iOS enum values.
|
||||
};
|
||||
|
||||
static inline RCTResizeMode RCTResizeModeFromUIViewContentMode(UIViewContentMode mode)
|
||||
{
|
||||
switch (mode) {
|
||||
case UIViewContentModeScaleToFill:
|
||||
return RCTResizeModeStretch;
|
||||
break;
|
||||
case UIViewContentModeScaleAspectFit:
|
||||
return RCTResizeModeContain;
|
||||
break;
|
||||
case UIViewContentModeScaleAspectFill:
|
||||
return RCTResizeModeCover;
|
||||
break;
|
||||
case UIViewContentModeCenter:
|
||||
return RCTResizeModeCenter;
|
||||
break;
|
||||
case UIViewContentModeRedraw:
|
||||
case UIViewContentModeTop:
|
||||
case UIViewContentModeBottom:
|
||||
case UIViewContentModeLeft:
|
||||
case UIViewContentModeRight:
|
||||
case UIViewContentModeTopLeft:
|
||||
case UIViewContentModeTopRight:
|
||||
case UIViewContentModeBottomLeft:
|
||||
case UIViewContentModeBottomRight:
|
||||
return RCTResizeModeRepeat;
|
||||
}
|
||||
};
|
||||
|
||||
@interface RCTConvert (RCTResizeMode)
|
||||
|
||||
+ (RCTResizeMode)RCTResizeMode:(id)json;
|
||||
|
||||
Reference in New Issue
Block a user