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

commite18dd2527e9ec8ebe0ebb2d8107d6a37e62d3b8b
parentc7afc56a28
authorQiu <[email protected]>
date2021-03-27 16:17
render: schedule new frame on output commit failure

This seems to fix issues with rendering freezing described in
https://github.com/ifreund/river/issues/153.

 river/render.zig | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/river/render.zig b/river/render.zig
index 1878c6b..204d760 100644
--- a/river/render.zig
+++ b/river/render.zig
@@ -142,9 +142,10 @@ pub fn renderOutput(output: *Output) void {
         output.wlr_output.setDamage(&damage);
     }
 
-    // TODO: handle failure
-    output.wlr_output.commit() catch
-        log.err("output commit failed for {}", .{output.wlr_output.name});
+    output.wlr_output.commit() catch {
+        log.err("output commit failed for {}, retrying", .{std.mem.spanZ(&output.wlr_output.name)});
+        output.wlr_output.scheduleFrame();
+    };
 }
 
 fn renderFilter(view: *View, filter_tags: u32) bool {