From 28bae40c6c0d5b58bb30c2e56249b91fe7ae115d Mon Sep 17 00:00:00 2001 From: seansy Date: Mon, 19 Mar 2018 12:56:55 -0700 Subject: [PATCH] Fixes #963 Bug happens when uri is changed for a video. The fix: Remove player layer before addPlayerItemObservers so _playerItemObserversSet is still set to NO if observers have already been removed. --- ios/RCTVideo.m | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/ios/RCTVideo.m b/ios/RCTVideo.m index 0f1227b11b..ab0d587979 100644 --- a/ios/RCTVideo.m +++ b/ios/RCTVideo.m @@ -140,8 +140,8 @@ -(void)removePlayerTimeObserver - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; - [self removePlayerItemObservers]; [self removePlayerLayer]; + [self removePlayerItemObservers]; [_player removeObserver:self forKeyPath:playbackRate context:nil]; } @@ -252,9 +252,6 @@ - (void)addPlayerItemObservers * observer set */ - (void)removePlayerItemObservers { - if (_playerLayer) { - [_playerLayer removeObserver:self forKeyPath:readyForDisplayKeyPath]; - } if (_playerItemObserversSet) { [_playerItem removeObserver:self forKeyPath:statusKeyPath]; [_playerItem removeObserver:self forKeyPath:playbackBufferEmptyKeyPath]; @@ -268,13 +265,13 @@ - (void)removePlayerItemObservers - (void)setSrc:(NSDictionary *)source { + [self removePlayerLayer]; [self removePlayerTimeObserver]; [self removePlayerItemObservers]; _playerItem = [self playerItemForSource:source]; [self addPlayerItemObservers]; [_player pause]; - [self removePlayerLayer]; [_playerViewController.view removeFromSuperview]; _playerViewController = nil;