Commit 1cd23817 authored by Jean-Paul Saman's avatar Jean-Paul Saman

safari: fix crash on exit after going fullscreen in webbrowser plugin.

parent 037a2d7f
...@@ -203,7 +203,11 @@ void CloseVideoGL ( vlc_object_t * p_this ) ...@@ -203,7 +203,11 @@ void CloseVideoGL ( vlc_object_t * p_this )
if( p_vout->p_sys->b_embedded ) if( p_vout->p_sys->b_embedded )
{ {
aglDestroyContext(p_vout->p_sys->agl_ctx); if( p_vout->p_sys->agl_ctx )
{
aglEnd( p_vout );
aglDestroyContext(p_vout->p_sys->agl_ctx);
}
} }
else if(VLCIntf && vlc_object_alive (VLCIntf)) else if(VLCIntf && vlc_object_alive (VLCIntf))
{ {
...@@ -526,7 +530,11 @@ static int aglInit( vout_thread_t * p_vout ) ...@@ -526,7 +530,11 @@ static int aglInit( vout_thread_t * p_vout )
static void aglEnd( vout_thread_t * p_vout ) static void aglEnd( vout_thread_t * p_vout )
{ {
aglSetCurrentContext(NULL); aglSetCurrentContext(NULL);
if( p_vout->p_sys->theWindow ) DisposeWindow( p_vout->p_sys->theWindow ); if( p_vout->p_sys->theWindow )
{
DisposeWindow( p_vout->p_sys->theWindow );
p_vout->p_sys->theWindow = NULL;
}
} }
static void aglReshape( vout_thread_t * p_vout ) static void aglReshape( vout_thread_t * p_vout )
...@@ -623,11 +631,17 @@ static int aglManage( vout_thread_t * p_vout ) ...@@ -623,11 +631,17 @@ static int aglManage( vout_thread_t * p_vout )
aglSetCurrentContext(p_vout->p_sys->agl_ctx); aglSetCurrentContext(p_vout->p_sys->agl_ctx);
aglSetViewport(p_vout, viewBounds, clipBounds); aglSetViewport(p_vout, viewBounds, clipBounds);
/* Most Carbon APIs are not thread-safe, therefore delagate some GUI visibilty update to the main thread */ if( p_vout->p_sys->theWindow )
sendEventToMainThread(GetWindowEventTarget(p_vout->p_sys->theWindow), kEventClassVLCPlugin, kEventVLCPluginHideFullscreen); {
/* Most Carbon APIs are not thread-safe, therefore delagate some GUI visibilty
* update to the main thread */
sendEventToMainThread(GetWindowEventTarget(p_vout->p_sys->theWindow),
kEventClassVLCPlugin, kEventVLCPluginHideFullscreen);
}
} }
else else
{ {
/* Go into fullscreen */
Rect deviceRect; Rect deviceRect;
GDHandle deviceHdl = GetMainDevice(); GDHandle deviceHdl = GetMainDevice();
...@@ -685,8 +699,13 @@ static int aglManage( vout_thread_t * p_vout ) ...@@ -685,8 +699,13 @@ static int aglManage( vout_thread_t * p_vout )
aglSetViewport(p_vout, deviceRect, deviceRect); aglSetViewport(p_vout, deviceRect, deviceRect);
//aglSetFullScreen(p_vout->p_sys->agl_ctx, device_width, device_height, 0, 0); //aglSetFullScreen(p_vout->p_sys->agl_ctx, device_width, device_height, 0, 0);
/* Most Carbon APIs are not thread-safe, therefore delagate some GUI visibilty update to the main thread */ if( p_vout->p_sys->theWindow )
sendEventToMainThread(GetWindowEventTarget(p_vout->p_sys->theWindow), kEventClassVLCPlugin, kEventVLCPluginShowFullscreen); {
/* Most Carbon APIs are not thread-safe, therefore delagate some GUI visibilty
* update to the main thread */
sendEventToMainThread(GetWindowEventTarget(p_vout->p_sys->theWindow),
kEventClassVLCPlugin, kEventVLCPluginShowFullscreen);
}
} }
aglReshape(p_vout); aglReshape(p_vout);
aglUnlock( p_vout ); aglUnlock( p_vout );
......
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