# HG changeset patch # User Sam Lantinga # Date 1254091294 0 # Node ID 8afecb86be35e8e26365a1c0c7af99a669e4547b # Parent b0c979816d67e4977e4633a84103132ed18bee83 Fixed bug #616 rainer canavan 2009-03-29 12:30:12 PDT add default visual to this->hidden->visuals X11_SetIcon appears to have problems getting the correct bpp for the default visual of my screen. With larger icons, this causes a segfault somewhere in libX11. Instead of adding the default visual to the internal list, I can work around this problem (both the segfault and the distortion) by setting bpp to 32 before sicon = SDL_CreateRGBSurface(...) in X11_SetIcon, although with this patch, it stays at 24. diff -r b0c979816d67 -r 8afecb86be35 src/video/x11/SDL_x11modes.c --- a/src/video/x11/SDL_x11modes.c Sun Sep 27 22:29:13 2009 +0000 +++ b/src/video/x11/SDL_x11modes.c Sun Sep 27 22:41:34 2009 +0000 @@ -338,6 +338,18 @@ XWarpPointer(SDL_Display, None, SDL_Root, 0, 0, 0, 0, x, y); } +static int add_default_visual(_THIS) +{ + int i; + int n = this->hidden->nvisuals; + for (i=0; ihidden->visuals[i].visual == DefaultVisual(SDL_Display, SDL_Screen)) return n; + } + this->hidden->visuals[n].depth = DefaultDepth(SDL_Display, SDL_Screen);; + this->hidden->visuals[n].visual = DefaultVisual(SDL_Display, SDL_Screen);; + this->hidden->nvisuals++; + return(this->hidden->nvisuals); +} static int add_visual(_THIS, int depth, int class) { XVisualInfo vi; @@ -801,6 +813,7 @@ add_visual(this, depth_list[i], StaticColor); } } + add_default_visual(this); } if ( this->hidden->nvisuals == 0 ) { SDL_SetError("Found no sufficiently capable X11 visuals");