Subject: Re: bug#11447: 24.1.50; notifications-notify eats keystrokes

From: Michael Albinus <[email-masked]>
Date: Sun, 13 May 2012 11:11:43 +0200

Stefan Monnier <[email-masked]> writes:

> I think I understand what you mean: you mean that while you do `sit-for'
> you actually want to run the code associated with the incoming events,
> since that code might be the one which changes dbus-return-values-table.

Yes.

> So, indeed sit-for and input-pending-p won't cut it.  Your code looks
> OK, then, though you don't need to use a 0.1 timeout, AFAICT.

OK, I remove the timeout.

> And in order to avoid the (let (unread-command-events) ...), I'd do
> something like:
>
>    (let ((seen ()))
>      (unwind-protect
>          (let ((event (read-event)))
>            (when (and event (not (ignore-errors (dbus-check-event event))))
>              (push event seen)))
>        (setq unread-command-events
>              (append unread-command-events (nreverse seen)))))

Unfortunately, it doesn't work either. When unread-command-events is
non-nil, read-event takes the events from there instead of reading them
from the input streams. This happens after the first time a character
has been read in the loop, before the awaited D-Bus event did arrive.

I've committed my original patch (minus the read-event timeout). Bug is
closed.

> -- Stefan

Best regards, Michael.