diff -r c1ed57cbfd66 src/video/uikit/SDL_uikitvideo.m --- a/src/video/uikit/SDL_uikitvideo.m Wed Jun 22 10:33:48 2011 +0000 +++ b/src/video/uikit/SDL_uikitvideo.m Mon Jun 27 15:08:15 2011 -0700 @@ -202,7 +202,7 @@ static void -UIKit_AddDisplay(UIScreen *uiscreen, int w, int h) +UIKit_AddDisplay(UIScreen *uiscreen, UIScreenMode *uimode, int w, int h) { SDL_VideoDisplay display; SDL_DisplayMode mode; @@ -211,6 +211,9 @@ mode.w = w; mode.h = h; mode.refresh_rate = 0; + + [uimode retain]; + mode.driverdata = uimode; SDL_zero(display); display.desktop_mode = mode; @@ -238,17 +241,20 @@ if (!SDL_UIKit_supports_multiple_displays) { // Just give 'em the whole main screen. UIScreen *uiscreen = [UIScreen mainScreen]; + UIScreenMode *uiscreenmode = [uiscreen currentMode]; const CGRect rect = [uiscreen bounds]; - UIKit_AddDisplay(uiscreen, (int)rect.size.width, (int)rect.size.height); + UIKit_AddDisplay(uiscreen, uiscreenmode, (int)rect.size.width, (int)rect.size.height); } else { const NSArray *screens = [UIScreen screens]; + const NSUInteger screen_count = [screens count]; NSUInteger i; for (i = 0; i < screen_count; i++) { // the main screen is the first element in the array. UIScreen *uiscreen = (UIScreen *) [screens objectAtIndex:i]; + UIScreenMode *uiscreenmode = [uiscreen currentMode]; const CGSize size = [[uiscreen currentMode] size]; - UIKit_AddDisplay(uiscreen, (int) size.width, (int) size.height); + UIKit_AddDisplay(uiscreen, uiscreenmode, (int)size.width, (int)size.height); } }