aboutsummaryrefslogtreecommitdiff
path: root/include/wlr
diff options
context:
space:
mode:
authorIsaac Freund <ifreund@ifreund.xyz>2020-07-20 23:43:03 +0200
committerSimon Ser <contact@emersion.fr>2020-08-27 12:36:29 +0200
commit2072d59da54ac772410271ad2219ca107a7fff48 (patch)
treed643a2d544ff0d5696822bee7d968af61305bb21 /include/wlr
parent330c50b48dfe987d7894f5a92c1b084b2cc8c712 (diff)
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
Diffstat (limited to 'include/wlr')
-rw-r--r--include/wlr/types/wlr_xdg_shell.h1
-rw-r--r--include/wlr/types/wlr_xdg_shell_v6.h1
2 files changed, 2 insertions, 0 deletions
diff --git a/include/wlr/types/wlr_xdg_shell.h b/include/wlr/types/wlr_xdg_shell.h
index 4bd286ce..45c5aee0 100644
--- a/include/wlr/types/wlr_xdg_shell.h
+++ b/include/wlr/types/wlr_xdg_shell.h
@@ -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;
diff --git a/include/wlr/types/wlr_xdg_shell_v6.h b/include/wlr/types/wlr_xdg_shell_v6.h
index 5a6cf72f..2e870aa5 100644
--- a/include/wlr/types/wlr_xdg_shell_v6.h
+++ b/include/wlr/types/wlr_xdg_shell_v6.h
@@ -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;