Bladeren bron

fix MediaObserver

Marino Faggiana 6 jaren geleden
bovenliggende
commit
5efe7f20e2
1 gewijzigde bestanden met toevoegingen van 16 en 0 verwijderingen
  1. 16 0
      iOSClient/Main/CCDetail.m

+ 16 - 0
iOSClient/Main/CCDetail.m

@@ -50,6 +50,7 @@
     
     NSURL *videoURLProxy;
     NSURL *videoURL;
+    BOOL isMediaObserver;
 }
 @end
 
@@ -130,6 +131,13 @@
     if (appDelegate.player != nil && appDelegate.player.rate != 0) {
         [appDelegate.player pause];
     }
+    
+    // remove Observer AVPlayer
+    if (isMediaObserver) {
+        isMediaObserver = NO;
+        [appDelegate.player removeObserver:self forKeyPath:@"rate" context:nil];
+        [[NSNotificationCenter defaultCenter] removeObserver:self name:AVPlayerItemDidPlayToEndTimeNotification object:[appDelegate.player currentItem]];
+    }
 }
 
 - (void)changeTheming
@@ -165,6 +173,13 @@
         [CCGraphics createNewImageFrom:self.metadataDetail.fileNameView fileID:self.metadataDetail.fileID extension:[self.metadataDetail.fileNameView pathExtension] size:@"m" imageForUpload:NO typeFile:self.metadataDetail.typeFile writeImage:YES];
     }
     
+    // remove Observer AVPlayer
+    if (isMediaObserver) {
+        isMediaObserver = NO;
+        [appDelegate.player removeObserver:self forKeyPath:@"rate" context:nil];
+        [[NSNotificationCenter defaultCenter] removeObserver:self name:AVPlayerItemDidPlayToEndTimeNotification object:[appDelegate.player currentItem]];
+    }
+    
     // IMAGE
     if ([self.metadataDetail.typeFile isEqualToString: k_metadataTypeFile_image]) {
         
@@ -371,6 +386,7 @@
     
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(itemDidFinishPlaying:) name:AVPlayerItemDidPlayToEndTimeNotification object:[appDelegate.player currentItem]];
     [appDelegate.player addObserver:self forKeyPath:@"rate" options:0 context:nil];
+    isMediaObserver = YES;
 
     [appDelegate.player play];
 }