mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2025-11-25 06:59:42 -05:00
xdg-shell: split last-acked and current state
These states are distinct in the time period between the ack_configure and the next commit on the surface. Splitting these states avoids the following race for example: - client starts at 1000x1000 - wlr_xdg_toplevel_set_size 500x500 - size is different -> configure sent - client acks the configure - wlr_xdg_toplevel_set_size 1000x1000 - compare_xdg_toplevel_state returns true since there is no pending configure and the currently committed size is still 1000x1000 - no new configure is sent - client commits at the size it last acked, 500x500
This commit is contained in:
parent
330c50b48d
commit
2072d59da5
4 changed files with 35 additions and 57 deletions
|
|
@ -124,6 +124,7 @@ struct wlr_xdg_toplevel {
|
|||
|
||||
struct wlr_xdg_toplevel_state client_pending;
|
||||
struct wlr_xdg_toplevel_state server_pending;
|
||||
struct wlr_xdg_toplevel_state last_acked;
|
||||
struct wlr_xdg_toplevel_state current;
|
||||
|
||||
char *title;
|
||||
|
|
|
|||
|
|
@ -139,6 +139,7 @@ struct wlr_xdg_toplevel_v6 {
|
|||
|
||||
struct wlr_xdg_toplevel_v6_state client_pending;
|
||||
struct wlr_xdg_toplevel_v6_state server_pending;
|
||||
struct wlr_xdg_toplevel_v6_state last_acked;
|
||||
struct wlr_xdg_toplevel_v6_state current;
|
||||
|
||||
char *title;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue