# HG changeset patch # User Sam Lantinga # Date 1230836306 0 # Node ID e384237867285bb29394d3bdf4fab5449a3fa99b # Parent 7dac01628a8bfa2773053be627a4f2ac30882c7c Fixed DirectColor visual window creation problem diff -r 7dac01628a8b -r e38423786728 TODO --- a/TODO Thu Jan 01 18:49:43 2009 +0000 +++ b/TODO Thu Jan 01 18:58:26 2009 +0000 @@ -7,7 +7,6 @@ * Implement icon support (with translucency?) * Add diagonal line clipping to SDL_IntersectRectAndLine() * Add OpenGL 3.0 context support - * Have Bob look at why DirectColor visuals fail with XA_RGB_BEST_MAP error * Verify mouse grab support * Properly handle mouse grab with Vista DPI scaling * Make sure the mouse is where it's supposed to be when un-grabbed diff -r 7dac01628a8b -r e38423786728 src/video/x11/SDL_x11modes.c --- a/src/video/x11/SDL_x11modes.c Thu Jan 01 18:49:43 2009 +0000 +++ b/src/video/x11/SDL_x11modes.c Thu Jan 01 18:58:26 2009 +0000 @@ -32,13 +32,9 @@ get_visualinfo(Display * display, int screen, XVisualInfo * vinfo) { const char *visual_id = SDL_getenv("SDL_VIDEO_X11_VISUALID"); - /* FIXME FIXME FIXME - * Window creation fails in the colormap code on DirectColor visuals: - * XA_RGB_BEST_MAP not found and could not be created - * I'm disabling this for now until Bob can look at it. We don't need - * it until we implement the gamma fading using DirectColor RGB ramps - */ - int use_directcolor = 0; + /* We really don't need DirectColor visuals until we implement + * gamma ramps, but we'll leave it on for now to catch bugs */ + int use_directcolor = 1; int depth; /* Look for an exact visual, if requested */ diff -r 7dac01628a8b -r e38423786728 src/video/x11/SDL_x11window.c --- a/src/video/x11/SDL_x11window.c Thu Jan 01 18:49:43 2009 +0000 +++ b/src/video/x11/SDL_x11window.c Thu Jan 01 18:58:26 2009 +0000 @@ -212,7 +212,7 @@ xattr.background_pixel = 0; xattr.border_pixel = 0; - if (visual->class == DirectColor || visual->class == PseudoColor) { + if (visual->class == PseudoColor) { int nmaps; XStandardColormap cmap; XStandardColormap *stdmaps; @@ -299,6 +299,12 @@ X11_TrackColormap(data->display, displaydata->screen, colormap, &cmap, visual); } + } else if (visual->class == DirectColor) { + /* FIXME: Allocate a read-write colormap for gamma fading someday */ + xattr.colormap = + XCreateColormap(data->display, + RootWindow(data->display, displaydata->screen), + visual, AllocNone); } else { xattr.colormap = XCreateColormap(data->display,