mirror of
https://gitlab.freedesktop.org/wayland/wayland.git
synced 2026-02-15 22:05:35 -05:00
When we add more that one source to a signal, then wayland will
block in wl_event_loop_dispatch. This is due to the attampt to read
from signal's fd each time the source is dispatched.
wl_event_loop_add_signal(loop, SIGINT, ...);
wl_event_loop_add_signal(loop, SIGINT, ...);
/* raise signal .. */
/* we got two fd's ready, both for the one SIGINT */
epoll_wait(...) = 2
[ for (i == 0) ]
source1->dispatch() --> read(fd1);
[ for (i == 1) ]
source2->dispatch() --> read(fd2); /* blocking! */
Reading from fd2 will block, because we got only one signal,
and it was read from fd1.
Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
|
||
|---|---|---|
| .. | ||
| .gitignore | ||
| connection.c | ||
| event-loop.c | ||
| scanner.c | ||
| scanner.mk | ||
| wayland-client-uninstalled.pc.in | ||
| wayland-client.c | ||
| wayland-client.h | ||
| wayland-client.pc.in | ||
| wayland-egl.h | ||
| wayland-os.c | ||
| wayland-os.h | ||
| wayland-private.h | ||
| wayland-scanner-uninstalled.pc.in | ||
| wayland-scanner.pc.in | ||
| wayland-server-uninstalled.pc.in | ||
| wayland-server.c | ||
| wayland-server.h | ||
| wayland-server.pc.in | ||
| wayland-shm.c | ||
| wayland-util.c | ||
| wayland-util.h | ||
| wayland-version.h.in | ||