From 6e2ad0583cec0668ffafac93316b26c0d9d18073 Mon Sep 17 00:00:00 2001 From: Isaac Freund Date: Tue, 14 Apr 2020 13:46:40 +0200 Subject: Add a noop output using the noop backend This is intended for use when no real outputs are available. --- src/root.zig | 7 +++++++ src/server.zig | 11 ++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/root.zig b/src/root.zig index 0c470d2..bbda4b9 100644 --- a/src/root.zig +++ b/src/root.zig @@ -19,6 +19,9 @@ pub const Root = struct { wlr_output_layout: *c.wlr_output_layout, outputs: std.TailQueue(Output), + /// This output is used when no real outputs are available. + noop_output: Output, + /// Number of pending configures sent in the current transaction. /// A value of 0 means there is no current transaction. pending_configures: u32, @@ -37,6 +40,10 @@ pub const Root = struct { self.outputs = std.TailQueue(Output).init(); + const noop_wlr_output = c.river_wlr_noop_add_output(server.noop_backend) orelse + return error.CantAddNoopOutput; + try self.noop_output.init(self, noop_wlr_output); + self.pending_configures = 0; self.transaction_timer = null; diff --git a/src/server.zig b/src/server.zig index 4e42485..abb6b13 100644 --- a/src/server.zig +++ b/src/server.zig @@ -18,6 +18,7 @@ pub const Server = struct { wl_display: *c.wl_display, wl_event_loop: *c.wl_event_loop, wlr_backend: *c.wlr_backend, + noop_backend: *c.wlr_backend, wlr_renderer: *c.wlr_renderer, wlr_xdg_shell: *c.wlr_xdg_shell, @@ -47,12 +48,16 @@ pub const Server = struct { // The wlr_backend abstracts the input/output hardware. Autocreate chooses // the best option based on the environment, for example DRM when run from - // a tty or wayland if WAYLAND_DISPLAY is set. - // - // This frees itself.when the wl_display is destroyed. + // a tty or wayland if WAYLAND_DISPLAY is set. This frees itself when the + // wl_display is destroyed. self.wlr_backend = c.river_wlr_backend_autocreate(self.wl_display) orelse return error.CantCreateWlrBackend; + // This backend is used to create a noop output for use when no actual + // outputs are available. This frees itself when the wl_display is destroyed. + self.noop_backend = c.river_wlr_noop_backend_create(self.wl_display) orelse + return error.CantCreateNoopBackend; + // If we don't provide a renderer, autocreate makes a GLES2 renderer for us. // The renderer is responsible for defining the various pixel formats it // supports for shared memory, this configures that for clients. -- cgit v1.2.3