Toward an abstract modular picker interface in the X server
Deron.Johnson at Sun.COM
Tue Feb 13 13:37:39 PST 2007
I've taken a closer look at your input transformation patches and it
the mechanics of our respective input transformations are very
your transformation there is a non-trivial transform at every level of the
hierarchy and it is the same transform for every level (including the root).
In my transform, the root transform has already been computed in my external
picker (aka the LG Display Server, or DS). So my code essentially skips
the first level of transforms. The second difference is that from the
top-level window on down the hierarchy the standard x11 picking transform
is applied. So it is not simply a issue of our per-level transforms
differing, the way we apply them are quite different. Because of this
I haven't been able to see a way of fitting my input transformation
mechanism into your interface. Therefore, I suggest that we adopt
the higher-level interface which I originally proposed, namely, the
one that abstracts the four key places where picking calculations
occur: ProcTranslateCoords, XYToWindow, ProcQueryPointer, and
FixupEventFromWindow. Making the abstraction at this level will
allow us to plug in all three pickers (yours, mine, and standard x)
with ease. Also, for the needs of my picker, I also need a
WindowsRestructured call into my picker. The implementation of this
call for your case and the standard x case would be a null routine.
This seems like the easiest way to combine our work in one framework
What do you think?
BTW: I'm calling what we are trying to do the X server "modular picker"
(or interface). It's modular in the sense that after we implement this
will be easier to integrate other pickers into the X server in the
future. Also, I
use the term "picker" because in 3D graphics "picking" is the term used for
taking an absolute screen coordinate and determining the object (or window)
underneath and the intersection point relative to that object. Keith has
used the term "picking" in reference to what the X server does during its
input transformation, so this seems like a natural term to use.
More information about the xorg