From 026afabe8b9f73754db9aa347adcecd8bb8008d2 Mon Sep 17 00:00:00 2001 From: Hampton Maxwell Date: Wed, 20 Jun 2018 16:33:50 -0700 Subject: [PATCH] Only allow the player layer observer to be cleared if it's set (#907) --- ios/RCTVideo.m | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ios/RCTVideo.m b/ios/RCTVideo.m index 5fd921cdb9..a9734f7d7d 100644 --- a/ios/RCTVideo.m +++ b/ios/RCTVideo.m @@ -18,6 +18,7 @@ @implementation RCTVideo BOOL _playerItemObserversSet; BOOL _playerBufferEmpty; AVPlayerLayer *_playerLayer; + BOOL _playerLayerObserverSet; AVPlayerViewController *_playerViewController; NSURL *_videoURL; @@ -794,6 +795,7 @@ - (void)usePlayerLayer // resize mode must be set before layer is added [self setResizeMode:_resizeMode]; [_playerLayer addObserver:self forKeyPath:readyForDisplayKeyPath options:NSKeyValueObservingOptionNew context:nil]; + _playerLayerObserverSet = YES; [self.layer addSublayer:_playerLayer]; self.layer.needsDisplayOnBoundsChange = YES; @@ -832,7 +834,10 @@ - (void)setProgressUpdateInterval:(float)progressUpdateInterval - (void)removePlayerLayer { [_playerLayer removeFromSuperlayer]; - [_playerLayer removeObserver:self forKeyPath:readyForDisplayKeyPath]; + if (_playerLayerObserverSet) { + [_playerLayer removeObserver:self forKeyPath:readyForDisplayKeyPath]; + _playerLayerObserverSet = NO; + } _playerLayer = nil; }