Draft animator bug: help?

(Perhaps you can tell that I've been going over the bugs on the wiki....)

The problem with the draft animator seems to be a bug on the C side of
things.  The problem is that the animation code expects to be able to
perform a draw operation twice and have the second draw erase the
first.  Try this in sawfish-client to see what I mean -- this is how the
lines are drawn when moving windows:

user> (require 'sawfish.wm.util.x)
user> (x-draw-line 'root (x-create-root-xor-gc) '(5 . 5) '(20 . 20))
user> (x-draw-line 'root (x-create-root-xor-gc) '(5 . 5) '(20 . 20))

Choose the coordinates such that no window is covering the root window
in that spot; if the upper left of the screen is clear the above should
work.  The first call to x-draw-line will display a line, the second
will erase it.  But try it with x-draw-string, which is what's used to
display the coordinate info when window animations are set to draft

user> (x-draw-string 'root (x-create-root-xor-gc) '(50 . 50) "Foo")

For me, at least, the first time I run this nothing seems to happen.
But if I run it several times a "Foo" in the upper left of the screen
darkens and becomes black.  From the way it's used in
sawfish.wm.util.window-outline, it's evidently supposed to behave as the
x-draw-line function does, but it doesn't.

Tracing through the C code in src/x.c (where these are defined) to
figure out what the problem is would be very difficult for me.
Can someone with more C knowledge help out?

Jeremy Hankins <nowan nowan org>

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]