NuvioStreaming/src/patches/react-native-video+6.12.0.patch

44 lines
No EOL
1.5 KiB
Diff

diff --git a/node_modules/react-native-video/ios/Video/RCTVideo.m b/node_modules/react-native-video/ios/Video/RCTVideo.m
index 79d88de..a28a21e 100644
--- a/node_modules/react-native-video/ios/Video/RCTVideo.m
+++ b/node_modules/react-native-video/ios/Video/RCTVideo.m
@@ -1023,7 +1023,9 @@ static NSString *const statusKeyPath = @"status";
/* The player used to render the video */
AVPlayer *_player;
- AVPlayerLayer *_playerLayer;
+ // Use strong reference instead of weak to prevent deallocation issues
+ __strong AVPlayerLayer *_playerLayer;
+
NSURL *_videoURL;
/* IOS < 10 seek optimization */
@@ -1084,7 +1086,16 @@ - (void)removeFromSuperview
_player = nil;
_playerItem = nil;
- _playerLayer = nil;
+
+ // Properly clean up the player layer
+ if (_playerLayer) {
+ [_playerLayer removeFromSuperlayer];
+ // Set animation keys to nil before releasing to avoid crashes
+ [_playerLayer removeAllAnimations];
+ _playerLayer = nil;
+ }
+
+ [[NSNotificationCenter defaultCenter] removeObserver:self];
}
#pragma mark - App lifecycle handlers
@@ -1116,7 +1127,8 @@ - (void)applicationDidEnterBackground:(NSNotification *)notification
- (void)applicationWillEnterForeground:(NSNotification *)notification
{
- if (_playInBackground || _playWhenInactive || _paused) return;
+ // Resume playback even if originally playing in background
+ if (_paused) return;
[_player play];
[_player setRate:_rate];
}