Add readyForDisplay callback

This commit is contained in:
Stanisław Chmiela 2016-04-28 14:25:45 +02:00
parent b17e3add97
commit eb3fc2373a
2 changed files with 15 additions and 7 deletions

View File

@ -7,6 +7,7 @@
static NSString *const statusKeyPath = @"status"; static NSString *const statusKeyPath = @"status";
static NSString *const playbackLikelyToKeepUpKeyPath = @"playbackLikelyToKeepUp"; static NSString *const playbackLikelyToKeepUpKeyPath = @"playbackLikelyToKeepUp";
static NSString *const playbackBufferEmptyKeyPath = @"playbackBufferEmpty"; static NSString *const playbackBufferEmptyKeyPath = @"playbackBufferEmpty";
static NSString *const readyForDisplayKeyPath = @"readyForDisplay";
@implementation RCTVideo @implementation RCTVideo
{ {
@ -213,8 +214,7 @@ static NSString *const playbackBufferEmptyKeyPath = @"playbackBufferEmpty";
[self addPlayerItemObservers]; [self addPlayerItemObservers];
[_player pause]; [_player pause];
[_playerLayer removeFromSuperlayer]; [self removePlayerLayer];
_playerLayer = nil;
[_playerViewController.view removeFromSuperview]; [_playerViewController.view removeFromSuperview];
_playerViewController = nil; _playerViewController = nil;
@ -505,6 +505,8 @@ static NSString *const playbackBufferEmptyKeyPath = @"playbackBufferEmpty";
_playerLayer.frame = self.bounds; _playerLayer.frame = self.bounds;
_playerLayer.needsDisplayOnBoundsChange = YES; _playerLayer.needsDisplayOnBoundsChange = YES;
[_playerLayer addObserver:self forKeyPath:readyForDisplayKeyPath options:NSKeyValueObservingOptionNew context:nil];
[self.layer addSublayer:_playerLayer]; [self.layer addSublayer:_playerLayer];
self.layer.needsDisplayOnBoundsChange = YES; self.layer.needsDisplayOnBoundsChange = YES;
} }
@ -517,8 +519,7 @@ static NSString *const playbackBufferEmptyKeyPath = @"playbackBufferEmpty";
_controls = controls; _controls = controls;
if( _controls ) if( _controls )
{ {
[_playerLayer removeFromSuperlayer]; [self removePlayerLayer];
_playerLayer = nil;
[self usePlayerViewController]; [self usePlayerViewController];
} }
else else
@ -530,6 +531,13 @@ static NSString *const playbackBufferEmptyKeyPath = @"playbackBufferEmpty";
} }
} }
- (void)removePlayerLayer
{
[_playerLayer removeFromSuperlayer];
[_playerLayer removeObserver:self forKeyPath:readyForDisplayKeyPath];
_playerLayer = nil;
}
#pragma mark - RCTVideoPlayerViewControllerDelegate #pragma mark - RCTVideoPlayerViewControllerDelegate
- (void)videoPlayerViewControllerWillDismiss:(AVPlayerViewController *)playerViewController - (void)videoPlayerViewControllerWillDismiss:(AVPlayerViewController *)playerViewController
@ -615,8 +623,7 @@ static NSString *const playbackBufferEmptyKeyPath = @"playbackBufferEmpty";
[_player pause]; [_player pause];
_player = nil; _player = nil;
[_playerLayer removeFromSuperlayer]; [self removePlayerLayer];
_playerLayer = nil;
[_playerViewController.view removeFromSuperview]; [_playerViewController.view removeFromSuperview];
_playerViewController = nil; _playerViewController = nil;

View File

@ -28,7 +28,8 @@ RCT_EXPORT_MODULE();
@"onVideoFullscreenPlayerWillPresent", @"onVideoFullscreenPlayerWillPresent",
@"onVideoFullscreenPlayerDidPresent", @"onVideoFullscreenPlayerDidPresent",
@"onVideoFullscreenPlayerWillDismiss", @"onVideoFullscreenPlayerWillDismiss",
@"onVideoFullscreenPlayerDidDismiss" @"onVideoFullscreenPlayerDidDismiss",
@"onReadyForDisplay"
]; ];
} }