Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MPRemoteCommandCenter dealloc fix #2

Merged
merged 2 commits into from
Oct 11, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 24 additions & 17 deletions ios/Video/RCTVideo.m
Original file line number Diff line number Diff line change
Expand Up @@ -214,9 +214,11 @@ -(void)removePlayerTimeObserver

- (void)dealloc
{
NSLog(@"RCTVideo dealloc");
[[NSNotificationCenter defaultCenter] removeObserver:self];
[self cleanupRemoteTransportControl];
[self removePlayerLayer];
[self cleanupNowPlaying];
[self removePlayerItemObservers];
[_player removeObserver:self forKeyPath:playbackRate context:nil];
[_player removeObserver:self forKeyPath:externalPlaybackActive context: nil];
Expand Down Expand Up @@ -414,7 +416,7 @@ - (void)setSrc:(NSDictionary *)source
}

-(MPRemoteCommandHandlerStatus)toggleFromRemote:(MPRemoteCommandEvent *)event {
NSLog(@"toggleFromRemote rate:%f", _player.rate);
NSLog(@"RCTVideo toggleFromRemote rate:%f", _player.rate);

if (_player.rate == 0.0) {
[self setPaused:false];
Expand All @@ -428,7 +430,7 @@ -(MPRemoteCommandHandlerStatus)toggleFromRemote:(MPRemoteCommandEvent *)event {
}

-(MPRemoteCommandHandlerStatus)playFromRemote:(MPRemoteCommandEvent *)event {
NSLog(@"playFromRemote rate:%f", _player.rate);
NSLog(@"RCTVideo playFromRemote rate:%f", _player.rate);

if (_player.rate == 0.0) {
[self setPaused:false];
Expand All @@ -439,7 +441,7 @@ -(MPRemoteCommandHandlerStatus)playFromRemote:(MPRemoteCommandEvent *)event {
}

-(MPRemoteCommandHandlerStatus)pauseFromRemote:(MPRemoteCommandEvent *)event {
NSLog(@"pauseFromRemote rate:%f", _player.rate);
NSLog(@"RCTVideo pauseFromRemote rate:%f", _player.rate);

if (_player.rate == 1.0) {
[self setPaused:true];
Expand All @@ -450,7 +452,7 @@ -(MPRemoteCommandHandlerStatus)pauseFromRemote:(MPRemoteCommandEvent *)event {
}

-(MPRemoteCommandHandlerStatus)stopFromRemote:(MPRemoteCommandEvent *)event {
NSLog(@"stopFromRemote rate:%f", _player.rate);
NSLog(@"RCTVideo stopFromRemote rate:%f", _player.rate);

if (_player.rate == 1.0) {
[self setPaused:true];
Expand All @@ -461,7 +463,7 @@ -(MPRemoteCommandHandlerStatus)stopFromRemote:(MPRemoteCommandEvent *)event {
}

-(void)setupRemoteTransportControl {
NSLog(@"setupRemoteTransportControl");
NSLog(@"RCTVideo setupRemoteTransportControl");
MPRemoteCommandCenter *commandCenter = [MPRemoteCommandCenter sharedCommandCenter];
[[commandCenter playCommand] addTarget:self action:@selector(playFromRemote:)];
[[commandCenter pauseCommand] addTarget:self action:@selector(pauseFromRemote:)];
Expand All @@ -470,18 +472,23 @@ -(void)setupRemoteTransportControl {
}

-(void)cleanupRemoteTransportControl {
NSLog(@"cleanupRemoteTransportControl");
NSLog(@"RCTVideo cleanupRemoteTransportControl");
MPRemoteCommandCenter *commandCenter = [MPRemoteCommandCenter sharedCommandCenter];

[[commandCenter playCommand] removeTarget:self action:@selector(playFromRemote:)];
[[commandCenter pauseCommand] removeTarget:self action:@selector(pauseFromRemote:)];
[[commandCenter togglePlayPauseCommand] removeTarget:self action:@selector(playFromRemote:)];
[[commandCenter stopCommand] removeTarget:self action:@selector(stopFromRemote:)];
[[commandCenter playCommand] removeTarget:nil];
[[commandCenter pauseCommand] removeTarget:nil];
[[commandCenter togglePlayPauseCommand] removeTarget:nil];
[[commandCenter stopCommand] removeTarget:nil];
}

-(void)cleanupNowPlaying {
NSLog(@"RCTVideo cleanupNowPlaying");
MPNowPlayingInfoCenter *playingInfoCenter = [MPNowPlayingInfoCenter defaultCenter];
NSMutableDictionary *songInfo = [[NSMutableDictionary alloc] init];
[playingInfoCenter setNowPlayingInfo:songInfo];
}

- (void)setupNowPlaying {
NSLog(@"setupNowPlaying");
NSLog(@"RCTVideo setupNowPlaying");
MPNowPlayingInfoCenter *playingInfoCenter = [MPNowPlayingInfoCenter defaultCenter];

NSMutableDictionary *songInfo = [[NSMutableDictionary alloc] init];
Expand Down Expand Up @@ -825,11 +832,11 @@ - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(N

if (!CGRectEqualToRect(oldRect, newRect)) {
if (CGRectEqualToRect(newRect, [UIScreen mainScreen].bounds)) {
NSLog(@"in fullscreen");
NSLog(@"RCTVideo in fullscreen");

[self.reactViewController.view setFrame:[UIScreen mainScreen].bounds];
[self.reactViewController.view setNeedsLayout];
} else NSLog(@"not fullscreen");
} else NSLog(@"RCTVideo not fullscreen");
}

return;
Expand Down Expand Up @@ -1816,7 +1823,7 @@ - (BOOL)resourceLoader:(AVAssetResourceLoader *)resourceLoader shouldWaitForLoad

- (void)resourceLoader:(AVAssetResourceLoader *)resourceLoader
didCancelLoadingRequest:(AVAssetResourceLoadingRequest *)loadingRequest {
NSLog(@"didCancelLoadingRequest");
NSLog(@"RCTVideo didCancelLoadingRequest");
}

- (BOOL)loadingRequestHandling:(AVAssetResourceLoadingRequest *)loadingRequest {
Expand Down Expand Up @@ -1884,12 +1891,12 @@ - (BOOL)loadingRequestHandling:(AVAssetResourceLoadingRequest *)loadingRequest {
NSURLSessionDataTask *postDataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
if (error != nil) {
NSLog(@"Error getting license from %@, HTTP status code %li", url, (long)[httpResponse statusCode]);
NSLog(@"RCTVideo Error getting license from %@, HTTP status code %li", url, (long)[httpResponse statusCode]);
[self finishLoadingWithError:error];
self->_requestingCertificateErrored = YES;
} else {
if([httpResponse statusCode] != 200){
NSLog(@"Error getting license from %@, HTTP status code %li", url, (long)[httpResponse statusCode]);
NSLog(@"RCTVideo Error getting license from %@, HTTP status code %li", url, (long)[httpResponse statusCode]);
NSError *licenseError = [NSError errorWithDomain: @"RCTVideo"
code: RCTVideoErrorLicenseRequestNotOk
userInfo: @{
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "react-native-video",
"version": "5.1.0-alpha8-fs2",
"version": "5.1.0-alpha8-fs3",
"description": "A <Video /> element for react-native",
"main": "Video.js",
"license": "MIT",
Expand Down