diff options
author | Kenny Levinsen <kl@kl.wtf> | 2021-02-12 21:27:28 +0100 |
---|---|---|
committer | Simon Ser <contact@emersion.fr> | 2021-02-16 00:18:26 +0100 |
commit | c8bf84c82d82e332c1bb83ff27c3df87576c892e (patch) | |
tree | cff03b4c167b30b9725e56654582f220dfc80c8f /sway/server.c | |
parent | Align ordering of core node properties with i3 (diff) | |
download | sway-c8bf84c82d82e332c1bb83ff27c3df87576c892e.tar.gz sway-c8bf84c82d82e332c1bb83ff27c3df87576c892e.tar.zst sway-c8bf84c82d82e332c1bb83ff27c3df87576c892e.zip |
transactions: Amend pending transactions
The transaction system contains a necessary optimization where a popped
transaction is combined with later, similar transactions. This breaks
the chronological order of states, and can lead to desynchronized
geometries.
To fix this, we replace the queue with only 2 transactions: current and
pending. If a pending transaction exists, it is updated with new state
instead of creating additional transactions.
As we never have more than a single waiting transaction, we no longer
need the queue optimization that is causing problems.
Closes: https://github.com/swaywm/sway/issues/6012
Diffstat (limited to 'sway/server.c')
-rw-r--r-- | sway/server.c | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/sway/server.c b/sway/server.c index f180da9a..278afd19 100644 --- a/sway/server.c +++ b/sway/server.c | |||
@@ -199,7 +199,6 @@ bool server_init(struct sway_server *server) { | |||
199 | } | 199 | } |
200 | 200 | ||
201 | server->dirty_nodes = create_list(); | 201 | server->dirty_nodes = create_list(); |
202 | server->transactions = create_list(); | ||
203 | 202 | ||
204 | server->input = input_manager_create(server); | 203 | server->input = input_manager_create(server); |
205 | input_manager_get_default_seat(); // create seat0 | 204 | input_manager_get_default_seat(); // create seat0 |
@@ -215,7 +214,6 @@ void server_fini(struct sway_server *server) { | |||
215 | wl_display_destroy_clients(server->wl_display); | 214 | wl_display_destroy_clients(server->wl_display); |
216 | wl_display_destroy(server->wl_display); | 215 | wl_display_destroy(server->wl_display); |
217 | list_free(server->dirty_nodes); | 216 | list_free(server->dirty_nodes); |
218 | list_free(server->transactions); | ||
219 | } | 217 | } |
220 | 218 | ||
221 | bool server_start(struct sway_server *server) { | 219 | bool server_start(struct sway_server *server) { |