Mercurial > sdl-ios-xcode
diff src/video/x11/SDL_x11gamma.c @ 2213:59a667370c57
make indent
author | Bob Pendleton <bob@pendleton.com> |
---|---|
date | Tue, 24 Jul 2007 18:46:45 +0000 |
parents | 9462f4408ecb |
children | e7164a4dac62 |
line wrap: on
line diff
--- a/src/video/x11/SDL_x11gamma.c Mon Jul 23 18:46:09 2007 +0000 +++ b/src/video/x11/SDL_x11gamma.c Tue Jul 24 18:46:45 2007 +0000 @@ -23,6 +23,64 @@ #include "../SDL_sysvideo.h" #include "SDL_x11video.h" +static int numCmaps = 0; + +typedef struct +{ + Display *display; + int scrNum; + XStandardColormap cmap; + Visual visual; +} cmapTableEntry; + +cmapTableEntry *cmapTable = NULL; + +void +X11_TrackColormap(Display * display, int scrNum, + XStandardColormap * cmap, Visual * visual) +{ + int i; + cmapTableEntry *newTable = NULL; + + /* only tracking DirectColor colormaps because they're the only ones + with gamma ramps */ + if (DirectColor != visual->class) { + return; + } + + /* search the table to find out if we already have this one. We only + want one entry for each display, screen number, visualid + combination */ + for (i = 0; i < numCmaps; i++) { + if (cmapTable[i].display == display && + cmapTable[i].scrNum == scrNum && + cmapTable[i].cmap.visualid == cmap->visualid) { + return; + } + } + + /* increase the table by one entry. If the table is NULL create the + first entrty */ + newTable = SDL_malloc((numCmaps + 1) * sizeof(cmapTableEntry)); + if (NULL == newTable) { + SDL_SetError("Out of memory in X11_TrackColormap()"); + return; + } + + if (NULL != cmapTable) { + SDL_memcpy(newTable, cmapTable, numCmaps * sizeof(cmapTableEntry)); + SDL_free(cmapTable); + } + cmapTable = newTable; + + cmapTable[numCmaps].display = display; + cmapTable[numCmaps].scrNum = scrNum; + SDL_memcpy(&cmapTable[numCmaps].cmap, cmap, sizeof(XStandardColormap)); + SDL_memcpy(&cmapTable[numCmaps].visual, visual, sizeof(Visual)); + + numCmaps++; +} + int X11_SetDisplayGammaRamp(_THIS, Uint16 * ramp) {