summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoradrian <adrian@b3059339-0415-0410-9bf9-f77b7e298cf2>2009-12-15 20:38:54 +0000
committeradrian <adrian@b3059339-0415-0410-9bf9-f77b7e298cf2>2009-12-15 20:38:54 +0000
commit2a33cd01f6d969600a56e9ea28d1504be7e7eafd (patch)
tree362245785d142d15ef346e421c9f3ff873fcb0d4
parent5f0b5dcaa96326512835afbae46c30aeaa164b13 (diff)
downloadmpv-2a33cd01f6d969600a56e9ea28d1504be7e7eafd.tar.bz2
mpv-2a33cd01f6d969600a56e9ea28d1504be7e7eafd.tar.xz
Add support for -geometry to corevideo.
Based on a patch by Tim Wojtulewicz (timwoj at ieee dot org). git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30043 b3059339-0415-0410-9bf9-f77b7e298cf2
-rw-r--r--DOCS/man/en/mplayer.12
-rw-r--r--libvo/vo_corevideo.m20
2 files changed, 13 insertions, 9 deletions
diff --git a/DOCS/man/en/mplayer.1 b/DOCS/man/en/mplayer.1
index f4e1863879..37165f480d 100644
--- a/DOCS/man/en/mplayer.1
+++ b/DOCS/man/en/mplayer.1
@@ -3138,7 +3138,7 @@ y coordinates are relative to the top-left corner of the window rather
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,
diff --git a/libvo/vo_corevideo.m b/libvo/vo_corevideo.m
index f2b29edfd2..5d25b088f4 100644
--- a/libvo/vo_corevideo.m
+++ b/libvo/vo_corevideo.m
@@ -497,16 +497,21 @@ static int control(uint32_t request, void *data, ...)
- (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 @@ static int control(uint32_t request, void *data, ...)
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)