diff libvo/vo_macosx.m @ 15726:25ee208c6da9

do not realloc window while playing playlist
author nplourde
date Wed, 15 Jun 2005 14:48:33 +0000
parents e695fcd731e0
children dfe70cdbb699
line wrap: on
line diff
--- a/libvo/vo_macosx.m	Wed Jun 15 08:14:55 2005 +0000
+++ b/libvo/vo_macosx.m	Wed Jun 15 14:48:33 2005 +0000
@@ -134,21 +134,11 @@
 	movie_aspect = (float)d_width/(float)d_height;
 	old_movie_aspect = movie_aspect;
 	
-	//init OpenGL View
-	mpGLView = [[MPlayerOpenGLView alloc] initWithFrame:NSMakeRect(0, 0, d_width, d_height) pixelFormat:[MPlayerOpenGLView defaultPixelFormat]];
-	[mpGLView initView];
-	
 	vo_fs = flags & VOFLAG_FULLSCREEN;
-	
-	if(vo_rootwin)
-		[mpGLView rootwin];	
-
-	if(vo_fs)
-		[mpGLView fullscreen: NO];
-	
-	if(vo_ontop)
-		[mpGLView ontop];
-	
+		
+	//config OpenGL View
+	[mpGLView config];
+		
 	return 0;
 }
 
@@ -255,7 +245,11 @@
 
 	NSApplicationLoad();
 	autoreleasepool = [[NSAutoreleasePool alloc] init];
-		
+	
+	mpGLView = [[MPlayerOpenGLView alloc] initWithFrame:NSMakeRect(0, 0, 0, 0) pixelFormat:[MPlayerOpenGLView defaultPixelFormat]];
+	[mpGLView autorelease];
+	[mpGLView preinit];
+	
     return 0;
 }
 
@@ -279,30 +273,43 @@
 // NSOpenGLView Subclass
 //////////////////////////////////////////////////////////////////////////
 @implementation MPlayerOpenGLView
-- (void) initView
+- (id) preinit
 {
+	//init menu
+	[self initMenu];
+	
+	//create window
+	window = [[NSWindow alloc]	initWithContentRect:NSMakeRect(0, 0, 0, 0) 
+								styleMask:NSTitledWindowMask|NSTexturedBackgroundWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask|NSResizableWindowMask
+								backing:NSBackingStoreBuffered defer:NO];
+
+	[window autorelease];
+	[window setDelegate:mpGLView];
+	[window setContentView:mpGLView];
+	[window setInitialFirstResponder:mpGLView];
+	[window setAcceptsMouseMovedEvents:YES];
+    [window setTitle:@"MPlayer - The Movie Player"];
+	
+	isFullscreen = 0;
+}
+
+- (id) config
+{
+	uint32_t d_width;
+	uint32_t d_height;
+	
 	long swapInterval = 1;
-	NSRect frame = [self frame];
+	
+	NSRect frame;
 	CVReturn error = kCVReturnSuccess;
 	
-	//init menu
-	[self initMenu];
+	aspect((int *)&d_width, (int *)&d_height,A_NOZOOM);
+	frame = NSMakeRect(0, 0, d_width, d_height);
+	[window setContentSize: frame.size];
 	
 	//create OpenGL Context
 	glContext = [[NSOpenGLContext alloc] initWithFormat:[NSOpenGLView defaultPixelFormat] shareContext:nil];	
-	
-	
-	//create window
-	window = [[NSWindow alloc]	initWithContentRect:NSMakeRect(0, 0, frame.size.width, frame.size.height) 
-								styleMask:NSTitledWindowMask|NSTexturedBackgroundWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask|NSResizableWindowMask
-								backing:NSBackingStoreBuffered defer:NO];
-
-	[window setDelegate:self];
-	[window setContentView:self];
-	[window setInitialFirstResponder:self];
-	[window setAcceptsMouseMovedEvents:YES];
-    [window setTitle:@"MPlayer - The Movie Player"];
-	[window center];	
+	[glContext autorelease];
 	
 	[self setOpenGLContext:glContext];
 	[glContext setValues:&swapInterval forParameter:NSOpenGLCPSwapInterval];
@@ -321,10 +328,18 @@
 	if(error != kCVReturnSuccess)
 		mp_msg(MSGT_VO, MSGL_ERR,"Failed to create OpenGL texture(%d)\n", error);
 	
+	if(vo_rootwin)
+		[mpGLView rootwin];	
+
+	if(vo_fs)
+		[mpGLView fullscreen: NO];
+	
+	if(vo_ontop)
+		[mpGLView ontop];
+		
 	//show window
-	[window makeKeyAndOrderFront:self];
-	
-	isFullscreen = 0;
+	[window center];
+	[window makeKeyAndOrderFront:mpGLView];
 }
 
 /*