# HG changeset patch # User Sam Lantinga # Date 1279417474 25200 # Node ID f06faa886423300d4ae462caad467ca7d7040b0d # Parent 3ce59cbecaa3e62e3c57f0e74073fa07392c9862 Fixed bug 1022 Fixed the X11 icon on 64-bit systems diff -r 3ce59cbecaa3 -r f06faa886423 src/video/x11/SDL_x11window.c --- a/src/video/x11/SDL_x11window.c Wed Jul 14 21:25:15 2010 -0700 +++ b/src/video/x11/SDL_x11window.c Sat Jul 17 18:44:34 2010 -0700 @@ -865,7 +865,7 @@ SDL_PixelFormat format; SDL_Surface *surface; int propsize; - Uint32 *propdata; + long *propdata; /* Convert the icon to ARGB for modern window managers */ SDL_InitFormat(&format, 32, 0x00FF0000, 0x0000FF00, 0x000000FF, @@ -879,10 +879,19 @@ propsize = 2 + (icon->w * icon->h); propdata = SDL_malloc(propsize * sizeof(Uint32)); if (propdata) { + int x, y; + Uint32 *src; + long *dst; + propdata[0] = icon->w; propdata[1] = icon->h; - SDL_memcpy(&propdata[2], surface->pixels, - surface->h * surface->pitch); + dst = &propdata[2]; + for (y = 0; y < icon->h; ++y) { + src = (Uint32*)((Uint8*)surface->pixels + y * surface->pitch); + for (x = 0; x < icon->w; ++x) { + *dst++ = *src++; + } + } XChangeProperty(display, data->xwindow, _NET_WM_ICON, XA_CARDINAL, 32, PropModeReplace, (unsigned char *) propdata, propsize);