# HG changeset patch # User Bob Pendleton # Date 1204910437 0 # Node ID 3202e4826c578ffbaf1d46ee92a863da4b2e0a77 # Parent 4ac07ae446d34dc6d96b213de9d7319827f77f55 more valgrind errors fixed. Plus I ran make indent which changed a few files. diff -r 4ac07ae446d3 -r 3202e4826c57 src/video/SDL_video.c --- a/src/video/SDL_video.c Thu Mar 06 23:07:02 2008 +0000 +++ b/src/video/SDL_video.c Fri Mar 07 17:20:37 2008 +0000 @@ -2190,6 +2190,11 @@ display->windows = NULL; } display->num_windows = 0; + if (display->render_drivers) { + SDL_free(display->render_drivers); + display->render_drivers = NULL; + } + display->num_render_drivers = 0; } _this->VideoQuit(_this); diff -r 4ac07ae446d3 -r 3202e4826c57 src/video/win32/SDL_win32events.c --- a/src/video/win32/SDL_win32events.c Thu Mar 06 23:07:02 2008 +0000 +++ b/src/video/win32/SDL_win32events.c Fri Mar 07 17:20:37 2008 +0000 @@ -36,7 +36,7 @@ #define REPEATED_KEYMASK (1<<30) #define EXTENDED_KEYMASK (1<<24) -#define VK_ENTER 10 /* Keypad Enter ... no VKEY defined? */ +#define VK_ENTER 10 /* Keypad Enter ... no VKEY defined? */ /* Make sure XBUTTON stuff is defined that isn't in older Platform SDKs... */ #ifndef WM_XBUTTONDOWN @@ -53,7 +53,7 @@ RemapVKEY(WPARAM wParam, LPARAM lParam) { int i; - BYTE scancode = (BYTE)((lParam >> 16) & 0xFF); + BYTE scancode = (BYTE) ((lParam >> 16) & 0xFF); /* Windows remaps alphabetic keys based on current layout. We try to provide USB scancodes, so undo this mapping. @@ -72,7 +72,7 @@ /* Keypad keys are a little trickier, we always scan for them. */ for (i = 0; i < SDL_arraysize(keypad_scancodes); ++i) { if (scancode == keypad_scancodes[i]) { - wParam = VK_NUMPAD0+i; + wParam = VK_NUMPAD0 + i; break; } } diff -r 4ac07ae446d3 -r 3202e4826c57 src/video/win32/SDL_win32keyboard.c --- a/src/video/win32/SDL_win32keyboard.c Thu Mar 06 23:07:02 2008 +0000 +++ b/src/video/win32/SDL_win32keyboard.c Fri Mar 07 17:20:37 2008 +0000 @@ -53,18 +53,21 @@ int i; /* Make sure the alpha scancodes are correct. T isn't usually remapped */ - if (MapVirtualKey('T', MAPVK_VK_TO_VSC) != alpha_scancodes['T'-'A']) { -printf("Fixing alpha scancode map, assuming US QWERTY layout!\nPlease send the following 26 lines of output to the SDL mailing list , including a description of your keyboard hardware.\n"); + if (MapVirtualKey('T', MAPVK_VK_TO_VSC) != alpha_scancodes['T' - 'A']) { + printf + ("Fixing alpha scancode map, assuming US QWERTY layout!\nPlease send the following 26 lines of output to the SDL mailing list , including a description of your keyboard hardware.\n"); for (i = 0; i < SDL_arraysize(alpha_scancodes); ++i) { - alpha_scancodes[i] = MapVirtualKey('A'+i, MAPVK_VK_TO_VSC); -printf("%d = %d\n", i, alpha_scancodes[i]); + alpha_scancodes[i] = MapVirtualKey('A' + i, MAPVK_VK_TO_VSC); + printf("%d = %d\n", i, alpha_scancodes[i]); } } if (MapVirtualKey(VK_NUMPAD0, MAPVK_VK_TO_VSC) != keypad_scancodes[0]) { -printf("Fixing keypad scancode map!\nPlease send the following 10 lines of output to the SDL mailing list , including a description of your keyboard hardware.\n"); + printf + ("Fixing keypad scancode map!\nPlease send the following 10 lines of output to the SDL mailing list , including a description of your keyboard hardware.\n"); for (i = 0; i < SDL_arraysize(keypad_scancodes); ++i) { - keypad_scancodes[i] = MapVirtualKey(VK_NUMPAD0+i, MAPVK_VK_TO_VSC); -printf("%d = %d\n", i, keypad_scancodes[i]); + keypad_scancodes[i] = + MapVirtualKey(VK_NUMPAD0 + i, MAPVK_VK_TO_VSC); + printf("%d = %d\n", i, keypad_scancodes[i]); } } @@ -99,7 +102,7 @@ /* Alphabetic keys are handled specially, since Windows remaps them */ if (i >= 'A' && i <= 'Z') { - BYTE vsc = alpha_scancodes[i-'A']; + BYTE vsc = alpha_scancodes[i - 'A']; keymap[scancode] = MapVirtualKey(vsc, MAPVK_VSC_TO_VK) + 0x20; } else { keymap[scancode] = (MapVirtualKey(i, MAPVK_VK_TO_CHAR) & 0x7FFF); diff -r 4ac07ae446d3 -r 3202e4826c57 src/video/x11/SDL_x11events.c --- a/src/video/x11/SDL_x11events.c Thu Mar 06 23:07:02 2008 +0000 +++ b/src/video/x11/SDL_x11events.c Fri Mar 07 17:20:37 2008 +0000 @@ -51,15 +51,14 @@ } data = NULL; - if (videodata && - videodata->windowlist) { - for (i = 0; i < videodata->numwindows; ++i) { - if ((videodata->windowlist[i] != NULL) && - (videodata->windowlist[i]->window == xevent.xany.window)) { - data = videodata->windowlist[i]; - break; + if (videodata && videodata->windowlist) { + for (i = 0; i < videodata->numwindows; ++i) { + if ((videodata->windowlist[i] != NULL) && + (videodata->windowlist[i]->window == xevent.xany.window)) { + data = videodata->windowlist[i]; + break; + } } - } } if (!data) { return; diff -r 4ac07ae446d3 -r 3202e4826c57 src/video/x11/SDL_x11opengl.c --- a/src/video/x11/SDL_x11opengl.c Thu Mar 06 23:07:02 2008 +0000 +++ b/src/video/x11/SDL_x11opengl.c Fri Mar 07 17:20:37 2008 +0000 @@ -281,19 +281,19 @@ X11_GL_Initialize(_THIS) { - if (X11_GL_InitializeMemory(_this) < 0) { - return -1; - } - ++_this->gl_data->initialized; + if (X11_GL_InitializeMemory(_this) < 0) { + return -1; + } + ++_this->gl_data->initialized; - if (X11_GL_LoadLibrary(_this, NULL) < 0) { - return -1; - } + if (X11_GL_LoadLibrary(_this, NULL) < 0) { + return -1; + } - /* Initialize extensions */ - X11_GL_InitExtensions(_this); + /* Initialize extensions */ + X11_GL_InitExtensions(_this); - return 0; + return 0; } void @@ -523,6 +523,7 @@ GLXContext glx_context = (GLXContext) context; _this->gl_data->glXDestroyContext(display, glx_context); + XSync(display, False); } #endif /* SDL_VIDEO_OPENGL_GLX */ diff -r 4ac07ae446d3 -r 3202e4826c57 src/video/x11/SDL_x11video.c --- a/src/video/x11/SDL_x11video.c Thu Mar 06 23:07:02 2008 +0000 +++ b/src/video/x11/SDL_x11video.c Fri Mar 07 17:20:37 2008 +0000 @@ -101,6 +101,7 @@ if (data->display) { XCloseDisplay(data->display); } + SDL_free(data->windowlist); SDL_free(device->driverdata); SDL_free(device); diff -r 4ac07ae446d3 -r 3202e4826c57 src/video/x11/SDL_x11video.h --- a/src/video/x11/SDL_x11video.h Thu Mar 06 23:07:02 2008 +0000 +++ b/src/video/x11/SDL_x11video.h Fri Mar 07 17:20:37 2008 +0000 @@ -67,6 +67,7 @@ BOOL dpms_enabled; int numwindows; SDL_WindowData **windowlist; + int windowlistlength; int mouse; int keyboard; Atom WM_DELETE_WINDOW; diff -r 4ac07ae446d3 -r 3202e4826c57 src/video/x11/SDL_x11window.c --- a/src/video/x11/SDL_x11window.c Thu Mar 06 23:07:02 2008 +0000 +++ b/src/video/x11/SDL_x11window.c Fri Mar 07 17:20:37 2008 +0000 @@ -34,8 +34,8 @@ SDL_VideoData *videodata = (SDL_VideoData *) _this->driverdata; SDL_WindowData *data; int numwindows = videodata->numwindows; + int windowlistlength = videodata->windowlistlength; SDL_WindowData **windowlist = videodata->windowlist; - int i; int index; /* Allocate the window data */ @@ -59,30 +59,24 @@ data->videodata = videodata; /* Associate the data with the window */ - index = -1; - if (windowlist) { - for (i = 0; i < numwindows; ++i) { - if (windowlist[i] == NULL) { - index = i; - break; + + if (numwindows < windowlistlength) { + windowlist[numwindows] = data; + videodata->numwindows++; + } else { + windowlist = + (SDL_WindowData **) SDL_realloc(windowlist, + (numwindows + + 1) * sizeof(*windowlist)); + if (!windowlist) { + SDL_OutOfMemory(); + SDL_free(data); + return -1; } - } - } - - if (index >= 0) { - windowlist[index] = data; - } else { - windowlist = - (SDL_WindowData **) SDL_realloc(windowlist, - (numwindows + 1) * sizeof(*windowlist)); - if (!windowlist) { - SDL_OutOfMemory(); - SDL_free(data); - return -1; - } - windowlist[numwindows++] = data; - videodata->numwindows = numwindows; - videodata->windowlist = windowlist; + windowlist[numwindows] = data; + videodata->numwindows++; + videodata->windowlistlength++; + videodata->windowlist = windowlist; } /* Fill in the SDL window with the window data */ @@ -494,7 +488,7 @@ } int -X11_CreateWindowFrom(_THIS, SDL_Window *window, const void *data) +X11_CreateWindowFrom(_THIS, SDL_Window * window, const void *data) { Window w = (Window) data; @@ -665,13 +659,14 @@ int i; if (windowlist) { - for (i = 0; i < numwindows; ++i) { - if (windowlist[i] && - (windowlist[i]->windowID == window->id)) { - windowlist[i] = NULL; - break; + for (i = 0; i < numwindows; ++i) { + if (windowlist[i] && (windowlist[i]->windowID == window->id)) { + windowlist[i] = windowlist[numwindows - 1]; + windowlist[numwindows - 1] = NULL; + videodata->numwindows--; + break; + } } - } } #ifdef SDL_VIDEO_OPENGL_GLX if (window->flags & SDL_WINDOW_OPENGL) {