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 }