git.lucas.co / cce-compositor
Wayland compositor (wlroots)
git clone https://git.lucas.co/cce-compositor.git

commitee2df112b291d4c56d81a30375dbdece75836632
parent8e098a4498
authorIsaac Freund <[email protected]>
date2024-03-18 22:29
View: fix potential assertion failure on destroy

If a View is destroyed while part of a transaction we can currently hit
an assertion failure, this commit fixes it.

 river/View.zig | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/river/View.zig b/river/View.zig
index 7430e4a..a11bd92 100644
--- a/river/View.zig
+++ b/river/View.zig
@@ -350,7 +350,11 @@ pub fn commitTransaction(view: *View) void {
 
             view.current = view.inflight;
         },
-        .none => {},
+        // This may seem pointless at first glance, but is in fact necessary
+        // to prevent an assertion failure in Root.commitTransaction() as that
+        // function assumes that the inflight tags/output will be applied by
+        // View.commitTransaction() even for views being destroyed.
+        .none => view.current = view.inflight,
     }
 
     view.updateSceneState();