Fixed bug 1022
Fixed the X11 icon on 64-bit systems
This commit is contained in:
parent
c1eb1e8f25
commit
b72ceb7a95
1 changed files with 12 additions and 3 deletions
|
@ -865,7 +865,7 @@ X11_SetWindowIcon(_THIS, SDL_Window * window, SDL_Surface * icon)
|
||||||
SDL_PixelFormat format;
|
SDL_PixelFormat format;
|
||||||
SDL_Surface *surface;
|
SDL_Surface *surface;
|
||||||
int propsize;
|
int propsize;
|
||||||
Uint32 *propdata;
|
long *propdata;
|
||||||
|
|
||||||
/* Convert the icon to ARGB for modern window managers */
|
/* Convert the icon to ARGB for modern window managers */
|
||||||
SDL_InitFormat(&format, 32, 0x00FF0000, 0x0000FF00, 0x000000FF,
|
SDL_InitFormat(&format, 32, 0x00FF0000, 0x0000FF00, 0x000000FF,
|
||||||
|
@ -879,10 +879,19 @@ X11_SetWindowIcon(_THIS, SDL_Window * window, SDL_Surface * icon)
|
||||||
propsize = 2 + (icon->w * icon->h);
|
propsize = 2 + (icon->w * icon->h);
|
||||||
propdata = SDL_malloc(propsize * sizeof(Uint32));
|
propdata = SDL_malloc(propsize * sizeof(Uint32));
|
||||||
if (propdata) {
|
if (propdata) {
|
||||||
|
int x, y;
|
||||||
|
Uint32 *src;
|
||||||
|
long *dst;
|
||||||
|
|
||||||
propdata[0] = icon->w;
|
propdata[0] = icon->w;
|
||||||
propdata[1] = icon->h;
|
propdata[1] = icon->h;
|
||||||
SDL_memcpy(&propdata[2], surface->pixels,
|
dst = &propdata[2];
|
||||||
surface->h * surface->pitch);
|
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,
|
XChangeProperty(display, data->xwindow, _NET_WM_ICON, XA_CARDINAL,
|
||||||
32, PropModeReplace, (unsigned char *) propdata,
|
32, PropModeReplace, (unsigned char *) propdata,
|
||||||
propsize);
|
propsize);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue