| | |
| | | #include "SDL_assert.h" |
| | | #include "SDL_uikitmodes.h" |
| | | |
| | | #include "../../events/SDL_events_c.h" |
| | | |
| | | @implementation SDL_DisplayData |
| | | |
| | | @synthesize uiscreen; |
| | |
| | | return -1; |
| | | } |
| | | } |
| | | #if !TARGET_OS_TV |
| | | SDL_OnApplicationDidChangeStatusBarOrientation(); |
| | | #endif |
| | | } |
| | | |
| | | return 0; |
| | |
| | | } |
| | | } |
| | | |
| | | #if !TARGET_OS_TV |
| | | void SDL_OnApplicationDidChangeStatusBarOrientation() |
| | | { |
| | | BOOL isLandscape = UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation); |
| | | SDL_VideoDisplay *display = SDL_GetDisplay(0); |
| | | |
| | | if (display) { |
| | | SDL_DisplayMode *desktopmode = &display->desktop_mode; |
| | | SDL_DisplayMode *currentmode = &display->current_mode; |
| | | SDL_DisplayOrientation orientation = SDL_ORIENTATION_UNKNOWN; |
| | | |
| | | /* The desktop display mode should be kept in sync with the screen |
| | | * orientation so that updating a window's fullscreen state to |
| | | * SDL_WINDOW_FULLSCREEN_DESKTOP keeps the window dimensions in the |
| | | * correct orientation. */ |
| | | if (isLandscape != (desktopmode->w > desktopmode->h)) { |
| | | int height = desktopmode->w; |
| | | desktopmode->w = desktopmode->h; |
| | | desktopmode->h = height; |
| | | } |
| | | |
| | | /* Same deal with the current mode + SDL_GetCurrentDisplayMode. */ |
| | | if (isLandscape != (currentmode->w > currentmode->h)) { |
| | | int height = currentmode->w; |
| | | currentmode->w = currentmode->h; |
| | | currentmode->h = height; |
| | | } |
| | | |
| | | switch ([UIApplication sharedApplication].statusBarOrientation) { |
| | | case UIInterfaceOrientationPortrait: |
| | | orientation = SDL_ORIENTATION_PORTRAIT; |
| | | break; |
| | | case UIInterfaceOrientationPortraitUpsideDown: |
| | | orientation = SDL_ORIENTATION_PORTRAIT_FLIPPED; |
| | | break; |
| | | case UIInterfaceOrientationLandscapeLeft: |
| | | /* Bug: UIInterfaceOrientationLandscapeLeft/Right are reversed - http://openradar.appspot.com/7216046 */ |
| | | orientation = SDL_ORIENTATION_LANDSCAPE_FLIPPED; |
| | | break; |
| | | case UIInterfaceOrientationLandscapeRight: |
| | | /* Bug: UIInterfaceOrientationLandscapeLeft/Right are reversed - http://openradar.appspot.com/7216046 */ |
| | | orientation = SDL_ORIENTATION_LANDSCAPE; |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | SDL_SendDisplayEvent(display, SDL_DISPLAYEVENT_ORIENTATION, orientation); |
| | | } |
| | | } |
| | | #endif /* !TARGET_OS_TV */ |
| | | |
| | | #endif /* SDL_VIDEO_DRIVER_UIKIT */ |
| | | |
| | | /* vi: set ts=4 sw=4 expandtab: */ |