X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fmacosx%2Fvoutgl.m;h=428a557431e85bb1ab6f9446f40364e3c13455e2;hb=aa6fd556ea5c42b8791c8fc4b82f5aaafa6f3f55;hp=f574e6590da663f853e1aa2d2c2950d1ca5fd0d8;hpb=59a4f0b96cc16f874d625ea60740a4b8b9ff94bd;p=vlc diff --git a/modules/gui/macosx/voutgl.m b/modules/gui/macosx/voutgl.m index f574e6590d..428a557431 100644 --- a/modules/gui/macosx/voutgl.m +++ b/modules/gui/macosx/voutgl.m @@ -1,7 +1,7 @@ /***************************************************************************** * voutgl.m: MacOS X OpenGL provider ***************************************************************************** - * Copyright (C) 2001-2004 the VideoLAN team + * Copyright (C) 2001-2004, 2007 the VideoLAN team * $Id$ * * Authors: Colin Delacroix @@ -52,7 +52,7 @@ vout_thread_t * p_vout; } -+ (void)resetVout: (vout_thread_t *)p_vout; ++ (void)resetVout: (NSValue *) voutValue; - (id) initWithVout: (vout_thread_t *) p_vout; @end @@ -61,18 +61,18 @@ struct vout_sys_t NSAutoreleasePool * o_pool; VLCGLView * o_glview; VLCVoutView * o_vout_view; - vlc_bool_t b_saved_frame; + bool b_saved_frame; NSRect s_frame; - vlc_bool_t b_got_frame; + bool b_got_frame; /* Mozilla plugin-related variables */ - vlc_bool_t b_embedded; + bool b_embedded; AGLContext agl_ctx; AGLDrawable agl_drawable; int i_offx, i_offy; int i_width, i_height; WindowRef theWindow; WindowGroupRef winGroup; - vlc_bool_t b_clipped_out; + bool b_clipped_out; Rect clipBounds, viewBounds; }; @@ -96,7 +96,7 @@ static void aglSwap ( vout_thread_t * p_vout ); static int aglLock ( vout_thread_t * p_vout ); static void aglUnlock ( vout_thread_t * p_vout ); -int E_(OpenVideoGL) ( vlc_object_t * p_this ) +int OpenVideoGL ( vlc_object_t * p_this ) { vout_thread_t * p_vout = (vout_thread_t *) p_this; vlc_value_t value_drawable; @@ -136,7 +136,7 @@ int E_(OpenVideoGL) ( vlc_object_t * p_this ) AGLPixelFormat pixFormat; - p_vout->p_sys->b_embedded = VLC_TRUE; + p_vout->p_sys->b_embedded = true; pixFormat = aglChoosePixelFormat(NULL, 0, ATTRIBUTES); if( NULL == pixFormat ) @@ -171,7 +171,7 @@ int E_(OpenVideoGL) ( vlc_object_t * p_this ) { NSAutoreleasePool *o_pool = [[NSAutoreleasePool alloc] init]; - p_vout->p_sys->b_embedded = VLC_FALSE; + p_vout->p_sys->b_embedded = false; [VLCGLView performSelectorOnMainThread:@selector(initVout:) withObject:[NSValue valueWithPointer:p_vout] waitUntilDone:YES]; @@ -192,19 +192,22 @@ int E_(OpenVideoGL) ( vlc_object_t * p_this ) p_vout->pf_lock = Lock; p_vout->pf_unlock = Unlock; } - p_vout->p_sys->b_got_frame = VLC_FALSE; + p_vout->p_sys->b_got_frame = false; return VLC_SUCCESS; } -void E_(CloseVideoGL) ( vlc_object_t * p_this ) +void CloseVideoGL ( vlc_object_t * p_this ) { vout_thread_t * p_vout = (vout_thread_t *) p_this; + + msg_Dbg( p_this, "Closing" ); + if( p_vout->p_sys->b_embedded ) { aglDestroyContext(p_vout->p_sys->agl_ctx); } - else if(!VLCIntf->b_die) + else if(VLCIntf && vlc_object_alive (VLCIntf)) { NSAutoreleasePool *o_pool = [[NSAutoreleasePool alloc] init]; @@ -266,12 +269,12 @@ static int Manage( vout_thread_t * p_vout ) *****************************************************************************/ static int Control( vout_thread_t *p_vout, int i_query, va_list args ) { - vlc_bool_t b_arg; + bool b_arg; switch( i_query ) { case VOUT_SET_STAY_ON_TOP: - b_arg = va_arg( args, vlc_bool_t ); + b_arg = (bool) va_arg( args, int ); [p_vout->p_sys->o_vout_view setOnTop: b_arg]; return VLC_SUCCESS; @@ -284,7 +287,7 @@ static int Control( vout_thread_t *p_vout, int i_query, va_list args ) static void Swap( vout_thread_t * p_vout ) { - p_vout->p_sys->b_got_frame = VLC_TRUE; + p_vout->p_sys->b_got_frame = true; [[p_vout->p_sys->o_glview openGLContext] flushBuffer]; } @@ -321,10 +324,9 @@ static void Unlock( vout_thread_t * p_vout ) } /* This function will reset the o_vout_view. It's useful to go fullscreen. */ -+ (void)resetVout:(NSData *)arg ++ (void)resetVout:(NSValue *) voutValue { - vout_thread_t * p_vout = [arg pointerValue]; - + vout_thread_t * p_vout = [voutValue pointerValue]; if( p_vout->b_fullscreen ) { /* Save window size and position */ @@ -332,7 +334,7 @@ static void Unlock( vout_thread_t * p_vout ) [p_vout->p_sys->o_vout_view frame].size; p_vout->p_sys->s_frame.origin = [[p_vout->p_sys->o_vout_view getWindow ]frame].origin; - p_vout->p_sys->b_saved_frame = VLC_TRUE; + p_vout->p_sys->b_saved_frame = true; } [p_vout->p_sys->o_vout_view closeVout]; @@ -397,12 +399,16 @@ static void Unlock( vout_thread_t * p_vout ) /* Swap buffers only during the vertical retrace of the monitor. http://developer.apple.com/documentation/GraphicsImaging/ Conceptual/OpenGL/chap5/chapter_5_section_44.html */ - long params[] = { 1 }; - CGLSetParameter( CGLGetCurrentContext(), kCGLCPSwapInterval, - params ); + GLint params[] = { 1 }; + CGLSetParameter( CGLGetCurrentContext(), kCGLCPSwapInterval, params ); return self; } +- (BOOL)mouseDownCanMoveWindow +{ + return YES; +} + - (void) reshape { int x, y; @@ -793,7 +799,7 @@ static void aglSwap( vout_thread_t * p_vout ) { if( ! p_vout->p_sys->b_clipped_out ) { - p_vout->p_sys->b_got_frame = VLC_TRUE; + p_vout->p_sys->b_got_frame = true; aglSwapBuffers(p_vout->p_sys->agl_ctx); } else @@ -941,14 +947,14 @@ static pascal OSStatus WindowEventHandler(EventHandlerCallRef nextHandler, Event { vlc_value_t val; - val.b_bool = VLC_FALSE; + val.b_bool = false; var_Set((vout_thread_t *) p_vout->p_parent, "fullscreen", val); } else { vlc_value_t val; - val.b_bool = VLC_TRUE; + val.b_bool = true; var_Set( p_vout, "mouse-clicked", val ); var_Get( p_vout, "mouse-button-down", &val ); @@ -1003,7 +1009,7 @@ static pascal OSStatus WindowEventHandler(EventHandlerCallRef nextHandler, Event var_Set( p_vout, "mouse-y", val ); - val.b_bool = VLC_TRUE; + val.b_bool = true; var_Set( p_vout, "mouse-moved", val ); break; @@ -1049,15 +1055,7 @@ static pascal OSStatus WindowEventHandler(EventHandlerCallRef nextHandler, Event static int aglLock( vout_thread_t * p_vout ) { -#ifdef __ppc__ - /* - * before 10.4, we set the AGL context as current and - * then we retrieve and use the matching CGL context - */ - aglSetCurrentContext(p_vout->p_sys->agl_ctx); - return kCGLNoError != CGLLockContext( CGLGetCurrentContext() ); -#else - /* since 10.4, this is the safe way to get the underlying CGL context */ + /* get the underlying CGL context */ CGLContextObj cglContext; if( aglGetCGLContext(p_vout->p_sys->agl_ctx, (void**)&cglContext) ) { @@ -1068,25 +1066,16 @@ static int aglLock( vout_thread_t * p_vout ) } } return 1; -#endif } static void aglUnlock( vout_thread_t * p_vout ) { -#ifdef __ppc__ - /* - * before 10.4, we assume that the AGL context is current. - * therefore, we use the current CGL context - */ - CGLUnlockContext( CGLGetCurrentContext() ); -#else - /* since 10.4, this is the safe way to get the underlying CGL context */ + /* get the underlying CGL context */ CGLContextObj cglContext; if( aglGetCGLContext(p_vout->p_sys->agl_ctx, (void**)&cglContext) ) { CGLUnlockContext( cglContext ); } -#endif }