From 28dcd8320ac478a9aba36da7e261bc676a5a723e Mon Sep 17 00:00:00 2001 From: Isaac Freund Date: Wed, 3 Jan 2024 17:23:53 -0600 Subject: linux-dmabuf: send better per-surface feedback This commit leverages the new wlr_scene helper to send custom feedback per surface rather than using the same default feedback for every surface. This should allow direct scanout to work more reliably with multiple outputs for example. --- river/Root.zig | 2 ++ river/Server.zig | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/river/Root.zig b/river/Root.zig index a3bd35a..0608287 100644 --- a/river/Root.zig +++ b/river/Root.zig @@ -129,6 +129,8 @@ pub fn init(self: *Self) !void { const scene = try wlr.Scene.create(); errdefer scene.tree.node.destroy(); + scene.setLinuxDmabufV1(server.linux_dmabuf); + const interactive_content = try scene.tree.createSceneTree(); const drag_icons = try scene.tree.createSceneTree(); const hidden_tree = try scene.tree.createSceneTree(); diff --git a/river/Server.zig b/river/Server.zig index a2ee934..56bb2ca 100644 --- a/river/Server.zig +++ b/river/Server.zig @@ -51,6 +51,7 @@ backend: *wlr.Backend, session: ?*wlr.Session, renderer: *wlr.Renderer, +linux_dmabuf: *wlr.LinuxDmabufV1, allocator: *wlr.Allocator, xdg_shell: *wlr.XdgShell, @@ -98,7 +99,7 @@ pub fn init(self: *Self) !void { try self.renderer.initWlShm(self.wl_server); if (self.renderer.getDmabufFormats() != null and self.renderer.getDrmFd() >= 0) { - _ = try wlr.LinuxDmabufV1.createWithRenderer(self.wl_server, 4, self.renderer); + self.linux_dmabuf = try wlr.LinuxDmabufV1.createWithRenderer(self.wl_server, 4, self.renderer); } self.allocator = try wlr.Allocator.autocreate(self.backend, self.renderer); -- cgit v1.2.3