On 2017-01-11 11:00:39 +0100, Vincent Lefevre wrote:
> So, the application may need to wait a little bit instead of failing
> immediately (I suppose that the problem is more visible on multicore
> machines).

In pinentry-gtk-2.c:

  do
    err = gdk_pointer_grab (gtk_widget_get_window (win),
                            TRUE, 0 /* event mask */,
                            NULL /* confine to */,
                            cursor,
                            gdk_event_get_time (event));
  while (tries++ < max_tries && err == GDK_GRAB_NOT_VIEWABLE);

Between the calls to gdk_pointer_grab, the pinentry should wait
a little time.

Ditto for keyboard grabbing:

  do
    err = gdk_keyboard_grab (gtk_widget_get_window (win),
                             FALSE, gdk_event_get_time (event));
  while (tries++ < max_tries && err == GDK_GRAB_NOT_VIEWABLE);

This one currently seems to work, but on faster machines or with bad
luck, this may not be sufficient.

-- 
Vincent Lefèvre <vinc...@vinc17.net> - Web: <https://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)

Reply via email to