vlc | branch: master | Felix Paul Kühne <[email protected]> | Thu Jul 5 11:57:03 2012 +0200| [2657f3bc2c99d1f399df0e087a872e50dbd9f7f0] | committer: Felix Paul Kühne
vout/ios: set the display size correctly > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=2657f3bc2c99d1f399df0e087a872e50dbd9f7f0 --- modules/video_output/ios.m | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/modules/video_output/ios.m b/modules/video_output/ios.m index ef6293b..f46b1cf 100644 --- a/modules/video_output/ios.m +++ b/modules/video_output/ios.m @@ -1,7 +1,7 @@ /***************************************************************************** * ios.m: iOS X OpenGLES provider ***************************************************************************** - * Copyright (C) 2001-2009 the VideoLAN team + * Copyright (C) 2001-2012 VLC Authors and VideoLAN * $Id$ * * Authors: Romain Goyet <romain.goyet at likid dot org> @@ -40,8 +40,6 @@ #include <vlc_vout_display.h> #include <vlc_opengl.h> -#define USE_OPENGL_ES 1 - #include "opengl.h" /** @@ -181,8 +179,11 @@ static int Open(vlc_object_t *this) vd->control = Control; /* */ + CGRect bounds = sys->glView.layer.bounds; + CGFloat scaleFactor = sys->glView.contentScaleFactor; + /* we need to multiply the bounds dimensions by the scaleFactor to be save for Retina Displays */ vout_display_SendEventFullscreen (vd, false); - vout_display_SendEventDisplaySize (vd, vd->source.i_visible_width, vd->source.i_visible_height, false); + vout_display_SendEventDisplaySize (vd, bounds.size.width * scaleFactor, bounds.size.height * scaleFactor, false); return VLC_SUCCESS; @@ -257,7 +258,7 @@ static int Control (vout_display_t *vd, int query, va_list ap) case VOUT_DISPLAY_CHANGE_SOURCE_ASPECT: case VOUT_DISPLAY_CHANGE_SOURCE_CROP: { - return VLC_EGENERIC; + return VLC_SUCCESS; } case VOUT_DISPLAY_HIDE_MOUSE: return VLC_SUCCESS; @@ -377,6 +378,11 @@ static void OpenglSwap(vlc_gl_t *gl) } } +/* we don't get the correct scale factor if we don't overwrite this method */ +- (void) drawRect: (CGRect) rect +{ +} + @end @implementation VLCOpenGLESVideoView (Private) @@ -429,6 +435,15 @@ static void OpenglSwap(vlc_gl_t *gl) x = width; y = (width * videoHeight * sarDen) / (videoWidth * sarNum); } + + @synchronized (self) + { + vout_display_cfg_t cfg_tmp = *(_vd->cfg); + cfg_tmp.display.width = width; + cfg_tmp.display.height = height; + + vout_display_SendEventDisplaySize (_vd, width, height, false); + } } [EAGLContext setCurrentContext:_context]; _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
