-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtypes.zig
More file actions
70 lines (61 loc) · 2.04 KB
/
types.zig
File metadata and controls
70 lines (61 loc) · 2.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
const std = @import("std");
const Allocator = std.mem.Allocator;
const os = @import("os.zig");
pub const amdgpu = @import("types/amdgpu.zig");
pub const asahi = @import("types/asahi.zig");
pub usingnamespace @import("types/base.zig");
pub usingnamespace @import("types/gem.zig");
pub usingnamespace @import("types/map.zig");
pub usingnamespace @import("types/mode.zig");
pub usingnamespace @import("types/mode/crtc.zig");
pub usingnamespace @import("types/mode/conn.zig");
pub usingnamespace @import("types/mode/fb.zig");
pub usingnamespace @import("types/mode/plane.zig");
pub usingnamespace @import("types/mode/props.zig");
pub const Event = union(Type) {
vblank: VBlank,
flipComplete: VBlank,
crtcSeq: CrtcSeq,
pub const Base = extern struct {
type: Type = undefined,
length: u32 = 0,
};
pub const VBlank = extern struct {
userData: u64 = 0,
tvSec: u32 = 0,
tvUsec: u32 = 0,
seq: u64 = 0,
crtcId: u32 = 0,
};
pub const CrtcSeq = extern struct {
userData: u64 = 0,
timeNs: i64 = 0,
seq: u64 = 0,
};
pub const Type = enum(u32) {
vblank = 0x1,
flipComplete = 0x2,
crtcSeq = 0x3,
};
pub fn read(self: *Event, fd: std.os.fd_t) !void {
var base: Base = undefined;
_ = try std.os.read(fd, std.mem.asBytes(&base));
self.* = switch (base.type) {
.vblank => blk: {
var vblank: VBlank = undefined;
_ = try std.os.read(fd, std.mem.asBytes(&vblank));
break :blk .{ .vblank = vblank };
},
.flipComplete => blk: {
var vblank: VBlank = undefined;
_ = try std.os.read(fd, std.mem.asBytes(&vblank));
break :blk .{ .flipComplete = vblank };
},
.crtcSeq => blk: {
var crtcSeq: CrtcSeq = undefined;
_ = try std.os.read(fd, std.mem.asBytes(&crtcSeq));
break :blk .{ .crtcSeq = crtcSeq };
},
};
}
};