diff --git a/packages/video_player/CHANGELOG.md b/packages/video_player/CHANGELOG.md index d96ebfecb839..207a9ca272ce 100644 --- a/packages/video_player/CHANGELOG.md +++ b/packages/video_player/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.10.1+6 + +* [iOS] Fixed a memory leak with notification observing. + ## 0.10.1+5 * Fix race condition while disposing the VideoController. diff --git a/packages/video_player/ios/Classes/VideoPlayerPlugin.m b/packages/video_player/ios/Classes/VideoPlayerPlugin.m index 4aea59f34e8b..bf449ec0e8e2 100644 --- a/packages/video_player/ios/Classes/VideoPlayerPlugin.m +++ b/packages/video_player/ios/Classes/VideoPlayerPlugin.m @@ -82,20 +82,22 @@ - (void)addObservers:(AVPlayerItem*)item { options:NSKeyValueObservingOptionInitial | NSKeyValueObservingOptionNew context:playbackBufferFullContext]; - [[NSNotificationCenter defaultCenter] addObserverForName:AVPlayerItemDidPlayToEndTimeNotification - object:[_player currentItem] - queue:[NSOperationQueue mainQueue] - usingBlock:^(NSNotification* note) { - if (self->_isLooping) { - AVPlayerItem* p = [note object]; - [p seekToTime:kCMTimeZero - completionHandler:nil]; - } else { - if (self->_eventSink) { - self->_eventSink(@{@"event" : @"completed"}); - } - } - }]; + // Add an observer that will respond to itemDidPlayToEndTime + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(itemDidPlayToEndTime:) + name:AVPlayerItemDidPlayToEndTimeNotification + object:item]; +} + +- (void)itemDidPlayToEndTime:(NSNotification*)notification { + if (_isLooping) { + AVPlayerItem* p = [notification object]; + [p seekToTime:kCMTimeZero completionHandler:nil]; + } else { + if (_eventSink) { + _eventSink(@{@"event" : @"completed"}); + } + } } static inline CGFloat radiansToDegrees(CGFloat radians) { diff --git a/packages/video_player/pubspec.yaml b/packages/video_player/pubspec.yaml index bbb2dcda02ef..218c50f64349 100644 --- a/packages/video_player/pubspec.yaml +++ b/packages/video_player/pubspec.yaml @@ -2,7 +2,7 @@ name: video_player description: Flutter plugin for displaying inline video with other Flutter widgets on Android and iOS. author: Flutter Team -version: 0.10.1+5 +version: 0.10.1+6 homepage: https://github.com/flutter/plugins/tree/master/packages/video_player flutter: