aboutsummaryrefslogtreecommitdiffstats
path: root/sway/server.c
diff options
context:
space:
mode:
authorLibravatar Kenny Levinsen <kl@kl.wtf>2021-02-12 21:27:28 +0100
committerLibravatar Simon Ser <contact@emersion.fr>2021-02-16 00:18:26 +0100
commitc8bf84c82d82e332c1bb83ff27c3df87576c892e (patch)
treecff03b4c167b30b9725e56654582f220dfc80c8f /sway/server.c
parentAlign ordering of core node properties with i3 (diff)
downloadsway-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.c2
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
221bool server_start(struct sway_server *server) { 219bool server_start(struct sway_server *server) {