Mercurial > sdl-ios-xcode
comparison src/video/win32/SDL_win32window.c @ 1913:83420da906a5
Implemented Windows OpenGL support
Fixed slowdown enumerating display modes, which was hosing OpenGL as well...
Removed SDL_ from the render driver prefixes
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Mon, 17 Jul 2006 06:47:33 +0000 |
parents | c121d94672cb |
children | 7177581dc9fa |
comparison
equal
deleted
inserted
replaced
1912:8d384b647307 | 1913:83420da906a5 |
---|---|
41 SDL_OutOfMemory(); | 41 SDL_OutOfMemory(); |
42 return -1; | 42 return -1; |
43 } | 43 } |
44 data->windowID = window->id; | 44 data->windowID = window->id; |
45 data->hwnd = hwnd; | 45 data->hwnd = hwnd; |
46 data->hdc = GetDC(hwnd); | |
46 data->created = created; | 47 data->created = created; |
47 data->mouse_pressed = SDL_FALSE; | 48 data->mouse_pressed = SDL_FALSE; |
48 data->videodata = (SDL_VideoData *) SDL_GetVideoDevice()->driverdata; | 49 data->videodata = (SDL_VideoData *) SDL_GetVideoDevice()->driverdata; |
49 | 50 |
50 /* Associate the data with the window */ | 51 /* Associate the data with the window */ |
51 if (!SetProp(hwnd, TEXT("SDL_WindowData"), data)) { | 52 if (!SetProp(hwnd, TEXT("SDL_WindowData"), data)) { |
53 ReleaseDC(hwnd, data->hdc); | |
52 SDL_free(data); | 54 SDL_free(data); |
53 WIN_SetError("SetProp() failed"); | 55 WIN_SetError("SetProp() failed"); |
54 return -1; | 56 return -1; |
55 } | 57 } |
56 | 58 |
131 { | 133 { |
132 HWND hwnd; | 134 HWND hwnd; |
133 LPTSTR title = NULL; | 135 LPTSTR title = NULL; |
134 HWND top; | 136 HWND top; |
135 RECT rect; | 137 RECT rect; |
136 DWORD style = 0; | 138 DWORD style = (WS_CLIPSIBLINGS | WS_CLIPCHILDREN); |
137 int x, y; | 139 int x, y; |
138 int w, h; | 140 int w, h; |
139 | 141 |
140 if (window->title) { | 142 if (window->title) { |
141 title = WIN_UTF8ToString(window->title); | 143 title = WIN_UTF8ToString(window->title); |
208 | 210 |
209 if (SetupWindowData(window, hwnd, TRUE) < 0) { | 211 if (SetupWindowData(window, hwnd, TRUE) < 0) { |
210 DestroyWindow(hwnd); | 212 DestroyWindow(hwnd); |
211 return -1; | 213 return -1; |
212 } | 214 } |
215 #ifdef SDL_VIDEO_OPENGL | |
216 if (window->flags & SDL_WINDOW_OPENGL) { | |
217 if (WIN_GL_SetupWindow(_this, window) < 0) { | |
218 WIN_DestroyWindow(_this, window); | |
219 return -1; | |
220 } | |
221 } | |
222 #endif | |
213 return 0; | 223 return 0; |
214 } | 224 } |
215 | 225 |
216 int | 226 int |
217 WIN_CreateWindowFrom(_THIS, SDL_Window * window, const void *data) | 227 WIN_CreateWindowFrom(_THIS, SDL_Window * window, const void *data) |
406 WIN_DestroyWindow(_THIS, SDL_Window * window) | 416 WIN_DestroyWindow(_THIS, SDL_Window * window) |
407 { | 417 { |
408 SDL_WindowData *data = (SDL_WindowData *) window->driverdata; | 418 SDL_WindowData *data = (SDL_WindowData *) window->driverdata; |
409 | 419 |
410 if (data) { | 420 if (data) { |
421 #ifdef SDL_VIDEO_OPENGL | |
422 if (window->flags & SDL_WINDOW_OPENGL) { | |
423 WIN_GL_CleanupWindow(_this, window); | |
424 } | |
425 #endif | |
426 ReleaseDC(data->hwnd, data->hdc); | |
411 if (data->created) { | 427 if (data->created) { |
412 DestroyWindow(data->hwnd); | 428 DestroyWindow(data->hwnd); |
413 } | 429 } |
414 SDL_free(data); | 430 SDL_free(data); |
415 } | 431 } |