From 55396ee554aeb1fea844eaabd0b5c7a244143306 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Mon, 27 Oct 2014 19:10:52 +0100 Subject: libmpv: cocoa: fix view leak on uninit The code was lacking a -removeFromSuperview call which resulted in a leak on our part if the parent view in the client was not released. --- video/out/cocoa_common.m | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'video') diff --git a/video/out/cocoa_common.m b/video/out/cocoa_common.m index dde727f5de..19968de8ff 100644 --- a/video/out/cocoa_common.m +++ b/video/out/cocoa_common.m @@ -192,9 +192,9 @@ void vo_cocoa_uninit(struct vo *vo) enable_power_management(vo); cocoa_rm_fs_screen_profile_observer(vo); - [s->video release]; - [s->view release]; - [s->window release]; + [s->gl_ctx release]; + [s->view removeFromSuperview]; + if (s->window) [s->window release]; }); } @@ -310,7 +310,7 @@ static void create_ui(struct vo *vo, struct mp_rect *win, int geo_flags) struct vo_cocoa_state *s = vo->cocoa; struct mp_vo_opts *opts = vo->opts; - MpvCocoaAdapter *adapter = [[[MpvCocoaAdapter alloc] init] autorelease]; + MpvCocoaAdapter *adapter = [[MpvCocoaAdapter alloc] init]; adapter.vout = vo; NSView *parent; @@ -327,6 +327,7 @@ static void create_ui(struct vo *vo, struct mp_rect *win, int geo_flags) view.adapter = adapter; s->view = view; [parent addSubview:s->view]; + [s->view release]; // insert ourselves as the next key view so that clients can give key // focus to the mpv view by calling -[NSWindow selectNextKeyView:] @@ -345,6 +346,7 @@ static void create_ui(struct vo *vo, struct mp_rect *win, int geo_flags) [s->view addSubview:s->video]; [s->gl_ctx setView:s->video]; + [s->video release]; s->video.adapter = adapter; -- cgit v1.2.3