Skip to content

Commit 83c8ace

Browse files
author
Shahen Hovhannisyan
committed
fix(VideoPlayer): Memory leak
Fixed some memory leaks when component unmounted but player keeps playing, and GPU keeps rendering the filters
1 parent 7f1ac9a commit 83c8ace

1 file changed

Lines changed: 16 additions & 11 deletions

File tree

ios/RNVideoPlayer.swift

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -51,17 +51,6 @@ class RNVideoPlayer: RCTView {
5151
fatalError("init(coder:) has not been implemented")
5252
}
5353

54-
deinit {
55-
if self.playerCurrentTimeObserver != nil {
56-
self.player.removeTimeObserver(self.playerCurrentTimeObserver)
57-
self.player.pause()
58-
self.gpuMovie.cancelProcessing()
59-
self.player = nil
60-
self.gpuMovie = nil
61-
print("CHANGED: Removing Oberver, that can be a cause of memory leak")
62-
}
63-
}
64-
6554
// props
6655
var playerHeight: NSNumber? {
6756
set(val) {
@@ -264,6 +253,7 @@ class RNVideoPlayer: RCTView {
264253
print("CHANGED playerEndTime \(self._playerEndTime)")
265254
}
266255

256+
267257
gpuMovie = GPUImageMovie(playerItem: playerItem)
268258
// gpuMovie.runBenchmark = true
269259
gpuMovie.playAtActualSpeed = true
@@ -275,11 +265,26 @@ class RNVideoPlayer: RCTView {
275265

276266
gpuMovie.addTarget(self.filterView)
277267
self.addSubview(filterView)
268+
print("SUBS: \(self.subviews)")
278269
gpuMovie.playAtActualSpeed = true
279270

280271
self.createPlayerObservers()
281272
}
282273

274+
override func willMove(toSuperview newSuperview: UIView?) {
275+
super.willMove(toSuperview: newSuperview)
276+
if newSuperview == nil {
277+
278+
if self.playerCurrentTimeObserver != nil {
279+
self.player.removeTimeObserver(self.playerCurrentTimeObserver)
280+
}
281+
self.player.pause()
282+
self.gpuMovie.cancelProcessing()
283+
self.player = nil
284+
self.gpuMovie = nil
285+
print("CHANGED: Removing Oberver, that can be a cause of memory leak")
286+
}
287+
}
283288
/* @TODO: create Preview images before the next Release
284289
func createPhantomGPUView() {
285290
phantomGpuMovie = GPUImageMovie(playerItem: self.playerItem)

0 commit comments

Comments
 (0)