aboutsummaryrefslogtreecommitdiff
path: root/src/seat.zig
diff options
context:
space:
mode:
authorIsaac Freund <ifreund@ifreund.xyz>2020-03-25 16:24:21 +0100
committerIsaac Freund <ifreund@ifreund.xyz>2020-03-25 16:24:21 +0100
commitac0c0449dcb23542595b77e220e70f7661f76fce (patch)
treeb7ace97002be3b3034df4051ea36b2affa027688 /src/seat.zig
parent34e47360f5f8412d950eab788acc60073f86b0b3 (diff)
downloadriver-ac0c0449dcb23542595b77e220e70f7661f76fce.tar.gz
river-ac0c0449dcb23542595b77e220e70f7661f76fce.tar.xz
Simplify initialization functions
Diffstat (limited to 'src/seat.zig')
-rw-r--r--src/seat.zig29
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);