diff options
| author | Isaac Freund <mail@isaacfreund.com> | 2024-01-03 17:23:53 -0600 |
|---|---|---|
| committer | Isaac Freund <mail@isaacfreund.com> | 2024-01-03 17:23:53 -0600 |
| commit | 28dcd8320ac478a9aba36da7e261bc676a5a723e (patch) | |
| tree | 67e1c8df72dcafac46524b82402952bf351ed8fa | |
| parent | 80ced04f684fafbbcbcd25f1359d9a41a33f7b68 (diff) | |
| download | river-28dcd8320ac478a9aba36da7e261bc676a5a723e.tar.gz river-28dcd8320ac478a9aba36da7e261bc676a5a723e.tar.xz | |
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.
| -rw-r--r-- | river/Root.zig | 2 | ||||
| -rw-r--r-- | river/Server.zig | 3 |
2 files changed, 4 insertions, 1 deletions
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); |
