diff options
author | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-08-15 10:03:55 +1000 |
---|---|---|
committer | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-08-15 10:03:55 +1000 |
commit | c3ef36d6b5d36f783f41b8860cee321b652f91e3 (patch) | |
tree | 4496de9473943b65e0d871b498176b820fea8e7b /sway/tree | |
parent | Merge pull request #2445 from RyanDwyer/resize-tiling-via-cursor (diff) | |
download | sway-c3ef36d6b5d36f783f41b8860cee321b652f91e3.tar.gz sway-c3ef36d6b5d36f783f41b8860cee321b652f91e3.tar.zst sway-c3ef36d6b5d36f783f41b8860cee321b652f91e3.zip |
Simplify transactions
Commit 4b8e3a885be74c588291c51f798de80bd81a92db makes it so only one
transaction is committed (ie. configures sent) at a time. This commit
removes the now-unnecessary code which was used to support concurrent
committed transactions.
* Instead of containers storing a list of instructions which they've
been sent, it now stores a single instruction.
* Containers now have an ntxnrefs property. Previously we knew how many
references there were by the length of the instruction list.
* Instructions no longer need a ready property. It was used to avoid
marking an instruction ready twice when they were in a list, but this is
now avoided because there is only one instruction and we nullify the
container->instruction pointer when it's ready.
* When a transaction applies, we no longer need to consider releasing
and resaving the surface, as we know there are no other committed
transactions.
* transaction_notify_view_ready has been renamed to
view_notify_view_ready_by_serial to make it consistent with
transaction_notify_view_ready_by_size.
* Out-of-memory checks have been added when creating transactions and
instructions.
Diffstat (limited to 'sway/tree')
-rw-r--r-- | sway/tree/container.c | 6 | ||||
-rw-r--r-- | sway/tree/root.c | 2 |
2 files changed, 2 insertions, 6 deletions
diff --git a/sway/tree/container.c b/sway/tree/container.c index 45e54080..eb06edc2 100644 --- a/sway/tree/container.c +++ b/sway/tree/container.c | |||
@@ -108,7 +108,6 @@ struct sway_container *container_create(enum sway_container_type type) { | |||
108 | c->layout = L_NONE; | 108 | c->layout = L_NONE; |
109 | c->type = type; | 109 | c->type = type; |
110 | c->alpha = 1.0f; | 110 | c->alpha = 1.0f; |
111 | c->instructions = create_list(); | ||
112 | 111 | ||
113 | if (type != C_VIEW) { | 112 | if (type != C_VIEW) { |
114 | c->children = create_list(); | 113 | c->children = create_list(); |
@@ -140,8 +139,8 @@ void container_free(struct sway_container *cont) { | |||
140 | "Tried to free container which wasn't marked as destroying")) { | 139 | "Tried to free container which wasn't marked as destroying")) { |
141 | return; | 140 | return; |
142 | } | 141 | } |
143 | if (!sway_assert(cont->instructions->length == 0, | 142 | if (!sway_assert(cont->ntxnrefs == 0, "Tried to free container " |
144 | "Tried to free container with pending instructions")) { | 143 | "which is still referenced by transactions")) { |
145 | return; | 144 | return; |
146 | } | 145 | } |
147 | free(cont->name); | 146 | free(cont->name); |
@@ -150,7 +149,6 @@ void container_free(struct sway_container *cont) { | |||
150 | wlr_texture_destroy(cont->title_focused_inactive); | 149 | wlr_texture_destroy(cont->title_focused_inactive); |
151 | wlr_texture_destroy(cont->title_unfocused); | 150 | wlr_texture_destroy(cont->title_unfocused); |
152 | wlr_texture_destroy(cont->title_urgent); | 151 | wlr_texture_destroy(cont->title_urgent); |
153 | list_free(cont->instructions); | ||
154 | list_free(cont->children); | 152 | list_free(cont->children); |
155 | list_free(cont->current.children); | 153 | list_free(cont->current.children); |
156 | 154 | ||
diff --git a/sway/tree/root.c b/sway/tree/root.c index 79f2194e..068e7911 100644 --- a/sway/tree/root.c +++ b/sway/tree/root.c | |||
@@ -26,7 +26,6 @@ void root_create(void) { | |||
26 | root_container.type = C_ROOT; | 26 | root_container.type = C_ROOT; |
27 | root_container.layout = L_NONE; | 27 | root_container.layout = L_NONE; |
28 | root_container.name = strdup("root"); | 28 | root_container.name = strdup("root"); |
29 | root_container.instructions = create_list(); | ||
30 | root_container.children = create_list(); | 29 | root_container.children = create_list(); |
31 | root_container.current.children = create_list(); | 30 | root_container.current.children = create_list(); |
32 | wl_signal_init(&root_container.events.destroy); | 31 | wl_signal_init(&root_container.events.destroy); |
@@ -55,7 +54,6 @@ void root_destroy(void) { | |||
55 | free(root_container.sway_root); | 54 | free(root_container.sway_root); |
56 | 55 | ||
57 | // root_container | 56 | // root_container |
58 | list_free(root_container.instructions); | ||
59 | list_free(root_container.children); | 57 | list_free(root_container.children); |
60 | list_free(root_container.current.children); | 58 | list_free(root_container.current.children); |
61 | free(root_container.name); | 59 | free(root_container.name); |