godot/platform/linuxbsd/wayland
Riteo 2e07dcf1e7 Wayland: suspend window after frame timeout or suspend state
This is a pretty popular approach that took a while for me to wrap my
head around and which only recently got "official" support through an
update (xdg_shell version 6), so I think that this is all-in-all a
better option than the overkill 2000Hz ticking we have now :P

Basically, we wait for a frame event and, if either too much time passes
or we get the new `suspended` state, we consider the window as "hidden"
and stop drawing, ticking by the low usage rate.

This should work great for KDE and Mutter, which support the new state,
but not yet for sway, which is still stuck at a very old xdg_shell
version and thus falls back to the timeout approach.

Be aware that if we rely on timing out the engine will have to stall for
the whole timeout, which _could_ be problematic but doensn't seem like
it. Further testing is needed.

Special thanks go to the guys over at #wayland on OFTC, who very
patiently explained me this approach way too many times.
2024-02-15 23:48:56 +01:00
..
dynwrappers Add Wayland support 2024-01-30 16:44:47 +01:00
SCsub Finish splitting functionality of the Vulkan and D3D12 backends into RenderingDeviceDriver. 2024-02-12 10:02:18 -03:00
detect_prime_egl.cpp Add Wayland support 2024-01-30 16:44:47 +01:00
detect_prime_egl.h Add Wayland support 2024-01-30 16:44:47 +01:00
display_server_wayland.cpp Wayland: suspend window after frame timeout or suspend state 2024-02-15 23:48:56 +01:00
display_server_wayland.h Wayland: suspend window after frame timeout or suspend state 2024-02-15 23:48:56 +01:00
egl_manager_wayland.cpp Add Wayland support 2024-01-30 16:44:47 +01:00
egl_manager_wayland.h Add Wayland support 2024-01-30 16:44:47 +01:00
key_mapping_xkb.cpp Add Wayland support 2024-01-30 16:44:47 +01:00
key_mapping_xkb.h Add Wayland support 2024-01-30 16:44:47 +01:00
rendering_context_driver_vulkan_wayland.cpp Finish splitting functionality of the Vulkan and D3D12 backends into RenderingDeviceDriver. 2024-02-12 10:02:18 -03:00
rendering_context_driver_vulkan_wayland.h Finish splitting functionality of the Vulkan and D3D12 backends into RenderingDeviceDriver. 2024-02-12 10:02:18 -03:00
wayland_thread.cpp Wayland: suspend window after frame timeout or suspend state 2024-02-15 23:48:56 +01:00
wayland_thread.h Wayland: suspend window after frame timeout or suspend state 2024-02-15 23:48:56 +01:00