aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorIsaac Freund <ifreund@ifreund.xyz>2020-04-14 13:46:40 +0200
committerIsaac Freund <ifreund@ifreund.xyz>2020-04-14 13:46:40 +0200
commit6e2ad0583cec0668ffafac93316b26c0d9d18073 (patch)
tree83703c90c56e96ae464e065810816c43e6c3e4eb /src
parent93f4133812972ca216dc387e78e5b89a3a008a00 (diff)
downloadriver-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.zig7
-rw-r--r--src/server.zig11
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.