aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIsaac Freund <mail@isaacfreund.com>2024-01-03 17:23:53 -0600
committerIsaac Freund <mail@isaacfreund.com>2024-01-03 17:23:53 -0600
commit28dcd8320ac478a9aba36da7e261bc676a5a723e (patch)
tree67e1c8df72dcafac46524b82402952bf351ed8fa
parent80ced04f684fafbbcbcd25f1359d9a41a33f7b68 (diff)
downloadriver-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.zig2
-rw-r--r--river/Server.zig3
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);