diff options
author | Campbell Barton <campbell@blender.org> | 2022-11-10 10:03:32 +0300 |
---|---|---|
committer | Campbell Barton <campbell@blender.org> | 2022-11-12 07:11:43 +0300 |
commit | deb8ae6bd1edb0983d9ac972b2c95090f4c5e642 (patch) | |
tree | 702b1b072c067a580958a4f33b6ad559b02f3ab9 /intern/wayland_dynload/extern/wayland_dynload_client.h | |
parent | c5b36aa9404be6859fee7c3d212e484ea9b1d1dc (diff) |
GHOST/Wayland: replace roundtrip with dispatch_pending
Add a non-blocking version wrapper for wl_display_dispatch_pending.
This uses roughly the same logic as Wayland_PumpEvents in SDL.
Noticed this when investigating T100855.
Note that performing a round-trip doesn't seem necessary from looking
into QT/GTK & SDL event handling loops.
Diffstat (limited to 'intern/wayland_dynload/extern/wayland_dynload_client.h')
-rw-r--r-- | intern/wayland_dynload/extern/wayland_dynload_client.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/intern/wayland_dynload/extern/wayland_dynload_client.h b/intern/wayland_dynload/extern/wayland_dynload_client.h index bf1e2f89c18..22ec33b1ef2 100644 --- a/intern/wayland_dynload/extern/wayland_dynload_client.h +++ b/intern/wayland_dynload/extern/wayland_dynload_client.h @@ -14,6 +14,11 @@ extern "C" { WAYLAND_DYNLOAD_FN(wl_display_connect) WAYLAND_DYNLOAD_FN(wl_display_disconnect) WAYLAND_DYNLOAD_FN(wl_display_dispatch) +WAYLAND_DYNLOAD_FN(wl_display_dispatch_pending) +WAYLAND_DYNLOAD_FN(wl_display_get_fd) +WAYLAND_DYNLOAD_FN(wl_display_prepare_read) +WAYLAND_DYNLOAD_FN(wl_display_read_events) +WAYLAND_DYNLOAD_FN(wl_display_cancel_read) WAYLAND_DYNLOAD_FN(wl_display_roundtrip) WAYLAND_DYNLOAD_FN(wl_display_flush) WAYLAND_DYNLOAD_FN(wl_display_get_error) @@ -68,6 +73,11 @@ struct WaylandDynload_Client { void WL_DYN_FN(wl_display_disconnect)(struct wl_display *display); int WL_DYN_FN(wl_display_dispatch)(struct wl_display *display); int WL_DYN_FN(wl_display_roundtrip)(struct wl_display *display); + int WL_DYN_FN(wl_display_dispatch_pending)(struct wl_display *display); + int WL_DYN_FN(wl_display_get_fd)(struct wl_display *display); + int WL_DYN_FN(wl_display_prepare_read)(struct wl_display *display); + int WL_DYN_FN(wl_display_read_events)(struct wl_display *display); + void WL_DYN_FN(wl_display_cancel_read)(struct wl_display *display); int WL_DYN_FN(wl_display_flush)(struct wl_display *display); int WL_DYN_FN(wl_display_get_error)(struct wl_display *display); void WL_DYN_FN(wl_log_set_handler_client)(wl_log_func_t); @@ -103,6 +113,15 @@ struct WaylandDynload_Client { # define wl_display_disconnect(...) \ (*wayland_dynload_client.wl_display_disconnect)(__VA_ARGS__) # define wl_display_dispatch(...) (*wayland_dynload_client.wl_display_dispatch)(__VA_ARGS__) +# define wl_display_dispatch_pending(...) \ + (*wayland_dynload_client.wl_display_dispatch)(__VA_ARGS__) +# define wl_display_get_fd(...) (*wayland_dynload_client.wl_display_get_fd)(__VA_ARGS__) +# define wl_display_prepare_read(...) \ + (*wayland_dynload_client.wl_display_prepare_read)(__VA_ARGS__) +# define wl_display_read_events(...) \ + (*wayland_dynload_client.wl_display_read_events)(__VA_ARGS__) +# define wl_display_cancel_read(...) \ + (*wayland_dynload_client.wl_display_cancel_read)(__VA_ARGS__) # define wl_display_roundtrip(...) (*wayland_dynload_client.wl_display_roundtrip)(__VA_ARGS__) # define wl_display_flush(...) (*wayland_dynload_client.wl_display_flush)(__VA_ARGS__) # define wl_display_get_error(...) (*wayland_dynload_client.wl_display_get_error)(__VA_ARGS__) |