Hi ----- Original Message ----- > > On 9 March 2016 at 09:31, Olivier Fourdan <[email protected]> wrote: > > > @@ -748,6 +783,9 @@ seat_handle_capabilities(void *data, struct wl_seat > > > *seat, > > > ActivateDevice(xwl_seat->keyboard, TRUE); > > > } > > > EnableDevice(xwl_seat->keyboard, TRUE); > > > + master = GetMaster(xwl_seat->keyboard, MASTER_KEYBOARD); > > > + if (master) > > > + master->key->xkbInfo->checkRepeat = keyboard_check_repeat; > > > > This needs to be done on xwl_seat->keyboard as well: both devices > > generate events. You can see this with 'xinput test'. > > keyboard_check_repeat() operates on the xwl_seat itself, so I reckon it works > for both devices. > > If I explicitely set the callback function for both devices as you suggest, > key repeat becomes completely erratic as both devices share the same > xwl_seat, so doing it on the master device alone seems to work better.
Sorry for the delay... My problem was that each device is attached to an xwl_seat, bit xwl_seats do have multiple devices, including multiple keyboards. With your example, both "xwayland-keyboard" and "Virtual core XTEST keyboard" belong to the same xwl_seat, so using the same bool flag for both would obviously not work with my previous implementation, so it needed a bit more surgery^W rework... The "public.devicePrivate" is used to point to the xwl_seat so we cannot use that to store the "pending sync" flag. The idea is to add a list of devices with pending sync to the wl_seat, and check if a given device is among that list, and remove it once we receive the callback notification for that device. I will be sending an updated series (4 patches, so it will be easier to review at once) with this implementation in a second. Cheers, Olivier _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel
