diff options
| author | Isaac Freund <ifreund@ifreund.xyz> | 2020-04-14 13:46:40 +0200 |
|---|---|---|
| committer | Isaac Freund <ifreund@ifreund.xyz> | 2020-04-14 13:46:40 +0200 |
| commit | 6e2ad0583cec0668ffafac93316b26c0d9d18073 (patch) | |
| tree | 83703c90c56e96ae464e065810816c43e6c3e4eb /src | |
| parent | 93f4133812972ca216dc387e78e5b89a3a008a00 (diff) | |
| download | river-6e2ad0583cec0668ffafac93316b26c0d9d18073.tar.gz river-6e2ad0583cec0668ffafac93316b26c0d9d18073.tar.xz | |
Add a noop output using the noop backend
This is intended for use when no real outputs are available.
Diffstat (limited to 'src')
| -rw-r--r-- | src/root.zig | 7 | ||||
| -rw-r--r-- | src/server.zig | 11 |
2 files changed, 15 insertions, 3 deletions
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. |
