1const std = @import("std");
2const mem = std.mem;
3
4const wl = @import("wayland").client.wl;
5
6const Buffer = @import("Buffer.zig");
7const Widget = @This();
8
9const state = &@import("root").state;
10
11surface: *wl.Surface,
12subsurface: *wl.Subsurface,
13buffers: [2]Buffer,
14
15pub 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
29pub fn deinit(self: *Widget) void {
30 self.subsurface.destroy();
31 self.surface.destroy();
32 self.buffers[0].deinit();
33 self.buffers[1].deinit();
34}