marinofaggiana 4 years ago
parent
commit
ba171d6769

+ 2 - 0
iOSClient/AppDelegate.h

@@ -46,6 +46,7 @@
 @class NCNetworkingAutoUpload;
 @class NCDocumentPickerViewController;
 @class FileProviderDomain;
+@class NCViewerVideo;
 
 @interface AppDelegate : UIResponder <UIApplicationDelegate, UNUserNotificationCenterDelegate>
 
@@ -94,6 +95,7 @@
 @property (nonatomic, retain) NCTrash *activeTrash;
 @property (nonatomic, retain) NCAppConfigView *appConfigView;
 @property (nonatomic, retain) IMImagemeterViewer *activeImagemeterView;
+@property (nonatomic, retain) NCViewerVideo *activeViewerVideo;
 
 @property (nonatomic, strong) NSMutableDictionary *listFilesVC;
 @property (nonatomic, strong) NSMutableDictionary *listFavoriteVC;

+ 16 - 10
iOSClient/Viewer/NCViewerImage/NCViewerImage.swift

@@ -55,9 +55,7 @@ class NCViewerImage: UIViewController {
     var defaultImageViewTopConstraint: CGFloat = 0
     var defaultImageViewBottomConstraint: CGFloat = 0
     
-    weak var currentViewerImageZoom: NCViewerImageZoom?
-    weak var currentViewerVideo: NCViewerVideo?
-    
+    var currentViewerImageZoom: NCViewerImageZoom?
     var panGestureRecognizer: UIPanGestureRecognizer!
     var singleTapGestureRecognizer: UITapGestureRecognizer!
     var longtapGestureRecognizer: UILongPressGestureRecognizer!
@@ -645,11 +643,15 @@ extension NCViewerImage: UIGestureRecognizerDelegate {
             videoStop()
             
             if pictureInPictureOcId != currentMetadata.ocId {
-                currentViewerVideo = NCViewerVideo()
-                currentViewerVideo?.metadata = currentMetadata
-                currentViewerVideo?.seekTime = player?.currentTime()
-                currentViewerVideo?.delegateViewerVideo = self
-                if let currentViewerVideo = self.currentViewerVideo {
+                
+                // Kill PIP
+                appDelegate.activeViewerVideo?.player?.replaceCurrentItem(with: nil)
+
+                appDelegate.activeViewerVideo = NCViewerVideo()
+                appDelegate.activeViewerVideo?.metadata = currentMetadata
+                appDelegate.activeViewerVideo?.seekTime = player?.currentTime()
+                appDelegate.activeViewerVideo?.delegateViewerVideo = self
+                if let currentViewerVideo = appDelegate.activeViewerVideo {
                     present(currentViewerVideo, animated: false) { }
                 }
             }
@@ -731,12 +733,16 @@ extension NCViewerImage: NCViewerVideoDelegate {
     
     func startPictureInPicture(metadata: tableMetadata) {
         pictureInPictureOcId = metadata.ocId
-        reloadCurrentPage()
+        if metadata.ocId == currentMetadata.ocId {
+            reloadCurrentPage()
+        }
     }
     
     func stopPictureInPicture(metadata: tableMetadata) {
         pictureInPictureOcId = ""
-        reloadCurrentPage()
+        if metadata.ocId == currentMetadata.ocId {
+            reloadCurrentPage()
+        }
     }
     
     func playerCurrentTime(_ time: CMTime?) {

+ 1 - 4
iOSClient/Viewer/NCViewerVideo/NCViewerVideo.swift

@@ -29,16 +29,13 @@ protocol NCViewerVideoDelegate {
     func playerCurrentTime(_ time: CMTime?)
 }
 
-class NCViewerVideo: AVPlayerViewController {
+@objc class NCViewerVideo: AVPlayerViewController {
     
     let appDelegate = UIApplication.shared.delegate as! AppDelegate
     var metadata = tableMetadata()
     var seekTime: CMTime?
     var pictureInPicture: Bool = false
-    
-   // weak var delegateViewerImage: NCViewerImage?
     var delegateViewerVideo: NCViewerVideoDelegate?
-    
     private var rateObserverToken: Any?
 
     override func viewDidLoad() {