Mercurial > sdl-ios-xcode
diff src/video/uikit/SDL_uikitwindow.m @ 3685:64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Thu, 21 Jan 2010 06:21:52 +0000 |
parents | 4ec48602f1db |
children | 8b03a20b320f |
line wrap: on
line diff
--- a/src/video/uikit/SDL_uikitwindow.m Thu Jan 21 05:49:41 2010 +0000 +++ b/src/video/uikit/SDL_uikitwindow.m Thu Jan 21 06:21:52 2010 +0000 @@ -41,83 +41,82 @@ static int SetupWindowData(_THIS, SDL_Window *window, UIWindow *uiwindow, SDL_bool created) { SDL_WindowData *data; - + /* Allocate the window data */ data = (SDL_WindowData *)SDL_malloc(sizeof(*data)); if (!data) { SDL_OutOfMemory(); return -1; } - data->windowID = window->id; + data->window = window; data->uiwindow = uiwindow; - data->view = nil; - + data->view = nil; + /* Fill in the SDL window with the window data */ - { + { window->x = 0; window->y = 0; window->w = (int)uiwindow.frame.size.width; window->h = (int)uiwindow.frame.size.height; } - - window->driverdata = data; - - window->flags &= ~SDL_WINDOW_RESIZABLE; /* window is NEVER resizeable */ - window->flags |= SDL_WINDOW_OPENGL; /* window is always OpenGL */ - window->flags |= SDL_WINDOW_FULLSCREEN; /* window is always fullscreen */ - window->flags |= SDL_WINDOW_SHOWN; /* only one window on iPod touch, always shown */ - window->flags |= SDL_WINDOW_INPUT_FOCUS; /* always has input focus */ + + window->driverdata = data; + + window->flags &= ~SDL_WINDOW_RESIZABLE; /* window is NEVER resizeable */ + window->flags |= SDL_WINDOW_OPENGL; /* window is always OpenGL */ + window->flags |= SDL_WINDOW_FULLSCREEN; /* window is always fullscreen */ + window->flags |= SDL_WINDOW_SHOWN; /* only one window on iPod touch, always shown */ + window->flags |= SDL_WINDOW_INPUT_FOCUS; /* always has input focus */ - /* SDL_WINDOW_BORDERLESS controls whether status bar is hidden */ - if (window->flags & SDL_WINDOW_BORDERLESS) { - [UIApplication sharedApplication].statusBarHidden = YES; - } - else { - [UIApplication sharedApplication].statusBarHidden = NO; - } - + /* SDL_WINDOW_BORDERLESS controls whether status bar is hidden */ + if (window->flags & SDL_WINDOW_BORDERLESS) { + [UIApplication sharedApplication].statusBarHidden = YES; + } + else { + [UIApplication sharedApplication].statusBarHidden = NO; + } + return 0; - + } int UIKit_CreateWindow(_THIS, SDL_Window *window) { - - /* We currently only handle single window applications on iPhone */ - if (nil != [SDLUIKitDelegate sharedAppDelegate].window) { - SDL_SetError("Window already exists, no multi-window support."); - return -1; - } - - /* ignore the size user requested, and make a fullscreen window */ - UIWindow *uiwindow = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; - - if (SetupWindowData(_this, window, uiwindow, SDL_TRUE) < 0) { + + /* We currently only handle single window applications on iPhone */ + if (nil != [SDLUIKitDelegate sharedAppDelegate].window) { + SDL_SetError("Window already exists, no multi-window support."); + return -1; + } + + /* ignore the size user requested, and make a fullscreen window */ + UIWindow *uiwindow = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; + + if (SetupWindowData(_this, window, uiwindow, SDL_TRUE) < 0) { [uiwindow release]; return -1; - } - - // This saves the main window in the app delegate so event callbacks can do stuff on the window. - // This assumes a single window application design and needs to be fixed for multiple windows. - [SDLUIKitDelegate sharedAppDelegate].window = uiwindow; - [SDLUIKitDelegate sharedAppDelegate].windowID = window->id; - [uiwindow release]; /* release the window (the app delegate has retained it) */ - - return 1; - + } + + // This saves the main window in the app delegate so event callbacks can do stuff on the window. + // This assumes a single window application design and needs to be fixed for multiple windows. + [SDLUIKitDelegate sharedAppDelegate].window = window; + [SDLUIKitDelegate sharedAppDelegate].uiwindow = uiwindow; + [uiwindow release]; /* release the window (the app delegate has retained it) */ + + return 1; + } void UIKit_DestroyWindow(_THIS, SDL_Window * window) { - /* don't worry, the delegate will automatically release the window */ - - SDL_WindowData *data = (SDL_WindowData *)window->driverdata; - if (data) { - SDL_free( window->driverdata ); - } + /* don't worry, the delegate will automatically release the window */ + + SDL_WindowData *data = (SDL_WindowData *)window->driverdata; + if (data) { + SDL_free( window->driverdata ); + } - /* this will also destroy the window */ - [SDLUIKitDelegate sharedAppDelegate].window = nil; - [SDLUIKitDelegate sharedAppDelegate].windowID = 0; - + /* this will also destroy the window */ + [SDLUIKitDelegate sharedAppDelegate].window = NULL; + [SDLUIKitDelegate sharedAppDelegate].uiwindow = nil; } /* vi: set ts=4 sw=4 expandtab: */