fix: iOS OOM during PiP playback cycles
Cancel leaked stream subscriptions in video player dispose and flush sample buffer layer on PiP teardown/cleanup to release video frames.
This commit is contained in:
@@ -245,10 +245,17 @@ class MpvPipController: NSObject {
|
||||
}
|
||||
pipController = nil
|
||||
delegateHelper = nil
|
||||
sampleBufferLayer.flushAndRemoveImage()
|
||||
sampleBufferLayer.controlTimebase = nil
|
||||
sampleBufferLayer.removeFromSuperlayer()
|
||||
containerView?.removeFromSuperview()
|
||||
containerView = nil
|
||||
}
|
||||
|
||||
/// Flush enqueued sample buffers from the layer to free video frame memory
|
||||
func flushLayer() {
|
||||
sampleBufferLayer.flushAndRemoveImage()
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - PiP Delegate Helper (iOS 15+)
|
||||
|
||||
@@ -171,6 +171,7 @@ class MpvPlayerPlugin: NSObject, FlutterPlugin, FlutterStreamHandler, MpvPlayerD
|
||||
playerCore?.isPipActive = false
|
||||
isManualPipRequest = false
|
||||
stopPipTimebaseSync()
|
||||
pipController?.flushLayer()
|
||||
_ = playerCore?.switchToGpuNextVO()
|
||||
if pause { playerCore?.setProperty("pause", value: "yes") }
|
||||
if notify { pipChannel?.invokeMethod("onPipChanged", arguments: false) }
|
||||
|
||||
Reference in New Issue
Block a user