Hey, Here's some assorted fixes to make Xwayland pointer locking/confinement emulation work on games run through Wine. Some specifics:
- Wine pretty much forwards win32 parlance to X11 equivalents, if a game calls ClipCursor, Wine calls XGrabPointer with a confineTo. If a game calls SetCursorPos, Wine calls XWarpPointer. How each game achieves what it wants is pretty much up to their devices. - Wine happens to grab the pointer on an InputOnly window covering the rectangle passed in ClipCursor (in screen coords). This is funky because hw/xwayland/ has not much knowledge of InputOnly windows, and because it might happen to be outside any coordinates Xwayland can receive events from. For the cases we want to cover here, it should be expected that the clipping area matches the visible window. - Wine happens to warp on the root window, presumably because the equivalent win32 call just takes a position in screen coordinates. The same considerations about coordinates outside the pointer focus happen here, and again a meaningful behavior should be expected for the cases we want to cover. Of the whole series, perhaps the most controversial patch is 5/7, as it involves a change in the current policy about when to send events through the relative pointer, but IMHO still a sound one. 6/7 and 7/7 are rather miscellaneous, but I found these during the doing of these patches. Cheers, Carlos Carlos Garnacho (7): dix: assume warping on the RootWindow always happens on visible coords xwayland: Allow pointer warp on the root window xwayland: "Accept" confineTo on InputOnly windows xwayland: Update root window size when desktop size changes xwayland: Emit relative motion events on both warp/confinement situations Xi: Use WarpPointerProc hook on XI pointer warping implementation xwayland: Remove two unused proc pointers. Xi/xiwarppointer.c | 4 ++++ dix/events.c | 2 +- hw/xwayland/xwayland-input.c | 39 ++++++++++++++++----------------------- hw/xwayland/xwayland-output.c | 1 + hw/xwayland/xwayland.c | 12 +++++++++++- hw/xwayland/xwayland.h | 2 -- 6 files changed, 33 insertions(+), 27 deletions(-) -- 2.9.3 _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel