darcs patch: Changing Int to CInt and building with -D_XSERVER64 (w...

the Edward Blevins thedward at antejentacular.org
Thu Mar 29 09:09:16 EDT 2007


On Thu, Mar 29, 2007 at 06:35:48PM +1000, Chris Mears wrote:
> > I am not sure if defining _XSERVER64 is the right fix.  The Xlib headers
> > say that:  [blah, blah]

You are absolutely correct. In retrospect, it seems more obvious.

> An update: I turned off _XSERVER64 and my windows were properly managed
> again.  However, an old bug returned: key modifiers are reported
> incorrectly.  I have found the source of this error.

That is exactly the initial problem I was trying to solve.

> The problem is that, in the KeyEvent data type, the "state" member has
> type "Mask" (64 bits).  But in the C Xlib headers, the "state" member of
> the struct in unsigned int (32 bits)!  This mucks everything up, in
> particular, the peek offsets.
>
> The fix is to use CUInt instead of Modifier or Mask for that value.  I
> have hacked up a patch, but I will need to clean it up before posting it
> here.  It requires changes to X11 and X11-extras.

That was actually my first fix, but the other thing seemed more clever
at the time.

Please do send it to the list; The sooner that happens, the less likely
people are to remember that my fixes caused additional problems. :)

> So, now Xmonad appears to behave correctly.

Yay! It was working fine for me. Except for when I restarted it and
windows went missing, which I hadn't connected with my changes, as
I couldn't use it at all before I made them. :)

Thanks a bunch for digging into this some more.

This is why I love free software. I do a half-assed hack to make
something go, and then someone else comes along and fixes it to
make it work even better. 

-- 
the Edward Blevins  <thedward at antejentacular.org>  (512) 796-6661
Today is Pungenday, the 15th day of Discord in the YOLD 3173


More information about the Libraries mailing list