diff options
author | Kenny Levinsen <[email protected]> | 2021-02-12 21:27:28 +0100 |
---|---|---|
committer | Simon Ser <[email protected]> | 2021-02-16 00:18:26 +0100 |
commit | c8bf84c82d82e332c1bb83ff27c3df87576c892e (patch) | |
tree | cff03b4c167b30b9725e56654582f220dfc80c8f /sway/server.c | |
parent | b944735b47a660efbe55563ecfbc086636c9832b (diff) |
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) { } server->dirty_nodes = create_list(); - server->transactions = create_list(); server->input = input_manager_create(server); input_manager_get_default_seat(); // create seat0 @@ -215,7 +214,6 @@ void server_fini(struct sway_server *server) { wl_display_destroy_clients(server->wl_display); wl_display_destroy(server->wl_display); list_free(server->dirty_nodes); - list_free(server->transactions); } bool server_start(struct sway_server *server) { |