Updated support for external video output on the iPad
This commit is contained in:
parent
72cdf43759
commit
e4c54831a2
1 changed files with 36 additions and 38 deletions
|
@ -76,25 +76,30 @@ static int SetupWindowData(_THIS, SDL_Window *window, UIWindow *uiwindow, SDL_bo
|
||||||
int width = (int)(bounds.size.width * displaymodedata->scale);
|
int width = (int)(bounds.size.width * displaymodedata->scale);
|
||||||
int height = (int)(bounds.size.height * displaymodedata->scale);
|
int height = (int)(bounds.size.height * displaymodedata->scale);
|
||||||
|
|
||||||
/* We can pick either width or height here and we'll rotate the
|
if ([UIScreen mainScreen] == displaydata->uiscreen) {
|
||||||
screen to match, so we pick the closest to what we wanted.
|
/* We can pick either width or height here and we'll rotate the
|
||||||
*/
|
screen to match, so we pick the closest to what we wanted.
|
||||||
if (window->w >= window->h) {
|
*/
|
||||||
if (width > height) {
|
if (window->w >= window->h) {
|
||||||
window->w = width;
|
if (width > height) {
|
||||||
window->h = height;
|
window->w = width;
|
||||||
|
window->h = height;
|
||||||
|
} else {
|
||||||
|
window->w = height;
|
||||||
|
window->h = width;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
window->w = height;
|
if (width > height) {
|
||||||
window->h = width;
|
window->w = height;
|
||||||
|
window->h = width;
|
||||||
|
} else {
|
||||||
|
window->w = width;
|
||||||
|
window->h = height;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (width > height) {
|
window->w = width;
|
||||||
window->w = height;
|
window->h = height;
|
||||||
window->h = width;
|
|
||||||
} else {
|
|
||||||
window->w = width;
|
|
||||||
window->h = height;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -106,11 +111,7 @@ static int SetupWindowData(_THIS, SDL_Window *window, UIWindow *uiwindow, SDL_bo
|
||||||
// SDL_WINDOW_BORDERLESS controls whether status bar is hidden.
|
// SDL_WINDOW_BORDERLESS controls whether status bar is hidden.
|
||||||
// This is only set if the window is on the main screen. Other screens
|
// This is only set if the window is on the main screen. Other screens
|
||||||
// just force the window to have the borderless flag.
|
// just force the window to have the borderless flag.
|
||||||
if ([UIScreen mainScreen] != displaydata->uiscreen) {
|
if ([UIScreen mainScreen] == displaydata->uiscreen) {
|
||||||
window->flags &= ~SDL_WINDOW_RESIZABLE; // window is NEVER resizeable
|
|
||||||
window->flags &= ~SDL_WINDOW_INPUT_FOCUS; // never has input focus
|
|
||||||
window->flags |= SDL_WINDOW_BORDERLESS; // never has a status bar.
|
|
||||||
} else {
|
|
||||||
window->flags |= SDL_WINDOW_INPUT_FOCUS; // always has input focus
|
window->flags |= SDL_WINDOW_INPUT_FOCUS; // always has input focus
|
||||||
|
|
||||||
if (window->flags & (SDL_WINDOW_FULLSCREEN|SDL_WINDOW_BORDERLESS)) {
|
if (window->flags & (SDL_WINDOW_FULLSCREEN|SDL_WINDOW_BORDERLESS)) {
|
||||||
|
@ -118,16 +119,20 @@ static int SetupWindowData(_THIS, SDL_Window *window, UIWindow *uiwindow, SDL_bo
|
||||||
} else {
|
} else {
|
||||||
[UIApplication sharedApplication].statusBarHidden = NO;
|
[UIApplication sharedApplication].statusBarHidden = NO;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
// The View Controller will handle rotating the view when the
|
window->flags &= ~SDL_WINDOW_RESIZABLE; // window is NEVER resizeable
|
||||||
// device orientation changes. This will trigger resize events, if
|
window->flags &= ~SDL_WINDOW_INPUT_FOCUS; // never has input focus
|
||||||
// appropriate.
|
window->flags |= SDL_WINDOW_BORDERLESS; // never has a status bar.
|
||||||
SDL_uikitviewcontroller *controller;
|
|
||||||
controller = [SDL_uikitviewcontroller alloc];
|
|
||||||
data->viewcontroller = [controller initWithSDLWindow:window];
|
|
||||||
[data->viewcontroller setTitle:@"SDL App"]; // !!! FIXME: hook up SDL_SetWindowTitle()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// The View Controller will handle rotating the view when the
|
||||||
|
// device orientation changes. This will trigger resize events, if
|
||||||
|
// appropriate.
|
||||||
|
SDL_uikitviewcontroller *controller;
|
||||||
|
controller = [SDL_uikitviewcontroller alloc];
|
||||||
|
data->viewcontroller = [controller initWithSDLWindow:window];
|
||||||
|
[data->viewcontroller setTitle:@"SDL App"]; // !!! FIXME: hook up SDL_SetWindowTitle()
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -147,13 +152,6 @@ UIKit_CreateWindow(_THIS, SDL_Window *window)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Non-mainscreen windows must be force to borderless, as there's no
|
|
||||||
// status bar there, and we want to get the right dimensions later in
|
|
||||||
// this function.
|
|
||||||
if (external) {
|
|
||||||
window->flags |= SDL_WINDOW_BORDERLESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If monitor has a resolution of 0x0 (hasn't been explicitly set by the
|
// If monitor has a resolution of 0x0 (hasn't been explicitly set by the
|
||||||
// user, so it's in standby), try to force the display to a resolution
|
// user, so it's in standby), try to force the display to a resolution
|
||||||
// that most closely matches the desired window size.
|
// that most closely matches the desired window size.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue