tag 370366 moreinfo thanks "Todd Pytel" <[EMAIL PROTECTED]> writes:
[...] > Some Googling reveals some similar reports that suggest the problem is > specific to AMD64 (relating to a CARD32/CARD64 variable issue), but I > did not find a resolution. Simply editing the source's CARD32's to CARD64's in > self-compiled packages does not fix the problem. Does the attached patch work for you? (I don't have an amd64 machine handy, and skippy simply stalls over the network...) Thanks, Matej
diff -ruN skippy-0.5.1rc1/clientwin.c skippy-0.5.1rc1.amd64/clientwin.c --- skippy-0.5.1rc1/clientwin.c 2004-09-13 19:41:37.000000000 +0200 +++ skippy-0.5.1rc1.amd64/clientwin.c 2006-06-19 10:25:12.000000000 +0200 @@ -33,7 +33,7 @@ clientwin_validate_func(dlist *l, void *data) { ClientWin *cw = (ClientWin *)l->data; - CARD32 desktop = (*(CARD32*)data), + unsigned long desktop = (*(unsigned long*)data), w_desktop = wm_get_window_desktop(cw->mainwin->dpy, cw->client.window); #ifdef XINERAMA @@ -43,7 +43,7 @@ return 0; #endif - return (w_desktop == (CARD32)-1 || desktop == w_desktop) && + return (w_desktop == (unsigned long)-1 || desktop == w_desktop) && wm_validate_window(cw->mainwin->dpy, cw->client.window); } diff -ruN skippy-0.5.1rc1/skippy.c skippy-0.5.1rc1.amd64/skippy.c --- skippy-0.5.1rc1/skippy.c 2004-09-13 19:41:37.000000000 +0200 +++ skippy-0.5.1rc1.amd64/skippy.c 2006-06-19 10:25:12.000000000 +0200 @@ -73,7 +73,7 @@ int die = 0; dlist *iter, *tmp; Window dummy_w, *tree_windows; - CARD32 desktop = wm_get_current_desktop(mw->dpy); + unsigned long desktop = wm_get_current_desktop(mw->dpy); Bool refocus = False; /* Update the main window's geometry (and Xinerama info if applicable) */ diff -ruN skippy-0.5.1rc1/wm.c skippy-0.5.1rc1.amd64/wm.c --- skippy-0.5.1rc1/wm.c 2004-09-13 19:41:37.000000000 +0200 +++ skippy-0.5.1rc1.amd64/wm.c 2006-06-19 10:29:21.000000000 +0200 @@ -260,7 +260,7 @@ return 0; for(i = 0; i < items_read; i++) - l = dlist_add(l, (void*)((CARD32*)data)[i]); + l = dlist_add(l, (void*)((Window*)data)[i]); XFree(data); @@ -295,10 +295,10 @@ return rootpmap; } -CARD32 +unsigned long wm_get_current_desktop(Display *dpy) { - CARD32 desktop = 0; + unsigned long desktop = 0; unsigned char *data; int status, real_format; Atom real_type; @@ -311,7 +311,7 @@ if(status != Success) return 0; if(items_read) - desktop = ((CARD32*)data)[0]; + desktop = ((unsigned long*)data)[0]; XFree(data); return desktop; @@ -493,7 +493,7 @@ return result; } else { - CARD32 attr; + unsigned long attr; status = XGetWindowProperty(dpy, win, _WIN_STATE, 0L, 1L, False, XA_CARDINAL, &real_type, &real_format, @@ -504,7 +504,7 @@ XFree(data); return 0; } - attr = (((CARD32*)data)[0]) & (WIN_STATE_MINIMIZED | + attr = (((unsigned long*)data)[0]) & (WIN_STATE_MINIMIZED | WIN_STATE_SHADED | WIN_STATE_HIDDEN); if(attr) @@ -524,7 +524,7 @@ XFree(data); return 1; /* If there's no _WIN_HINTS, assume it's 0, thus valid */ } - attr = ((CARD32*)data)[0]; + attr = ((unsigned long*)data)[0]; if(attr & WIN_HINTS_SKIP_TASKBAR) result = 0; XFree(data); @@ -534,14 +534,14 @@ } } -CARD32 +unsigned long wm_get_window_desktop(Display *dpy, Window win) { int status, real_format; Atom real_type; unsigned long items_read, items_left; unsigned char *data; - CARD32 desktop = 0; + unsigned long desktop = 0; if(WM_PERSONALITY == WM_PERSONALITY_GNOME) { @@ -551,7 +551,7 @@ if(status == Success) { if(items_read) - desktop = (((CARD32*)data)[0] & WIN_STATE_STICKY) ? (CARD32)-1 : 0; + desktop = (((unsigned long*)data)[0] & WIN_STATE_STICKY) ? (unsigned long)-1 : 0; XFree(data); @@ -569,7 +569,7 @@ return wm_get_current_desktop(dpy); if(items_read) - desktop = ((CARD32*)data)[0]; + desktop = ((unsigned long*)data)[0]; else desktop = wm_get_current_desktop(dpy); diff -ruN skippy-0.5.1rc1/wm.h skippy-0.5.1rc1.amd64/wm.h --- skippy-0.5.1rc1/wm.h 2004-09-13 19:41:37.000000000 +0200 +++ skippy-0.5.1rc1.amd64/wm.h 2006-06-19 10:25:12.000000000 +0200 @@ -74,12 +74,12 @@ void wm_sawfish_focus(Bool b); dlist *wm_get_stack(Display *dpy); Pixmap wm_get_root_pmap(Display *dpy); -CARD32 wm_get_current_desktop(Display *dpy); +unsigned long wm_get_current_desktop(Display *dpy); FcChar8 *wm_get_window_title(Display *dpy, Window window, int *length_return); Window wm_get_group_leader(Display *dpy, Window window); void wm_set_fullscreen(Display *dpy, Window window, int x, int y, unsigned int width, unsigned int height); int wm_validate_window(Display *dpy, Window win); -CARD32 wm_get_window_desktop(Display *dpy, Window win); +unsigned long wm_get_window_desktop(Display *dpy, Window win); Window wm_get_focused(Display *dpy); void wm_ignore_skip_taskbar(Bool b); void wm_prepare_snap(Display *dpy, Window win, wm_snap_state_t *state);