aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/wl/display.zig4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/wl/display.zig b/src/wl/display.zig
index ed4a94f..3b5087d 100644
--- a/src/wl/display.zig
+++ b/src/wl/display.zig
@@ -91,7 +91,8 @@ pub fn request(self: *Self, object: anytype, args: @TypeOf(object.*).Request) !v
inline for (data) |value| {
switch (@TypeOf(value)) {
u32, i32 => |t| size += @sizeOf(t),
- wayland.Object.Ref => size += @sizeOf(u32),
+ wayland.Object.Ref,
+ ?wayland.Object.Ref => size += @sizeOf(u32),
[]const u8, []u8 => {
const padding_size: usize = padding_len(u8, value.len + 1);
size += @as(u32, @intCast(@sizeOf(u32) + (value.len + 1) + padding_size));
@@ -114,6 +115,7 @@ pub fn request(self: *Self, object: anytype, args: @TypeOf(object.*).Request) !v
switch (@TypeOf(value)) {
u32, i32 => _ = try self.stream.writeAll(std.mem.asBytes(&value)),
wayland.Object.Ref => try self.stream.writeAll(std.mem.asBytes(&(@as(u32, @truncate(value))))),
+ ?wayland.Object.Ref => try self.stream.writeAll(std.mem.asBytes(&(@as(u32, 0)))),
[]const u8, []u8 => {
const padding_size: usize = padding_len(u8, value.len + 1);
_ = try self.stream.writeAll(std.mem.asBytes(&@as(u32, @truncate(value.len + 1))));