Commit dae2ea2f authored by Baris Sencan's avatar Baris Sencan
Browse files

Merge pull request #70 from brentvatne/fix/player-access

Fix issues that arise due to accessing _player on a queue other than main
parents 22856695 e8e3ffec
Loading
Loading
Loading
Loading
+16 −2
Changes for RCTVideo.m: 16 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -264,13 +264,13 @@ static NSString *const statusKeyPath = @"status";
  dispatch_async(dispatch_get_main_queue(), ^{
    // listen for end of file
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(playerItemDidEnd:)
                                             selector:@selector(playerItemDidReachEnd:)
                                                 name:AVPlayerItemDidPlayToEndTimeNotification
                                               object:[_player currentItem]];
  });
}

- (void)playerItemDidEnd:(NSNotification *)notification
- (void)playerItemDidReachEnd:(NSNotification *)notification
{
  [_eventDispatcher sendInputEventWithName:RNVideoEventEnd body:@{
    @"target": self.reactTag
@@ -287,17 +287,23 @@ static NSString *const statusKeyPath = @"status";
- (void)setResizeMode:(NSString*)mode
{
  _resizeMode = mode;
  dispatch_async(dispatch_get_main_queue(), ^{
    _playerLayer.videoGravity = mode;
  });
}

- (void)setPaused:(BOOL)paused
{
  if (paused) {
    [self stopProgressTimer];
    dispatch_async(dispatch_get_main_queue(), ^{
      [_player pause];
    });
  } else {
    [self startProgressTimer];
    dispatch_async(dispatch_get_main_queue(), ^{
      [_player play];
    });
  }

  _paused = paused;
@@ -317,6 +323,7 @@ static NSString *const statusKeyPath = @"status";
    CMTime tolerance = CMTimeMake(1000, timeScale);

    if (CMTimeCompare(current, cmSeekTime) != 0) {
      dispatch_async(dispatch_get_main_queue(), ^{
        [_player seekToTime:cmSeekTime toleranceBefore:tolerance toleranceAfter:tolerance completionHandler:^(BOOL finished) {
          [_eventDispatcher sendInputEventWithName:RNVideoEventSeek body:@{
            @"currentTime": [NSNumber numberWithFloat:CMTimeGetSeconds(item.currentTime)],
@@ -324,6 +331,7 @@ static NSString *const statusKeyPath = @"status";
            @"target": self.reactTag
          }];
        }];
      });

      _pendingSeek = false;
    }
@@ -357,17 +365,23 @@ static NSString *const statusKeyPath = @"status";
- (void)applyModifiers
{
  if (_muted) {
    dispatch_async(dispatch_get_main_queue(), ^{
      [_player setVolume:0];
      [_player setMuted:YES];
    });
  } else {
    dispatch_async(dispatch_get_main_queue(), ^{
      [_player setVolume:_volume];
      [_player setMuted:NO];
    });
  }

  [self setResizeMode:_resizeMode];
  [self setRepeat:_repeat];
  [self setPaused:_paused];
  dispatch_async(dispatch_get_main_queue(), ^{
    [_player setRate:_rate];
  });
}

- (void)setRepeat:(BOOL)repeat {