Comment 23 for bug 754470

Revision history for this message
Emmanuel Thomé (emmanuel-thome) wrote :

This bug annoys me greatly.

Tried your package as well. It remains silent. No debug output at all.

I don't know which changes you tried, but I've tried putting some printf() hooks within xrecord_callback(), e.g.:

    cbres = (struct xrecord_callback_results *)closure;

    int check = recorded_data->category != XRecordFromServer;

    static int i=0;
    printf("event %d [%d]!\n", i++, check);

    if (recorded_data->category != XRecordFromServer) {

This code path, under normal operation, is supposed to be called. When the process is spinning, it seems to not enter xrecord_callback() at all. The events received are not key events, as is visible from this gdb extract (I compiled the package with -g):

(gdb) fin
Run till exit from #0 0x00007f187e3ab123 in __select_nocancel ()
    at ../sysdeps/unix/syscall-template.S:82
0x0000000000401fb2 in record_main_loop (display=0x140b010, idle_time=0.5)
    at ../../tools/syndaemon.c:413
413 ret = select(fd+1 /* =(max descriptor in read_fds) + 1 */,
(gdb) n
417 if (FD_ISSET(fd, &read_fds)) {
(gdb)
419 cbres.key_event = 0;
(gdb)
420 cbres.non_modifier_event = 0;
(gdb)
422 XRecordProcessReplies(dpy_data);
(gdb)
424 if (!ignore_modifier_keys && cbres.key_event) {
(gdb) p cbres
$1 = {modifiers = 0x1418ae0, key_event = 0, non_modifier_event = 0,
  pressed_modifiers = '\000' <repeats 15 times>}
(gdb) n
428 if (cbres.non_modifier_event &&
(gdb)
434 if (disable_event) {
(gdb) p disable_event
$2 = 0
(gdb) p pad_disabled
$3 = 0

I'll keep hunting a bit.

E.