stevee

My wayland statusbar
git clone git://gtms.dev/stevee
Log | Files | Refs | README | LICENSE

Widget.zig (833B)


      1 const std = @import("std");
      2 const mem = std.mem;
      3 
      4 const wl = @import("wayland").client.wl;
      5 
      6 const Buffer = @import("Buffer.zig");
      7 const Widget = @This();
      8 
      9 const state = &@import("root").state;
     10 
     11 surface: *wl.Surface,
     12 subsurface: *wl.Subsurface,
     13 buffers: [2]Buffer,
     14 
     15 pub fn init(background: *wl.Surface) !Widget {
     16     const compositor = state.wayland.compositor.?;
     17     const subcompositor = state.wayland.subcompositor.?;
     18 
     19     const surface = try compositor.createSurface();
     20     const subsurface = try subcompositor.getSubsurface(surface, background);
     21 
     22     return Widget{
     23         .surface = surface,
     24         .subsurface = subsurface,
     25         .buffers = .{ .{}, .{} },
     26     };
     27 }
     28 
     29 pub fn deinit(self: *Widget) void {
     30     self.surface.destroy();
     31     self.subsurface.destroy();
     32     self.buffers[0].deinit();
     33     self.buffers[1].deinit();
     34 }