vlc | branch: master | Felix Paul Kühne <[email protected]> | Tue Jun 12 18:50:48 2012 +0200| [af3a690427169763749987475727b0e37a6b6211] | committer: Felix Paul Kühne
vout_macosx: added HiDPI support > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=af3a690427169763749987475727b0e37a6b6211 --- modules/video_output/macosx.m | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/modules/video_output/macosx.m b/modules/video_output/macosx.m index 4cc86c7..0fe6041 100644 --- a/modules/video_output/macosx.m +++ b/modules/video_output/macosx.m @@ -389,7 +389,12 @@ static int Control (vout_display_t *vd, int query, va_list ap) if (!config_GetInt(vd, "macosx-video-autoresize")) { - NSRect bounds = [sys->glView bounds]; + NSRect bounds; + /* on HiDPI displays, the point bounds don't equal the actual pixel based bounds */ + if ([sys->glView respondsToSelector:@selector(convertRectToBacking:)]) + bounds = [sys->glView convertRectToBacking:[sys->glView bounds]]; + else + bounds = [sys->glView bounds]; cfg_tmp.display.width = bounds.size.width; cfg_tmp.display.height = bounds.size.height; } @@ -506,6 +511,10 @@ static void OpenglSwap (vlc_gl_t *gl) if (!self) return nil; + /* enable HiDPI support on OS X 10.7 and later */ + if ([self respondsToSelector:@selector(setWantsBestResolutionOpenGLSurface:)]) + [self setWantsBestResolutionOpenGLSurface:YES]; + /* Swap buffers only during the vertical retrace of the monitor. http://developer.apple.com/documentation/GraphicsImaging/ Conceptual/OpenGL/chap5/chapter_5_section_44.html */ @@ -522,7 +531,13 @@ static void OpenglSwap (vlc_gl_t *gl) - (void)setFrameToBoundsOfView:(NSValue *)value { NSView *parentView = [value pointerValue]; - [self setFrame:[parentView bounds]]; + NSRect frame; + /* on HiDPI displays, the point bounds don't equal the actual pixel based bounds */ + if ([parentView respondsToSelector:@selector(convertRectToBacking:)]) + frame = [parentView convertRectToBacking:[parentView bounds]]; + else + frame = [parentView bounds]; + [self setFrame:frame]; } /** @@ -618,7 +633,12 @@ static void OpenglSwap (vlc_gl_t *gl) { VLCAssertMainThread(); - NSRect bounds = [self bounds]; + NSRect bounds; + /* on HiDPI displays, the point bounds don't equal the actual pixel based bounds */ + if ([self respondsToSelector:@selector(convertRectToBacking:)]) + bounds = [self convertRectToBacking:[self bounds]]; + else + bounds = [self bounds]; vout_display_place_t place; @synchronized(self) { @@ -752,7 +772,11 @@ static void OpenglSwap (vlc_gl_t *gl) NSRect s_rect; BOOL b_inside; - s_rect = [self bounds]; + /* on HiDPI displays, the point bounds don't equal the actual pixel based bounds */ + if ([self respondsToSelector:@selector(convertRectToBacking:)]) + s_rect = [self convertRectToBacking:[self bounds]]; + else + s_rect = [self bounds]; ml = [self convertPoint: [o_event locationInWindow] fromView: nil]; b_inside = [self mouse: ml inRect: s_rect]; _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
