mirror of
https://github.com/tapframe/NuvioStreaming.git
synced 2026-03-11 17:45:38 +00:00
44 lines
No EOL
1.5 KiB
Diff
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];
|
|
}
|