diff options
| author | Isaac Freund <ifreund@ifreund.xyz> | 2020-03-25 16:24:21 +0100 |
|---|---|---|
| committer | Isaac Freund <ifreund@ifreund.xyz> | 2020-03-25 16:24:21 +0100 |
| commit | ac0c0449dcb23542595b77e220e70f7661f76fce (patch) | |
| tree | b7ace97002be3b3034df4051ea36b2affa027688 /src/seat.zig | |
| parent | 34e47360f5f8412d950eab788acc60073f86b0b3 (diff) | |
| download | river-ac0c0449dcb23542595b77e220e70f7661f76fce.tar.gz river-ac0c0449dcb23542595b77e220e70f7661f76fce.tar.xz | |
Simplify initialization functions
Diffstat (limited to 'src/seat.zig')
| -rw-r--r-- | src/seat.zig | 29 |
1 files changed, 12 insertions, 17 deletions
diff --git a/src/seat.zig b/src/seat.zig index 2f92baa..3e753ec 100644 --- a/src/seat.zig +++ b/src/seat.zig @@ -18,34 +18,29 @@ pub const Seat = struct { // Mulitple keyboards are handled separately keyboards: std.TailQueue(Keyboard), - pub fn create(server: *Server) !Self { - var seat = Self{ - .server = server, - .wlr_seat = undefined, - .listen_new_input = c.wl_listener{ - .link = undefined, - .notify = handleNewInput, - }, - .cursor = undefined, - .keyboards = std.TailQueue(Keyboard).init(), - }; + pub fn init(self: *Self, server: *Server) !void { + self.server = server; // This seems to be the default seat name used by compositors - seat.wlr_seat = c.wlr_seat_create(server.wl_display, "seat0") orelse + // This will be automatically destroyed when the display is destroyed + self.wlr_seat = c.wlr_seat_create(server.wl_display, "seat0") orelse return error.CantCreateWlrSeat; - return seat; - } + try self.cursor.init(self); + errdefer self.cursor.destroy(); - pub fn init(self: *Self) !void { - self.cursor = try Cursor.create(self); - self.cursor.init(); + self.keyboards = std.TailQueue(Keyboard).init(); // Set up handler for all new input devices made available. This // includes keyboards, pointers, touch, etc. + self.listen_new_input.notify = handleNewInput; c.wl_signal_add(&self.server.wlr_backend.events.new_input, &self.listen_new_input); } + pub fn destroy(self: *Self) void { + self.cursor.destroy(); + } + fn addKeyboard(self: *Self, device: *c.wlr_input_device) !void { c.wlr_seat_set_keyboard(self.wlr_seat, device); |
