Hello,

with a simple test - see the code snippet below - I successfully receive XI_Enter notifications for my window, but XI_Leave are missed. Are there any problems with the test, or something else is wrong?

----

  display = XOpenDisplay(NULL);

  root = RootWindow(display, 0);
  window = XCreateSimpleWindow(display, root,
                               100, 100, 320, 240,
                               BlackPixel(display, 0),
                               WhitePixel(display, 0));

  eventmask.deviceid = XIAllMasterDevices;
  eventmask.mask_len = sizeof(mask);
  eventmask.mask = mask;

  XISetMask(mask, XI_Enter);
  XISetMask(mask, XI_Leave);
  XISelectEvents(display, window, &eventmask, 1);

  XMapWindow(display, window);
  XSync(display, True);

  while (1) {
    XNextEvent(display, &xev);
    if ((xev.xcookie.type == GenericEvent) &&
        (xev.xcookie.extension == xinput_opcode) &&
        XGetEventData(display, &xev.xcookie)) {
      switch (xev.xcookie.evtype) {
        case XI_Enter:
          fprintf(stderr, "XI_Enter\n");
          break;
        case XI_Leave:
          fprintf(stderr, "XI_Leave\n");
          break;
      }
      XFreeEventData(display, &xev.xcookie);
    }
  }

----

The problem is reproducible both with a single master device and with multiple ones. If I modify the test to listen for regular EnterNotify and LeaveNotify, these are received correctly (but XI_Leave is still missed).

Any ideas?

Thanks,

Artem

_______________________________________________
xorg-devel mailing list
[email protected]
http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to