Hi Peter,
Sorry for replying off-list first.
Thanks for the work you've put into this. I haven't spent a lot of time
testing the new code, but here are my first impressions. You're
probably aware of most of the issues below already, but I'll mention
them just in case.
* The biggest issue for me right now is reporting of XI1 (see the
attached test program). XSelectExtensionEvents and
XGrabDevice/XGrabDeviceButton will only report press events; motion and
release events are lost.
* A driver sending a proximity event crashes the server.
* XIGrabButton always fails with a BadDevice error.
* It seems to be pretty easy to crash the server using XI1 applications.
I'll provide more information later
* libXi doens't support parallel builds (make -j2) anymore.
I haven't played with XI2 code a lot yet, but the interface seems a lot
nicer than XI1 so far. I can't think of any features that are missing
right now except for button grabs and XTest support.
Thanks,
Tom
Peter Hutterer wrote:
> This is a pull warning for XI2 into master.
>
> Next Thursday, Jun 4, I will pull XI2 into master. I will spend the rest of
> this week ironing out issues so that the merge will be smooth. There will be
> another warning email following the merge.
>
> In the meantime, please test the xi2 branches from
> git://people.freedesktop.org/~whot/xserver.git
> git://people.freedesktop.org/~whot/inputproto.git
> git://people.freedesktop.org/~whot/libXi.git
#include <X11/Xlib.h>
#include <X11/extensions/XInput.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
Display *dpy = XOpenDisplay(NULL);
XDevice *dev = NULL;
{
int i, n;
XDeviceInfo *devs = XListInputDevices(dpy, &n);
if (!devs)
exit(EXIT_FAILURE);
for (i = 0; i < n; i++) {
if (strcmp(devs[i].name, "Wacom Serial Tablet PC Pen Tablet/Digitizer"))
continue;
dev = XOpenDevice(dpy, devs[i].id);
break;
}
if (!dev)
exit(EXIT_FAILURE);
XFreeDeviceList(devs);
}
Window root = DefaultRootWindow(dpy);
Window window = XCreateSimpleWindow(dpy, root, 0, 0, 800, 800, 0, 0, 0);
XMapWindow(dpy, window);
XEventClass events[4];
int press, release, dummy, motion;
DeviceButtonPress(dev, press, events[0]);
DeviceButtonRelease(dev, release, events[1]);
DeviceButtonMotion(dev, dummy, events[2]);
DeviceMotionNotify(dev, motion, events[3]);
XSelectExtensionEvent(dpy, window, events, 3);
while (1) {
XEvent ev;
XNextEvent(dpy, &ev);
if (ev.type == press) {
printf("press\n");
} else if (ev.type == release) {
printf("release\n");
} else if (ev.type == motion) {
printf("motion\n");
}
}
}
_______________________________________________
xorg mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/xorg