vlc | branch: master | David Fuhrmann <[email protected]> | Mon Jan 27 16:09:09 2014 +0100| [3fbb103ab60aa88161414975e9140b68dfd695b9] | committer: David Fuhrmann
coregraphicslayer: fix memleak and avoid unnecessary image copy > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=3fbb103ab60aa88161414975e9140b68dfd695b9 --- modules/video_output/coregraphicslayer.m | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/modules/video_output/coregraphicslayer.m b/modules/video_output/coregraphicslayer.m index 824e806..b36b372 100644 --- a/modules/video_output/coregraphicslayer.m +++ b/modules/video_output/coregraphicslayer.m @@ -255,6 +255,7 @@ static void Display(vout_display_t *vd, picture_t *picture, subpicture_t *subpic kCGRenderingIntentPerceptual); CGDataProviderRelease(dataProvider); + CFRelease(dataRef); if (!newFrame) goto end; @@ -289,6 +290,14 @@ static int Control(vout_display_t *vd, int query, va_list args) return self; } +- (void) dealloc +{ + if (_lastFrame) + CGImageRelease(_lastFrame); + + [super dealloc]; +} + - (bool)locked { return lock; @@ -302,8 +311,10 @@ static int Control(vout_display_t *vd, int query, va_list args) return; } - _lastFrame = CGImageCreateCopy(lastFrame); - CGImageRelease(lastFrame); + if (_lastFrame) + CGImageRelease(_lastFrame); + + _lastFrame = lastFrame; CGRect invalidRect = CGRectMake(0, 0, CGImageGetWidth(_lastFrame), CGImageGetHeight(_lastFrame)); [CATransaction begin]; [self setNeedsDisplayInRect:invalidRect]; _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
