[vlc-devel] [PATCH] vlc: Updated and reactivated minimal_macosx gui module, which is needed by the npapi browser plugin on OS X (was Re: [PATCH] vlc: minimal_macosx fix)
James Bates
james.h.bates at gmail.com
Mon Oct 8 17:07:22 CEST 2012
Subject: [PATCH] Updated and reactivated minimal_macosx gui module, which is
needed by the npapi browser plugin on OS X
---
modules/gui/Modules.am | 2 +-
modules/gui/minimal_macosx/Modules.am | 2 -
modules/gui/minimal_macosx/VLCOpenGLVoutView.h | 21 +-
modules/gui/minimal_macosx/VLCOpenGLVoutView.m | 270 ++--------
modules/gui/minimal_macosx/intf.m | 5 +-
modules/gui/minimal_macosx/macosx.c | 16 +-
modules/gui/minimal_macosx/voutagl.h | 43 --
modules/gui/minimal_macosx/voutagl.m | 672 ------------------------
modules/gui/minimal_macosx/voutgl.h | 11 +-
modules/gui/minimal_macosx/voutgl.m | 80 +--
10 files changed, 85 insertions(+), 1037 deletions(-)
delete mode 100644 modules/gui/minimal_macosx/voutagl.h
delete mode 100644 modules/gui/minimal_macosx/voutagl.m
diff --git a/modules/gui/Modules.am b/modules/gui/Modules.am
index 3f9ec39..8979bca 100644
--- a/modules/gui/Modules.am
+++ b/modules/gui/Modules.am
@@ -2,7 +2,7 @@ DIST_SUBDIRS = macosx minimal_macosx qt4 skins2 macosx_dialog_provider
SUBDIRS =
if HAVE_DARWIN
-SUBDIRS += macosx macosx_dialog_provider
+SUBDIRS += macosx macosx_dialog_provider minimal_macosx
endif
if ENABLE_QT4
SUBDIRS += qt4
diff --git a/modules/gui/minimal_macosx/Modules.am b/modules/gui/minimal_macosx/Modules.am
index cf22105..cf3b0ec 100644
--- a/modules/gui/minimal_macosx/Modules.am
+++ b/modules/gui/minimal_macosx/Modules.am
@@ -9,12 +9,10 @@ SOURCES_minimal_macosx = \
VLCMinimalVoutWindow.m \
VLCOpenGLVoutView.m \
voutgl.m \
- voutagl.m \
$(NULL)
noinst_HEADERS = \
intf.h \
VLCMinimalVoutWindow.h \
VLCOpenGLVoutView.h \
- voutagl.h \
voutgl.h
diff --git a/modules/gui/minimal_macosx/VLCOpenGLVoutView.h b/modules/gui/minimal_macosx/VLCOpenGLVoutView.h
index 3045843..7c9a85d 100644
--- a/modules/gui/minimal_macosx/VLCOpenGLVoutView.h
+++ b/modules/gui/minimal_macosx/VLCOpenGLVoutView.h
@@ -33,15 +33,11 @@
#include <OpenGL/gl.h>
#include <vlc_common.h>
+#include <vlc_vout_window.h>
/* Entry point */
-int cocoaglvoutviewInit( vout_thread_t * p_vout );
-void cocoaglvoutviewEnd( vout_thread_t * p_vout );
-int cocoaglvoutviewManage( vout_thread_t * p_vout );
-int cocoaglvoutviewControl( vout_thread_t *p_vout, int i_query, va_list args );
-void cocoaglvoutviewSwap( vout_thread_t * p_vout );
-int cocoaglvoutviewLock( vout_thread_t * p_vout );
-void cocoaglvoutviewUnlock( vout_thread_t * p_vout );
+int cocoaglvoutviewInit( vout_window_t * p_vout, const vout_window_cfg_t *cfg );
+void cocoaglvoutviewEnd( vout_window_t * p_vout );
/* To commmunicate with the VLC.framework */
@protocol VLCOpenGLVoutEmbedding <NSObject>
@@ -57,23 +53,20 @@ void cocoaglvoutviewUnlock( vout_thread_t * p_vout );
@end
/* VLCOpenGLVoutView */
- at interface VLCOpenGLVoutView : NSOpenGLView
+ at interface VLCOpenGLVoutView : NSView
{
id <VLCOpenGLVoutEmbedding> container;
- vout_thread_t * p_vout;
+ vout_window_t * p_wnd;
NSLock * objectLock;
}
/* Init a new gl view and register it to both the framework and the
* vout_thread_t. Must be called from main thread */
+ (void) autoinitOpenGLVoutViewIntVoutWithContainer: (NSData *) args;
-- (id) initWithVout: (vout_thread_t *) vout container: (id <VLCOpenGLVoutEmbedding>) container;
+- (id) initWithVoutWindow: (vout_window_t *) p_wnd container: (id <VLCOpenGLVoutEmbedding>) container;
-- (void) detachFromVout;
+- (void) detachFromVoutWindow;
- (id <VLCOpenGLVoutEmbedding>) container;
-- (void) reshape;
-- (void) update;
-- (void) drawRect: (NSRect) rect;
@end
diff --git a/modules/gui/minimal_macosx/VLCOpenGLVoutView.m b/modules/gui/minimal_macosx/VLCOpenGLVoutView.m
index 4fa69c1..ef5f264 100644
--- a/modules/gui/minimal_macosx/VLCOpenGLVoutView.m
+++ b/modules/gui/minimal_macosx/VLCOpenGLVoutView.m
@@ -39,162 +39,77 @@
#include <OpenGL/OpenGL.h>
#include <OpenGL/gl.h>
+
/*****************************************************************************
* cocoaglvoutviewInit
*****************************************************************************/
-int cocoaglvoutviewInit( vout_thread_t * p_vout )
+int cocoaglvoutviewInit( vout_window_t *p_wnd, const vout_window_cfg_t *cfg)
{
vlc_value_t value_drawable;
id <VLCOpenGLVoutEmbedding> o_cocoaglview_container;
- msg_Dbg( p_vout, "Mac OS X Vout is opening" );
+ msg_Dbg( p_wnd, "Mac OS X Vout is opening" );
- var_Create( p_vout, "drawable-nsobject", VLC_VAR_DOINHERIT );
- var_Get( p_vout, "drawable-nsobject", &value_drawable );
+ var_Create( p_wnd, "drawable-nsobject", VLC_VAR_DOINHERIT );
+ var_Get( p_wnd, "drawable-nsobject", &value_drawable );
- p_vout->p_sys->o_pool = [[NSAutoreleasePool alloc] init];
+ p_wnd->sys->o_pool = [[NSAutoreleasePool alloc] init];
/* This will be released in cocoaglvoutviewEnd(), on
* main thread, after we are done using it. */
o_cocoaglview_container = [(id) value_drawable.p_address retain];
if (!o_cocoaglview_container)
{
- msg_Warn( p_vout, "No drawable!, spawing a window" );
+ msg_Warn( p_wnd, "No drawable!, spawing a window" );
}
- p_vout->p_sys->b_embedded = false;
+ //p_vout->p_sys->b_embedded = false;
/* Create the GL view */
- struct args { vout_thread_t * p_vout; id <VLCOpenGLVoutEmbedding> container; } args = { p_vout, o_cocoaglview_container };
+ struct args { vout_window_t *p_wnd; const vout_window_cfg_t *cfg; id <VLCOpenGLVoutEmbedding> container; } args = { p_wnd, cfg, o_cocoaglview_container };
[VLCOpenGLVoutView performSelectorOnMainThread:@selector(autoinitOpenGLVoutViewIntVoutWithContainer:)
withObject:[NSData dataWithBytes: &args length: sizeof(struct args)] waitUntilDone:YES];
- [[p_vout->p_sys->o_glview openGLContext] makeCurrentContext];
return VLC_SUCCESS;
}
/*****************************************************************************
* cocoaglvoutviewEnd
*****************************************************************************/
-void cocoaglvoutviewEnd( vout_thread_t * p_vout )
+void cocoaglvoutviewEnd( vout_window_t * p_wnd )
{
id <VLCOpenGLVoutEmbedding> o_cocoaglview_container;
- if (!p_vout->p_sys->o_glview)
+ if (!p_wnd->handle.nsobject)
return;
- msg_Dbg( p_vout, "Mac OS X Vout is closing" );
- var_Destroy( p_vout, "drawable-nsobject" );
+ msg_Dbg( p_wnd, "Mac OS X Vout is closing" );
+ var_Destroy( p_wnd, "drawable-nsobject" );
- o_cocoaglview_container = [p_vout->p_sys->o_glview container];
+ o_cocoaglview_container = [(VLCOpenGLVoutView *)p_wnd->handle.nsobject container];
/* Make sure our view won't request the vout now */
- [p_vout->p_sys->o_glview detachFromVout];
- msg_Dbg( p_vout, "Mac OS X Vout is closing" );
+ [(VLCOpenGLVoutView *)p_wnd->handle.nsobject detachFromVoutWindow];
+ msg_Dbg( p_wnd, "Mac OS X Vout is closing" );
if( [(id)o_cocoaglview_container respondsToSelector:@selector(removeVoutSubview:)] )
- [o_cocoaglview_container performSelectorOnMainThread:@selector(removeVoutSubview:) withObject:p_vout->p_sys->o_glview waitUntilDone:NO];
+ [o_cocoaglview_container performSelectorOnMainThread:@selector(removeVoutSubview:) withObject:p_wnd->handle.nsobject waitUntilDone:NO];
/* 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_wnd->handle.nsobject performSelectorOnMainThread:@selector(removeFromSuperviewAndRelease) withObject:nil waitUntilDone:NO];
+ p_wnd->handle.nsobject = nil;
/* Release the container now that we don't use it */
[o_cocoaglview_container performSelectorOnMainThread:@selector(release) withObject:nil waitUntilDone:NO];
- [p_vout->p_sys->o_pool release];
- p_vout->p_sys->o_pool = nil;
+ [p_wnd->sys->o_pool release];
+ p_wnd->sys->o_pool = nil;
}
/*****************************************************************************
- * cocoaglvoutviewManage
- *****************************************************************************/
-int cocoaglvoutviewManage( vout_thread_t * p_vout )
-{
- if( p_vout->i_changes & VOUT_ASPECT_CHANGE )
- {
- [p_vout->p_sys->o_glview reshape];
- p_vout->i_changes &= ~VOUT_ASPECT_CHANGE;
- }
- if( p_vout->i_changes & VOUT_CROP_CHANGE )
- {
- [p_vout->p_sys->o_glview reshape];
- p_vout->i_changes &= ~VOUT_CROP_CHANGE;
- }
-
- if( p_vout->i_changes & VOUT_FULLSCREEN_CHANGE )
- {
- NSAutoreleasePool *o_pool = [[NSAutoreleasePool alloc] init];
-
- p_vout->b_fullscreen = !p_vout->b_fullscreen;
-
- if( p_vout->b_fullscreen )
- [[p_vout->p_sys->o_glview container] enterFullscreen];
- else
- [[p_vout->p_sys->o_glview container] leaveFullscreen];
-
- [o_pool release];
-
- p_vout->i_changes &= ~VOUT_FULLSCREEN_CHANGE;
- }
-
- //[[p_vout->p_sys->o_glview container] manage];
- return VLC_SUCCESS;
-}
-
-/*****************************************************************************
- * cocoaglvoutviewControl: control facility for the vout
- *****************************************************************************/
-int cocoaglvoutviewControl( vout_thread_t *p_vout, int i_query, va_list args )
-{
- bool b_arg;
-
- switch( i_query )
- {
- case VOUT_SET_STAY_ON_TOP:
- b_arg = (bool) va_arg( args, int );
- [[p_vout->p_sys->o_glview container] setOnTop: b_arg];
- return VLC_SUCCESS;
-
- default:
- return VLC_EGENERIC;
- }
-}
-
-/*****************************************************************************
- * cocoaglvoutviewSwap
- *****************************************************************************/
-void cocoaglvoutviewSwap( vout_thread_t * p_vout )
-{
- p_vout->p_sys->b_got_frame = true;
- [[p_vout->p_sys->o_glview openGLContext] flushBuffer];
-}
-
-/*****************************************************************************
- * cocoaglvoutviewLock
- *****************************************************************************/
-int cocoaglvoutviewLock( vout_thread_t * p_vout )
-{
- if( kCGLNoError == CGLLockContext([[p_vout->p_sys->o_glview openGLContext] CGLContextObj]) )
- {
- [[p_vout->p_sys->o_glview openGLContext] makeCurrentContext];
- return 0;
- }
- return 1;
-}
-
-/*****************************************************************************
- * cocoaglvoutviewUnlock
- *****************************************************************************/
-void cocoaglvoutviewUnlock( vout_thread_t * p_vout )
-{
- CGLUnlockContext([[p_vout->p_sys->o_glview openGLContext] CGLContextObj]);
-}
-
-/*****************************************************************************
* VLCOpenGLVoutView implementation
*****************************************************************************/
@implementation VLCOpenGLVoutView
@@ -203,22 +118,19 @@ void cocoaglvoutviewUnlock( vout_thread_t * p_vout )
* vout_thread_t. Must be called from main thread. */
+ (void) autoinitOpenGLVoutViewIntVoutWithContainer: (NSData *) argsAsData
{
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- struct args { vout_thread_t * p_vout; id <VLCOpenGLVoutEmbedding> container; } *
+ struct args { vout_window_t *p_wnd; vout_window_cfg_t *cfg; id <VLCOpenGLVoutEmbedding> container; } *
args = (struct args *)[argsAsData bytes];
VLCOpenGLVoutView * oglview;
if( !args->container )
{
- args->container = [[VLCMinimalVoutWindow alloc] initWithContentRect: NSMakeRect( 0, 0, args->p_vout->i_window_width, args->p_vout->i_window_height )];
+ args->container = [[VLCMinimalVoutWindow alloc] initWithContentRect: NSMakeRect( 0, 0, args->cfg->width, args->cfg->height )];
[(VLCMinimalVoutWindow *)args->container makeKeyAndOrderFront: nil];
}
- oglview = [[VLCOpenGLVoutView alloc] initWithVout: args->p_vout container: args->container];
+ oglview = [[VLCOpenGLVoutView alloc] initWithVoutWindow: args->p_wnd container: args->container];
- args->p_vout->p_sys->o_glview = oglview;
+ args->p_wnd->handle.nsobject = oglview;
[args->container addVoutSubview: oglview];
-
- [pool release];
}
- (void)dealloc
@@ -233,54 +145,22 @@ void cocoaglvoutviewUnlock( vout_thread_t * p_vout )
[self release];
}
-- (id) initWithVout: (vout_thread_t *) vout container: (id <VLCOpenGLVoutEmbedding>) aContainer
+- (id) initWithVoutWindow: (vout_window_t *) wnd container: (id <VLCOpenGLVoutEmbedding>) aContainer
{
- NSOpenGLPixelFormatAttribute attribs[] =
+ if( self = [super initWithFrame: NSMakeRect(0,0,10,10)] )
{
- NSOpenGLPFADoubleBuffer,
- NSOpenGLPFAAccelerated,
- NSOpenGLPFANoRecovery,
- NSOpenGLPFAColorSize, 24,
- NSOpenGLPFAAlphaSize, 8,
- NSOpenGLPFADepthSize, 24,
- NSOpenGLPFAWindow,
- 0
- };
-
- NSOpenGLPixelFormat * fmt = [[NSOpenGLPixelFormat alloc]
- initWithAttributes: attribs];
-
- if( !fmt )
- {
- msg_Warn( p_vout, "could not create OpenGL video output" );
- return nil;
- }
-
- if( self = [super initWithFrame: NSMakeRect(0,0,10,10) pixelFormat: fmt] )
- {
- p_vout = vout;
+ p_wnd = wnd;
container = aContainer;
objectLock = [[NSLock alloc] init];
- [fmt release];
-
- [[self openGLContext] makeCurrentContext];
- [[self openGLContext] update];
-
- /* Swap buffers only during the vertical retrace of the monitor.
- http://developer.apple.com/documentation/GraphicsImaging/
- Conceptual/OpenGL/chap5/chapter_5_section_44.html */
- GLint params[] = { 1 };
- CGLSetParameter( CGLGetCurrentContext(), kCGLCPSwapInterval,
- params );
}
return self;
}
-- (void) detachFromVout
+- (void) detachFromVoutWindow
{
[objectLock lock];
- p_vout = NULL;
+ p_wnd = NULL;
[objectLock unlock];
}
@@ -289,99 +169,17 @@ void cocoaglvoutviewUnlock( vout_thread_t * p_vout )
return container;
}
-- (void) destroyVout
+- (void) destroyVoutWindow
{
[objectLock lock];
- if( p_vout )
- {
- vlc_object_release( p_vout );
- vlc_object_release( p_vout );
- }
- [objectLock unlock];
-}
-
-- (void) reshape
-{
- int x, y;
- vlc_value_t val;
-
- [objectLock lock];
- if( !p_vout )
- {
- [objectLock unlock];
- return;
- }
-
- cocoaglvoutviewLock( p_vout );
- NSRect bounds = [self bounds];
-
- if( [[self container] stretchesVideo] )
- {
- x = bounds.size.width;
- y = bounds.size.height;
- }
- else if( bounds.size.height * p_vout->fmt_in.i_visible_width *
- p_vout->fmt_in.i_sar_num <
- bounds.size.width * p_vout->fmt_in.i_visible_height *
- p_vout->fmt_in.i_sar_den )
- {
- x = ( bounds.size.height * p_vout->fmt_in.i_visible_width *
- p_vout->fmt_in.i_sar_num ) /
- ( p_vout->fmt_in.i_visible_height * p_vout->fmt_in.i_sar_den);
-
- y = bounds.size.height;
- }
- else
+ if( p_wnd )
{
- x = bounds.size.width;
- y = ( bounds.size.width * p_vout->fmt_in.i_visible_height *
- p_vout->fmt_in.i_sar_den) /
- ( p_vout->fmt_in.i_visible_width * p_vout->fmt_in.i_sar_num );
- }
-
- glViewport( ( bounds.size.width - x ) / 2,
- ( bounds.size.height - y ) / 2, x, y );
-
- if( p_vout->p_sys->b_got_frame )
- {
- /* Ask the opengl module to redraw */
- vout_thread_t * p_parent;
- p_parent = (vout_thread_t *) p_vout->p_parent;
- cocoaglvoutviewUnlock( p_vout );
- if( p_parent && p_parent->pf_display )
- {
- p_parent->pf_display( p_parent, NULL );
- }
- }
- else
- {
- glClear( GL_COLOR_BUFFER_BIT );
- cocoaglvoutviewUnlock( p_vout );
+ vlc_object_release( p_wnd );
+ vlc_object_release( p_wnd );
}
[objectLock unlock];
- [super reshape];
-}
-
-- (void) update
-{
- if (!p_vout)
- return;
- if( kCGLNoError != CGLLockContext([[self openGLContext] CGLContextObj]) )
- return;
- [super update];
- CGLUnlockContext([[p_vout->p_sys->o_glview openGLContext] CGLContextObj]);
}
-- (void) drawRect: (NSRect) rect
-{
- if (!p_vout)
- return;
- if( kCGLNoError != CGLLockContext([[self openGLContext] CGLContextObj]) )
- return;
- [[self openGLContext] flushBuffer];
- [super drawRect:rect];
- CGLUnlockContext([[p_vout->p_sys->o_glview openGLContext] CGLContextObj]);
-}
- (BOOL)mouseDownCanMoveWindow
{
diff --git a/modules/gui/minimal_macosx/intf.m b/modules/gui/minimal_macosx/intf.m
index b9a13ef..298b3cc 100644
--- a/modules/gui/minimal_macosx/intf.m
+++ b/modules/gui/minimal_macosx/intf.m
@@ -54,7 +54,7 @@ static void Run ( intf_thread_t *p_intf );
int OpenIntf ( vlc_object_t *p_this )
{
intf_thread_t *p_intf = (intf_thread_t*) p_this;
-
+
p_intf->p_sys = malloc( sizeof( intf_sys_t ) );
if( p_intf->p_sys == NULL )
{
@@ -64,7 +64,6 @@ int OpenIntf ( vlc_object_t *p_this )
memset( p_intf->p_sys, 0, sizeof( *p_intf->p_sys ) );
p_intf->pf_run = Run;
- p_intf->b_should_run_on_first_thread = true;
return VLC_SUCCESS;
}
@@ -110,8 +109,6 @@ static void * KillerThread( void *user_data )
vlc_mutex_destroy( &p_intf->p_sys->lock );
vlc_cond_destroy( &p_intf->p_sys->wait );
- msg_Dbg( p_intf, "Killing the Minimal Mac OS X module" );
-
/* We are dead, terminate */
[NSApp terminate: nil];
[o_pool release];
diff --git a/modules/gui/minimal_macosx/macosx.c b/modules/gui/minimal_macosx/macosx.c
index 59133a1..a8140b7 100644
--- a/modules/gui/minimal_macosx/macosx.c
+++ b/modules/gui/minimal_macosx/macosx.c
@@ -36,6 +36,7 @@
#include <vlc_common.h>
#include <vlc_plugin.h>
+#include <vlc_vout_window.h>
/*****************************************************************************
* External prototypes
@@ -43,8 +44,8 @@
int OpenIntf ( vlc_object_t * );
void CloseIntf ( vlc_object_t * );
-int OpenVideoGL ( vlc_object_t * );
-void CloseVideoGL ( vlc_object_t * );
+int WindowOpen ( vout_window_t *, const vout_window_cfg_t * );
+void WindowClose ( vout_window_t * );
/*****************************************************************************
* Module descriptor
@@ -61,12 +62,9 @@ vlc_module_begin ()
set_subcategory( SUBCAT_INTERFACE_MAIN )
add_submodule ()
- /* Will be loaded even without interface module. see voutgl.m */
- add_shortcut( "minimal_macosx", "miosx" )
- set_description( N_("Minimal Mac OS X OpenGL video output (opens a borderless window)") )
- set_capability( "opengl provider", 50 )
- set_category( CAT_VIDEO)
- set_subcategory( SUBCAT_VIDEO_VOUT )
- set_callbacks( OpenVideoGL, CloseVideoGL )
+ /* Will be loaded even without interface module. see voutgl.m */
+ set_description( "Minimal Mac OS X Video Output Provider" )
+ set_capability( "vout window nsobject", 100 )
+ set_callbacks( WindowOpen, WindowClose )
vlc_module_end ()
diff --git a/modules/gui/minimal_macosx/voutagl.h b/modules/gui/minimal_macosx/voutagl.h
deleted file mode 100644
index 08755ab..0000000
--- a/modules/gui/minimal_macosx/voutagl.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*****************************************************************************
- * voutagl.h: MacOS X agl OpenGL provider (used by webbrowser.plugin)
- *****************************************************************************
- * Copyright (C) 2001-2004 the VideoLAN team
- * $Id$
- *
- * Authors: Colin Delacroix <colin at zoy.org>
- * Florian G. Pflug <fgp at phlo.org>
- * Jon Lech Johansen <jon-vl at nanocrew.net>
- * Derk-Jan Hartman <hartman at videolan dot org>
- * Eric Petit <titer at m0k.org>
- * Benjamin Pracht <bigben at videolan dot org>
- * Damien Fouilleul <damienf at videolan dot org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
- *****************************************************************************/
-
-#include <OpenGL/OpenGL.h>
-#include <OpenGL/gl.h>
-
-#include <AGL/agl.h>
-
-#include <vlc_common.h>
-
-int aglInit ( vout_thread_t * p_vout );
-void aglEnd ( vout_thread_t * p_vout );
-int aglManage ( vout_thread_t * p_vout );
-int aglControl( vout_thread_t *, int, va_list );
-void aglSwap ( vout_thread_t * p_vout );
-int aglLock ( vout_thread_t * p_vout );
-void aglUnlock ( vout_thread_t * p_vout );
diff --git a/modules/gui/minimal_macosx/voutagl.m b/modules/gui/minimal_macosx/voutagl.m
deleted file mode 100644
index 5078622..0000000
--- a/modules/gui/minimal_macosx/voutagl.m
+++ /dev/null
@@ -1,672 +0,0 @@
-/*****************************************************************************
- * voutagl.m: MacOS X agl OpenGL provider (used by webbrowser.plugin)
- *****************************************************************************
- * Copyright (C) 2001-2007 the VideoLAN team
- * $Id$
- *
- * Authors: Colin Delacroix <colin at zoy.org>
- * Florian G. Pflug <fgp at phlo.org>
- * Jon Lech Johansen <jon-vl at nanocrew.net>
- * Derk-Jan Hartman <hartman at videolan dot org>
- * Eric Petit <titer at m0k.org>
- * Benjamin Pracht <bigben at videolan dot org>
- * Damien Fouilleul <damienf at videolan dot org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
- *****************************************************************************/
-
-#include "intf.h"
-#include "voutgl.h"
-#include "voutagl.h"
-
-/*****************************************************************************
- * embedded AGL context implementation (not 64bit compatible)
- *****************************************************************************/
-
-#ifndef __x86_64__
-static void aglSetViewport( vout_thread_t *p_vout, Rect viewBounds, Rect clipBounds );
-static void aglReshape( vout_thread_t * p_vout );
-static OSStatus WindowEventHandler(EventHandlerCallRef nextHandler, EventRef event, void *userData);
-
-int aglInit( vout_thread_t * p_vout )
-{
- vlc_value_t val;
-
- Rect viewBounds;
- Rect clipBounds;
-
- static const GLint ATTRIBUTES[] = {
- AGL_WINDOW,
- AGL_RGBA,
- AGL_NO_RECOVERY,
- AGL_ACCELERATED,
- AGL_DOUBLEBUFFER,
- AGL_RED_SIZE, 8,
- AGL_GREEN_SIZE, 8,
- AGL_BLUE_SIZE, 8,
- AGL_ALPHA_SIZE, 8,
- AGL_DEPTH_SIZE, 24,
- AGL_NONE };
-
- AGLPixelFormat pixFormat;
-
- p_vout->p_sys->b_embedded = true;
-
- pixFormat = aglChoosePixelFormat(NULL, 0, ATTRIBUTES);
- if( NULL == pixFormat )
- {
- msg_Err( p_vout, "No screen renderer available for required attributes." );
- return VLC_EGENERIC;
- }
-
- p_vout->p_sys->agl_ctx = aglCreateContext(pixFormat, NULL);
- aglDestroyPixelFormat(pixFormat);
- if( NULL == p_vout->p_sys->agl_ctx )
- {
- msg_Err( p_vout, "Cannot create AGL context." );
- return VLC_EGENERIC;
- }
- else
- {
- // tell opengl not to sync buffer swap with vertical retrace (too inefficient)
- GLint param = 0;
- aglSetInteger(p_vout->p_sys->agl_ctx, AGL_SWAP_INTERVAL, ¶m);
- aglEnable(p_vout->p_sys->agl_ctx, AGL_SWAP_INTERVAL);
- }
-
- var_Get( p_vout->p_libvlc, "drawable-agl", &val );
- p_vout->p_sys->agl_drawable = (AGLDrawable)val.i_int;
- aglSetDrawable(p_vout->p_sys->agl_ctx, p_vout->p_sys->agl_drawable);
-
- var_Get( p_vout->p_libvlc, "drawable-view-top", &val );
- viewBounds.top = val.i_int;
- var_Get( p_vout->p_libvlc, "drawable-view-left", &val );
- viewBounds.left = val.i_int;
- var_Get( p_vout->p_libvlc, "drawable-view-bottom", &val );
- viewBounds.bottom = val.i_int;
- var_Get( p_vout->p_libvlc, "drawable-view-right", &val );
- viewBounds.right = val.i_int;
- var_Get( p_vout->p_libvlc, "drawable-clip-top", &val );
- clipBounds.top = val.i_int;
- var_Get( p_vout->p_libvlc, "drawable-clip-left", &val );
- clipBounds.left = val.i_int;
- var_Get( p_vout->p_libvlc, "drawable-clip-bottom", &val );
- clipBounds.bottom = val.i_int;
- var_Get( p_vout->p_libvlc, "drawable-clip-right", &val );
- clipBounds.right = val.i_int;
-
- p_vout->p_sys->b_clipped_out = (clipBounds.top == clipBounds.bottom)
- || (clipBounds.left == clipBounds.right);
- if( ! p_vout->p_sys->b_clipped_out )
- {
- aglLock(p_vout);
- aglSetViewport(p_vout, viewBounds, clipBounds);
- aglReshape(p_vout);
- aglUnlock(p_vout);
- }
- p_vout->p_sys->clipBounds = clipBounds;
- p_vout->p_sys->viewBounds = viewBounds;
-
- return VLC_SUCCESS;
-}
-
-void aglEnd( vout_thread_t * p_vout )
-{
- aglSetCurrentContext(NULL);
- if( p_vout->p_sys->theWindow )
- DisposeWindow( p_vout->p_sys->theWindow );
- aglDestroyContext(p_vout->p_sys->agl_ctx);
-}
-
-void aglReshape( vout_thread_t * p_vout )
-{
- unsigned int x, y;
- unsigned int i_height = p_vout->p_sys->i_height;
- unsigned int i_width = p_vout->p_sys->i_width;
-
- vout_PlacePicture(p_vout, i_width, i_height, &x, &y, &i_width, &i_height);
-
- glViewport( p_vout->p_sys->i_offx + x, p_vout->p_sys->i_offy + y, i_width, i_height );
-
- if( p_vout->p_sys->b_got_frame )
- {
- /* Ask the opengl module to redraw */
- vout_thread_t * p_parent;
- p_parent = (vout_thread_t *) p_vout->p_parent;
- if( p_parent && p_parent->pf_display )
- {
- p_parent->pf_display( p_parent, NULL );
- }
- }
- else
- {
- glClear( GL_COLOR_BUFFER_BIT );
- }
-}
-
-/* private event class */
-enum
-{
- kEventClassVLCPlugin = 'vlcp',
-};
-/* private event kinds */
-enum
-{
- kEventVLCPluginShowFullscreen = 32768,
- kEventVLCPluginHideFullscreen,
-};
-
-static void sendEventToMainThread(EventTargetRef target, UInt32 class, UInt32 kind)
-{
- EventRef myEvent;
- if( noErr == CreateEvent(NULL, class, kind, 0, kEventAttributeNone, &myEvent) )
- {
- if( noErr == SetEventParameter(myEvent, kEventParamPostTarget, typeEventTargetRef, sizeof(EventTargetRef), &target) )
- {
- PostEventToQueue(GetMainEventQueue(), myEvent, kEventPriorityStandard);
- }
- ReleaseEvent(myEvent);
- }
-}
-
-int aglManage( vout_thread_t * p_vout )
-{
- if( p_vout->i_changes & VOUT_ASPECT_CHANGE )
- {
- aglLock( p_vout );
- aglReshape(p_vout);
- aglUnlock( p_vout );
- p_vout->i_changes &= ~VOUT_ASPECT_CHANGE;
- }
- if( p_vout->i_changes & VOUT_CROP_CHANGE )
- {
- aglLock( p_vout );
- aglReshape(p_vout);
- aglUnlock( p_vout );
- p_vout->i_changes &= ~VOUT_CROP_CHANGE;
- }
- if( p_vout->i_changes & VOUT_FULLSCREEN_CHANGE )
- {
- aglSetDrawable(p_vout->p_sys->agl_ctx, NULL);
- aglLock( p_vout );
- if( p_vout->b_fullscreen )
- {
- /* Close the fullscreen window and resume normal drawing */
- vlc_value_t val;
- Rect viewBounds;
- Rect clipBounds;
-
- var_Get( p_vout->p_libvlc, "drawable-agl", &val );
- p_vout->p_sys->agl_drawable = (AGLDrawable)val.i_int;
- aglSetDrawable(p_vout->p_sys->agl_ctx, p_vout->p_sys->agl_drawable);
-
- var_Get( p_vout->p_libvlc, "drawable-view-top", &val );
- viewBounds.top = val.i_int;
- var_Get( p_vout->p_libvlc, "drawable-view-left", &val );
- viewBounds.left = val.i_int;
- var_Get( p_vout->p_libvlc, "drawable-view-bottom", &val );
- viewBounds.bottom = val.i_int;
- var_Get( p_vout->p_libvlc, "drawable-view-right", &val );
- viewBounds.right = val.i_int;
- var_Get( p_vout->p_libvlc, "drawable-clip-top", &val );
- clipBounds.top = val.i_int;
- var_Get( p_vout->p_libvlc, "drawable-clip-left", &val );
- clipBounds.left = val.i_int;
- var_Get( p_vout->p_libvlc, "drawable-clip-bottom", &val );
- clipBounds.bottom = val.i_int;
- var_Get( p_vout->p_libvlc, "drawable-clip-right", &val );
- clipBounds.right = val.i_int;
-
- aglSetCurrentContext(p_vout->p_sys->agl_ctx);
- 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);
- }
- else
- {
- Rect deviceRect;
-
- GDHandle deviceHdl = GetMainDevice();
- deviceRect = (*deviceHdl)->gdRect;
-
- if( !p_vout->p_sys->theWindow )
- {
- /* Create a window */
- WindowAttributes windowAttrs;
-
- windowAttrs = kWindowStandardDocumentAttributes
- | kWindowStandardHandlerAttribute
- | kWindowLiveResizeAttribute
- | kWindowNoShadowAttribute;
-
- windowAttrs &= (~kWindowResizableAttribute);
-
- CreateNewWindow(kDocumentWindowClass, windowAttrs, &deviceRect, &p_vout->p_sys->theWindow);
- if( !p_vout->p_sys->winGroup )
- {
- CreateWindowGroup(0, &p_vout->p_sys->winGroup);
- SetWindowGroup(p_vout->p_sys->theWindow, p_vout->p_sys->winGroup);
- SetWindowGroupParent( p_vout->p_sys->winGroup, GetWindowGroupOfClass(kDocumentWindowClass) ) ;
- }
-
- // Window title
- CFStringRef titleKey = CFSTR("Fullscreen VLC media plugin");
- CFStringRef windowTitle = CFCopyLocalizedString(titleKey, NULL);
- SetWindowTitleWithCFString(p_vout->p_sys->theWindow, windowTitle);
- CFRelease(titleKey);
- CFRelease(windowTitle);
-
- //Install event handler
- static const EventTypeSpec win_events[] = {
- { kEventClassMouse, kEventMouseDown },
- { kEventClassMouse, kEventMouseMoved },
- { kEventClassMouse, kEventMouseUp },
- { kEventClassWindow, kEventWindowClosed },
- { kEventClassWindow, kEventWindowBoundsChanged },
- { kEventClassCommand, kEventCommandProcess },
- { kEventClassVLCPlugin, kEventVLCPluginShowFullscreen },
- { kEventClassVLCPlugin, kEventVLCPluginHideFullscreen },
- };
- InstallWindowEventHandler (p_vout->p_sys->theWindow, NewEventHandlerUPP (WindowEventHandler), GetEventTypeCount(win_events), win_events, p_vout, NULL);
- }
- else
- {
- /* just in case device resolution changed */
- SetWindowBounds(p_vout->p_sys->theWindow, kWindowContentRgn, &deviceRect);
- }
- glClear( GL_COLOR_BUFFER_BIT );
- p_vout->p_sys->agl_drawable = (AGLDrawable)GetWindowPort(p_vout->p_sys->theWindow);
- aglSetDrawable(p_vout->p_sys->agl_ctx, p_vout->p_sys->agl_drawable);
- aglSetCurrentContext(p_vout->p_sys->agl_ctx);
- aglSetViewport(p_vout, deviceRect, deviceRect);
- //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 */
- sendEventToMainThread(GetWindowEventTarget(p_vout->p_sys->theWindow), kEventClassVLCPlugin, kEventVLCPluginShowFullscreen);
- }
- aglReshape(p_vout);
- aglUnlock( p_vout );
- p_vout->b_fullscreen = !p_vout->b_fullscreen;
- p_vout->i_changes &= ~VOUT_FULLSCREEN_CHANGE;
- }
- return VLC_SUCCESS;
-}
-
-int aglControl( vout_thread_t *p_vout, int i_query, va_list args )
-{
- switch( i_query )
- {
- case VOUT_SET_VIEWPORT:
- {
- Rect viewBounds, clipBounds;
- viewBounds.top = va_arg( args, int);
- viewBounds.left = va_arg( args, int);
- viewBounds.bottom = va_arg( args, int);
- viewBounds.right = va_arg( args, int);
- clipBounds.top = va_arg( args, int);
- clipBounds.left = va_arg( args, int);
- clipBounds.bottom = va_arg( args, int);
- clipBounds.right = va_arg( args, int);
-
- if( !p_vout->b_fullscreen )
- {
- /*
- ** check that the clip rect is not empty, as this is used
- ** by Firefox to prevent a plugin from displaying during
- ** a scrolling event. In this case we just prevent buffers
- ** from being swapped and ignore clipping as this is less
- ** disruptive than a GL geometry change
- */
-
- p_vout->p_sys->b_clipped_out = (clipBounds.top == clipBounds.bottom)
- || (clipBounds.left == clipBounds.right);
- if( ! p_vout->p_sys->b_clipped_out )
- {
- /* ignore consecutive viewport update with identical parameters */
- if( memcmp(&clipBounds, &(p_vout->p_sys->clipBounds), sizeof(clipBounds) )
- && memcmp(&viewBounds, &(p_vout->p_sys->viewBounds), sizeof(viewBounds)) )
- {
- aglLock( p_vout );
- aglSetViewport(p_vout, viewBounds, clipBounds);
- aglReshape( p_vout );
- aglUnlock( p_vout );
- p_vout->p_sys->clipBounds = clipBounds;
- p_vout->p_sys->viewBounds = viewBounds;
- }
- }
- }
- return VLC_SUCCESS;
- }
-
- case VOUT_REDRAW_RECT:
- {
- vout_thread_t * p_parent;
- Rect areaBounds;
-
- areaBounds.top = va_arg( args, int);
- areaBounds.left = va_arg( args, int);
- areaBounds.bottom = va_arg( args, int);
- areaBounds.right = va_arg( args, int);
-
- /* Ask the opengl module to redraw */
- p_parent = (vout_thread_t *) p_vout->p_parent;
- if( p_parent && p_parent->pf_display )
- {
- p_parent->pf_display( p_parent, NULL );
- }
- return VLC_SUCCESS;
- }
-
- default:
- return VLC_EGENERIC;
- }
-}
-
-void aglSwap( vout_thread_t * p_vout )
-{
- if( ! p_vout->p_sys->b_clipped_out )
- {
- p_vout->p_sys->b_got_frame = true;
- aglSwapBuffers(p_vout->p_sys->agl_ctx);
- }
- else
- {
- /* drop frame */
- glFlush();
- }
-}
-
-/* Enter this function with the p_vout locked */
-static void aglSetViewport( vout_thread_t *p_vout, Rect viewBounds, Rect clipBounds )
-{
- // mozilla plugin provides coordinates based on port bounds
- // however AGL coordinates are based on window structure region
- // and are vertically flipped
- GLint rect[4];
- CGrafPtr port = (CGrafPtr)p_vout->p_sys->agl_drawable;
- Rect winBounds, clientBounds;
-
- GetWindowBounds(GetWindowFromPort(port),
- kWindowStructureRgn, &winBounds);
- GetWindowBounds(GetWindowFromPort(port),
- kWindowContentRgn, &clientBounds);
-
- /* update video clipping bounds in drawable */
- rect[0] = (clientBounds.left-winBounds.left)
- + clipBounds.left; // from window left edge
- rect[1] = (winBounds.bottom-winBounds.top)
- - (clientBounds.top-winBounds.top)
- - clipBounds.bottom; // from window bottom edge
- rect[2] = clipBounds.right-clipBounds.left; // width
- rect[3] = clipBounds.bottom-clipBounds.top; // height
- aglSetInteger(p_vout->p_sys->agl_ctx, AGL_BUFFER_RECT, rect);
- aglEnable(p_vout->p_sys->agl_ctx, AGL_BUFFER_RECT);
-
- /* update video internal bounds in drawable */
- p_vout->p_sys->i_width = viewBounds.right-viewBounds.left;
- p_vout->p_sys->i_height = viewBounds.bottom-viewBounds.top;
- p_vout->p_sys->i_offx = -clipBounds.left - viewBounds.left;
- p_vout->p_sys->i_offy = clipBounds.bottom + viewBounds.top
- - p_vout->p_sys->i_height;
-
- aglUpdateContext(p_vout->p_sys->agl_ctx);
-}
-
-//default window event handler
-static pascal OSStatus WindowEventHandler(EventHandlerCallRef nextHandler, EventRef event, void *userData)
-{
- OSStatus result = noErr;
- UInt32 class = GetEventClass (event);
- UInt32 kind = GetEventKind (event);
- vout_thread_t *p_vout = (vout_thread_t *)userData;
-
- result = CallNextEventHandler(nextHandler, event);
- if(class == kEventClassCommand)
- {
- HICommand theHICommand;
- GetEventParameter( event, kEventParamDirectObject, typeHICommand, NULL, sizeof( HICommand ), NULL, &theHICommand );
-
- switch ( theHICommand.commandID )
- {
- default:
- result = eventNotHandledErr;
- }
- }
- else if(class == kEventClassWindow)
- {
- WindowRef window;
- Rect rectPort = {0,0,0,0};
-
- GetEventParameter(event, kEventParamDirectObject, typeWindowRef, NULL, sizeof(WindowRef), NULL, &window);
-
- if(window)
- {
- GetPortBounds(GetWindowPort(window), &rectPort);
- }
-
- switch (kind)
- {
- case kEventWindowClosed:
- case kEventWindowZoomed:
- case kEventWindowBoundsChanged:
- break;
-
- default:
- result = eventNotHandledErr;
- }
- }
- else if(class == kEventClassMouse)
- {
- switch (kind)
- {
- case kEventMouseDown:
- {
- UInt16 button;
-
- GetEventParameter(event, kEventParamMouseButton, typeMouseButton, NULL, sizeof(button), NULL, &button);
- switch (button)
- {
- case kEventMouseButtonPrimary:
- {
- vlc_value_t val;
-
- var_Get( p_vout, "mouse-button-down", &val );
- val.i_int |= 1;
- var_Set( p_vout, "mouse-button-down", val );
- break;
- }
- case kEventMouseButtonSecondary:
- {
- vlc_value_t val;
-
- var_Get( p_vout, "mouse-button-down", &val );
- val.i_int |= 2;
- var_Set( p_vout, "mouse-button-down", val );
- break;
- }
- case kEventMouseButtonTertiary:
- {
- vlc_value_t val;
-
- var_Get( p_vout, "mouse-button-down", &val );
- val.i_int |= 4;
- var_Set( p_vout, "mouse-button-down", val );
- break;
- }
- default:
- result = eventNotHandledErr;
- }
- break;
- }
-
- case kEventMouseUp:
- {
- UInt16 button;
-
- GetEventParameter(event, kEventParamMouseButton, typeMouseButton, NULL, sizeof(button), NULL, &button);
- switch (button)
- {
- case kEventMouseButtonPrimary:
- {
- UInt32 clickCount = 0;
- GetEventParameter(event, kEventParamClickCount, typeUInt32, NULL, sizeof(clickCount), NULL, &clickCount);
- if( clickCount > 1 )
- {
- vlc_value_t val;
-
- val.b_bool = false;
- var_Set((vout_thread_t *) p_vout->p_parent, "fullscreen", val);
- }
- else
- {
- vlc_value_t val;
- int x, y;
-
- var_GetCoords( p_vout, "mouse-moved", &x, &y );
- var_SetCoords( p_vout, "mouse-clicked", x, y );
-
- var_Get( p_vout, "mouse-button-down", &val );
- val.i_int &= ~1;
- var_Set( p_vout, "mouse-button-down", val );
- }
- break;
- }
- case kEventMouseButtonSecondary:
- {
- vlc_value_t val;
-
- var_Get( p_vout, "mouse-button-down", &val );
- val.i_int &= ~2;
- var_Set( p_vout, "mouse-button-down", val );
- break;
- }
- case kEventMouseButtonTertiary:
- {
- vlc_value_t val;
-
- var_Get( p_vout, "mouse-button-down", &val );
- val.i_int &= ~2;
- var_Set( p_vout, "mouse-button-down", val );
- break;
- }
- default:
- result = eventNotHandledErr;
- }
- break;
- }
-
- case kEventMouseMoved:
- {
- Point ml;
- vlc_value_t val;
-
- unsigned int i_x, i_y;
- unsigned int i_height = p_vout->p_sys->i_height;
- unsigned int i_width = p_vout->p_sys->i_width;
- int x, y;
-
- vout_PlacePicture(p_vout, i_width, i_height, &i_x, &i_y, &i_width, &i_height);
-
- GetEventParameter(event, kEventParamWindowMouseLocation, typeQDPoint, NULL, sizeof(Point), NULL, &ml);
-
- x = (((int)ml.h) - i_x) * p_vout->render.i_width / i_width;
- y = (((int)ml.v) - i_y) * p_vout->render.i_height / i_height;
- var_SetCoords( p_vout, "mouse-moved", x, y );
- break;
- }
-
- default:
- result = eventNotHandledErr;
- }
- }
- else if(class == kEventClassTextInput)
- {
- switch (kind)
- {
- case kEventTextInputUnicodeForKeyEvent:
- {
- break;
- }
- default:
- result = eventNotHandledErr;
- }
- }
- else if(class == kEventClassVLCPlugin)
- {
- switch (kind)
- {
- case kEventVLCPluginShowFullscreen:
- ShowWindow (p_vout->p_sys->theWindow);
- SetSystemUIMode( kUIModeAllHidden, kUIOptionAutoShowMenuBar);
- //CGDisplayHideCursor(kCGDirectMainDisplay);
- break;
- case kEventVLCPluginHideFullscreen:
- HideWindow (p_vout->p_sys->theWindow);
- SetSystemUIMode( kUIModeNormal, 0);
- CGDisplayShowCursor(kCGDirectMainDisplay);
- break;
- default:
- result = eventNotHandledErr;
- break;
- }
- }
- return result;
-}
-
-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 */
- CGLContextObj cglContext;
- if( aglGetCGLContext(p_vout->p_sys->agl_ctx, (void**)&cglContext) )
- {
- if( kCGLNoError == CGLLockContext( cglContext ) )
- {
- aglSetCurrentContext(p_vout->p_sys->agl_ctx);
- return 0;
- }
- }
- return 1;
-#endif
-}
-
-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 */
- CGLContextObj cglContext;
- if( aglGetCGLContext(p_vout->p_sys->agl_ctx, (void**)&cglContext) )
- {
- CGLUnlockContext( cglContext );
- }
-#endif
-}
-
-#endif
diff --git a/modules/gui/minimal_macosx/voutgl.h b/modules/gui/minimal_macosx/voutgl.h
index 3e51ea0..881fb7b 100644
--- a/modules/gui/minimal_macosx/voutgl.h
+++ b/modules/gui/minimal_macosx/voutgl.h
@@ -27,7 +27,6 @@
#import <Cocoa/Cocoa.h>
#import "VLCOpenGLVoutView.h"
-#import "voutagl.h"
struct vout_sys_t
{
@@ -39,12 +38,16 @@ struct vout_sys_t
/* Mozilla plugin-related variables */
bool b_embedded;
- AGLContext agl_ctx;
- AGLDrawable agl_drawable;
int i_offx, i_offy;
int i_width, i_height;
WindowRef theWindow;
- WindowGroupRef winGroup;
bool b_clipped_out;
Rect clipBounds, viewBounds;
};
+
+struct vout_window_sys_t
+{
+ NSAutoreleasePool *o_pool;
+};
+
+
diff --git a/modules/gui/minimal_macosx/voutgl.m b/modules/gui/minimal_macosx/voutgl.m
index 96792fa..7bc8e09 100644
--- a/modules/gui/minimal_macosx/voutgl.m
+++ b/modules/gui/minimal_macosx/voutgl.m
@@ -33,72 +33,48 @@
#include "intf.h"
#include "voutgl.h"
-int OpenVideoGL ( vlc_object_t * p_this )
-{
- vout_thread_t * p_vout = (vout_thread_t *) p_this;
- int i_drawable_agl;
- int i_drawable_gl;
- if( !CGDisplayUsesOpenGLAcceleration( kCGDirectMainDisplay ) )
- {
- msg_Warn( p_vout, "No OpenGL hardware acceleration found. "
- "Video display will be slow" );
+static int WindowControl( vout_window_t *, int i_query, va_list );
+
+int WindowOpen( vout_window_t *p_wnd, const vout_window_cfg_t *cfg )
+{
+ p_wnd->sys = malloc( sizeof( vout_window_sys_t ) );
+ if( p_wnd->sys == NULL )
return( 1 );
- }
- msg_Dbg( p_vout, "display is Quartz Extreme accelerated" );
+ memset( p_wnd->sys, 0, sizeof( vout_window_sys_t ) );
- p_vout->p_sys = malloc( sizeof( vout_sys_t ) );
- if( p_vout->p_sys == NULL )
- return( 1 );
- memset( p_vout->p_sys, 0, sizeof( vout_sys_t ) );
+ if (cocoaglvoutviewInit(p_wnd, cfg)) {
+ msg_Err( p_wnd, "Mac OS X VoutGLView couldnt be initialized" );
+ return VLC_EGENERIC;
+ }
- i_drawable_agl = var_GetInteger( p_vout->p_libvlc, "drawable-agl" );
- i_drawable_gl = var_GetInteger( p_vout->p_libvlc, "drawable-gl" );
+ p_wnd->control = WindowControl;
+ return VLC_SUCCESS;
+}
- /* Are we in the mozilla plugin, which isn't 64bit compatible ? */
-#ifndef __x86_64__
- if( i_drawable_agl > 0 )
+static int WindowControl( vout_window_t *p_wnd, int i_query, va_list args )
+{
+ /* TODO */
+ if( i_query == VOUT_WINDOW_SET_STATE )
+ msg_Dbg( p_wnd, "WindowControl:VOUT_WINDOW_SET_STATE" );
+ else if( i_query == VOUT_WINDOW_SET_SIZE )
{
- p_vout->pf_init = aglInit;
- p_vout->pf_end = aglEnd;
- p_vout->pf_manage = aglManage;
- p_vout->pf_control = aglControl;
- p_vout->pf_swap = aglSwap;
- p_vout->pf_lock = aglLock;
- p_vout->pf_unlock = aglUnlock;
+ msg_Dbg( p_wnd, "WindowControl:VOUT_WINDOW_SET_SIZE" );
}
- else /*if( i_drawable_gl > 0 )*/
+ else if( i_query == VOUT_WINDOW_SET_FULLSCREEN )
{
- /* Let's use the VLCOpenGLVoutView.m class */
- p_vout->pf_init = cocoaglvoutviewInit;
- p_vout->pf_end = cocoaglvoutviewEnd;
- p_vout->pf_manage = cocoaglvoutviewManage;
- p_vout->pf_control= cocoaglvoutviewControl;
- p_vout->pf_swap = cocoaglvoutviewSwap;
- p_vout->pf_lock = cocoaglvoutviewLock;
- p_vout->pf_unlock = cocoaglvoutviewUnlock;
+ msg_Dbg( p_wnd, "WindowControl:VOUT_WINDOW_SET_FULLSCREEN" );
}
-#else
- /* Let's use the VLCOpenGLVoutView.m class */
- p_vout->pf_init = cocoaglvoutviewInit;
- p_vout->pf_end = cocoaglvoutviewEnd;
- p_vout->pf_manage = cocoaglvoutviewManage;
- p_vout->pf_control= cocoaglvoutviewControl;
- p_vout->pf_swap = cocoaglvoutviewSwap;
- p_vout->pf_lock = cocoaglvoutviewLock;
- p_vout->pf_unlock = cocoaglvoutviewUnlock;
-#endif
- p_vout->p_sys->b_got_frame = false;
-
+ else
+ msg_Dbg( p_wnd, "WindowControl: unknown query" );
return VLC_SUCCESS;
}
-void CloseVideoGL ( vlc_object_t * p_this )
+void WindowClose( vout_window_t *p_wnd )
{
- vout_thread_t * p_vout = (vout_thread_t *) p_this;
- cocoaglvoutviewEnd( p_vout );
+ cocoaglvoutviewEnd( p_wnd );
/* Clean up */
- free( p_vout->p_sys );
+ free( p_wnd->sys );
}
--
1.7.9.6 (Apple Git-31.1)
More information about the vlc-devel
mailing list