Commit 0c30240f authored by Pierre d'Herbemont's avatar Pierre d'Herbemont

minimal_macosx: Make sure we actually kill the vout at some point.

parent ac1ec6ec
...@@ -80,6 +80,9 @@ void cocoaglvoutviewEnd( vout_thread_t * p_vout ) ...@@ -80,6 +80,9 @@ void cocoaglvoutviewEnd( vout_thread_t * p_vout )
{ {
id <VLCOpenGLVoutEmbedding> o_cocoaglview_container; id <VLCOpenGLVoutEmbedding> o_cocoaglview_container;
if (!p_vout->p_sys->o_glview)
return;
msg_Dbg( p_vout, "Mac OS X Vout is closing" ); msg_Dbg( p_vout, "Mac OS X Vout is closing" );
var_Destroy( p_vout, "drawable-nsobject" ); var_Destroy( p_vout, "drawable-nsobject" );
...@@ -89,15 +92,15 @@ void cocoaglvoutviewEnd( vout_thread_t * p_vout ) ...@@ -89,15 +92,15 @@ void cocoaglvoutviewEnd( vout_thread_t * p_vout )
[p_vout->p_sys->o_glview detachFromVout]; [p_vout->p_sys->o_glview detachFromVout];
msg_Dbg( p_vout, "Mac OS X Vout is closing" ); msg_Dbg( p_vout, "Mac OS X Vout is closing" );
/* Let the view go, _without_blocking_ */
[p_vout->p_sys->o_glview performSelectorOnMainThread:@selector(removeFromSuperview) withObject:NULL waitUntilDone:NO];
if( [(id)o_cocoaglview_container respondsToSelector:@selector(removeVoutSubview:)] ) if( [(id)o_cocoaglview_container respondsToSelector:@selector(removeVoutSubview:)] )
[o_cocoaglview_container removeVoutSubview: p_vout->p_sys->o_glview]; [o_cocoaglview_container performSelectorOnMainThread:@selector(removeVoutSubview:) withObject:p_vout->p_sys->o_glview waitUntilDone:NO];
[p_vout->p_sys->o_glview release]; /* Let the view go and release it, _without_blocking_ */
[p_vout->p_sys->o_glview performSelectorOnMainThread:@selector(removeFromSuperviewAndRelease) withObject:nil waitUntilDone:NO];
p_vout->p_sys->o_glview = nil;
[p_vout->p_sys->o_pool release]; [p_vout->p_sys->o_pool release];
p_vout->p_sys->o_pool = nil;
} }
...@@ -219,12 +222,12 @@ void cocoaglvoutviewUnlock( vout_thread_t * p_vout ) ...@@ -219,12 +222,12 @@ void cocoaglvoutviewUnlock( vout_thread_t * p_vout )
[super dealloc]; [super dealloc];
} }
- (void)removeFromSuperview - (void)removeFromSuperviewAndRelease
{ {
[super removeFromSuperview]; [self removeFromSuperview];
[self release];
} }
- (id) initWithVout: (vout_thread_t *) vout container: (id <VLCOpenGLVoutEmbedding>) aContainer - (id) initWithVout: (vout_thread_t *) vout container: (id <VLCOpenGLVoutEmbedding>) aContainer
{ {
NSOpenGLPixelFormatAttribute attribs[] = NSOpenGLPixelFormatAttribute attribs[] =
......
...@@ -98,6 +98,7 @@ int OpenVideoGL ( vlc_object_t * p_this ) ...@@ -98,6 +98,7 @@ int OpenVideoGL ( vlc_object_t * p_this )
void CloseVideoGL ( vlc_object_t * p_this ) void CloseVideoGL ( vlc_object_t * p_this )
{ {
vout_thread_t * p_vout = (vout_thread_t *) p_this; vout_thread_t * p_vout = (vout_thread_t *) p_this;
cocoaglvoutviewEnd( p_vout );
/* Clean up */ /* Clean up */
free( p_vout->p_sys ); free( p_vout->p_sys );
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment