river-status: clean up initialization

This commit is contained in:
Isaac Freund 2020-08-21 20:29:05 +02:00
parent 997b151df2
commit 0b2c992f4d
No known key found for this signature in database
GPG key ID: 86DED400DDFD7A11
3 changed files with 15 additions and 27 deletions

View file

@ -27,16 +27,13 @@ const Output = @import("Output.zig");
const View = @import("View.zig"); const View = @import("View.zig");
const ViewStack = @import("view_stack.zig").ViewStack; const ViewStack = @import("view_stack.zig").ViewStack;
const implementation = c.struct_zriver_output_status_v1_interface{ const implementation = c.struct_zriver_output_status_v1_interface{ .destroy = destroy };
.destroy = destroy,
};
output: *Output, output: *Output,
wl_resource: *c.wl_resource, wl_resource: *c.wl_resource,
pub fn init(self: *Self, output: *Output, wl_resource: *c.wl_resource) void { pub fn init(self: *Self, output: *Output, wl_resource: *c.wl_resource) void {
self.output = output; self.* = .{ .output = output, .wl_resource = wl_resource };
self.wl_resource = wl_resource;
c.wl_resource_set_implementation(wl_resource, &implementation, self, handleResourceDestroy); c.wl_resource_set_implementation(wl_resource, &implementation, self, handleResourceDestroy);

View file

@ -26,21 +26,13 @@ const Seat = @import("Seat.zig");
const Output = @import("Output.zig"); const Output = @import("Output.zig");
const View = @import("View.zig"); const View = @import("View.zig");
const FocusState = enum { const implementation = c.struct_zriver_seat_status_v1_interface{ .destroy = destroy };
focused,
unfocused,
};
const implementation = c.struct_zriver_seat_status_v1_interface{
.destroy = destroy,
};
seat: *Seat, seat: *Seat,
wl_resource: *c.wl_resource, wl_resource: *c.wl_resource,
pub fn init(self: *Self, seat: *Seat, wl_resource: *c.wl_resource) void { pub fn init(self: *Self, seat: *Seat, wl_resource: *c.wl_resource) void {
self.seat = seat; self.* = .{ .seat = seat, .wl_resource = wl_resource };
self.wl_resource = wl_resource;
c.wl_resource_set_implementation(wl_resource, &implementation, self, handleResourceDestroy); c.wl_resource_set_implementation(wl_resource, &implementation, self, handleResourceDestroy);
@ -60,7 +52,7 @@ fn destroy(wl_client: ?*c.wl_client, wl_resource: ?*c.wl_resource) callconv(.C)
c.wl_resource_destroy(wl_resource); c.wl_resource_destroy(wl_resource);
} }
pub fn sendOutput(self: Self, state: FocusState) void { pub fn sendOutput(self: Self, state: enum { focused, unfocused }) void {
const wl_client = c.wl_resource_get_client(self.wl_resource); const wl_client = c.wl_resource_get_client(self.wl_resource);
const output_resources = &self.seat.focused_output.wlr_output.resources; const output_resources = &self.seat.focused_output.wlr_output.resources;
var output_resource = c.wl_resource_from_link(output_resources.next); var output_resource = c.wl_resource_from_link(output_resources.next);

View file

@ -37,21 +37,20 @@ const implementation = c.struct_zriver_status_manager_v1_interface{
.get_river_seat_status = getRiverSeatStatus, .get_river_seat_status = getRiverSeatStatus,
}; };
// TODO: remove this field, move allocator to util or something
server: *Server,
wl_global: *c.wl_global, wl_global: *c.wl_global,
listen_display_destroy: c.wl_listener, listen_display_destroy: c.wl_listener = undefined,
pub fn init(self: *Self, server: *Server) !void { pub fn init(self: *Self, server: *Server) !void {
self.server = server; self.* = .{
self.wl_global = c.wl_global_create( .wl_global = c.wl_global_create(
server.wl_display, server.wl_display,
&c.zriver_status_manager_v1_interface, &c.zriver_status_manager_v1_interface,
protocol_version, protocol_version,
self, self,
bind, bind,
) orelse return error.OutOfMemory; ) orelse return error.OutOfMemory,
};
self.listen_display_destroy.notify = handleDisplayDestroy; self.listen_display_destroy.notify = handleDisplayDestroy;
c.wl_display_add_destroy_listener(server.wl_display, &self.listen_display_destroy); c.wl_display_add_destroy_listener(server.wl_display, &self.listen_display_destroy);