changeset 30001:444f843a54ec

Add support for -geometry to corevideo. Based on a patch by Tim Wojtulewicz (timwoj at ieee dot org).
author adrian
date Tue, 15 Dec 2009 20:38:54 +0000
parents a30debd7acd7
children 1d3f9930c663
files DOCS/man/en/mplayer.1 libvo/vo_corevideo.m
diffstat 2 files changed, 13 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/DOCS/man/en/mplayer.1	Tue Dec 15 20:25:50 2009 +0000
+++ b/DOCS/man/en/mplayer.1	Tue Dec 15 20:38:54 2009 +0000
@@ -3138,7 +3138,7 @@
 than the screen.
 The coordinates are relative to the screen given with \-xineramascreen for
 the video output drivers that fully support \-xineramascreen (direct3d, gl, gl2,
-vdpau, x11, xv, xvmc).
+vdpau, x11, xv, xvmc, corevideo).
 .br
 .I NOTE:
 This option is only supported by the x11, xmga, xv, xvmc, xvidix,
--- a/libvo/vo_corevideo.m	Tue Dec 15 20:25:50 2009 +0000
+++ b/libvo/vo_corevideo.m	Tue Dec 15 20:38:54 2009 +0000
@@ -497,16 +497,21 @@
 
 - (void) config
 {
-	uint32_t d_width;
-	uint32_t d_height;
-
-	NSRect frame;
+	NSRect visibleFrame;
 	CVReturn error = kCVReturnSuccess;
 
 	//config window
-	d_width = vo_dwidth; d_height = vo_dheight;
-	frame = NSMakeRect(0, 0, d_width, d_height);
-	[window setContentSize: frame.size];
+	[window setContentSize:NSMakeSize(vo_dwidth, vo_dheight)];
+
+	// Use visibleFrame to position the window taking the menu bar and dock into account.
+	// Also flip vo_dy since the screen origin is in the bottom left on OSX.
+	if (screen_id < 0)
+		visibleFrame = [[[mpGLView window] screen] visibleFrame];
+	else
+		visibleFrame = [[[NSScreen screens] objectAtIndex:screen_id] visibleFrame];
+	[window setFrameTopLeftPoint:NSMakePoint(
+		visibleFrame.origin.x + vo_dx,
+		visibleFrame.origin.y + visibleFrame.size.height - vo_dy)];
 
 	[self releaseVideoSpecific];
 	error = CVPixelBufferCreateWithBytes(NULL, image_width, image_height, pixelFormat, image_datas[0], image_width*image_bytes, NULL, NULL, NULL, &frameBuffers[0]);
@@ -523,7 +528,6 @@
 		mp_msg(MSGT_VO, MSGL_ERR,"[vo_corevideo] Failed to create OpenGL texture(%d)\n", error);
 
 	//show window
-	[window center];
 	[window makeKeyAndOrderFront:mpGLView];
 
 	if(vo_rootwin)