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)
 {