Add f1 key and add callback before main loop

This commit is contained in:
2026-03-08 20:08:41 +01:00
parent 31711e2f02
commit 01b1265c09
2 changed files with 15 additions and 14 deletions
+14 -14
View File
@@ -120,7 +120,7 @@ fn wlFrameHandleDone(data: ?*anyopaque, callback: ?*c.wl_callback, callback_data
const new_callback: ?*c.wl_callback = c.wl_surface_frame(wl_state.surface);
_ = c.wl_callback_add_listener(new_callback, &frame_callback_listener, wl_state);
std.debug.print("[Wayland] Frame ready\n", .{});
// std.debug.print("[Wayland] Frame ready\n", .{});
wl_state.frame_ready = true;
}
@@ -677,6 +677,11 @@ fn wlKeyboardHandleKey(data: ?*anyopaque, keyboard: ?*c.wl_keyboard, serial: u32
c.XKB_KEY_Escape => {
wl_state.running = false;
},
c.XKB_KEY_F1 => {
const already_pressed: bool = wl_state.app_input.key.f1.down;
wl_state.app_input.key.f1.down = pressed;
wl_state.app_input.key.f1.pressing = pressed and already_pressed;
},
c.XKB_KEY_f => {
const already_pressed: bool = wl_state.app_input.key.f.down;
wl_state.app_input.key.f.down = pressed;
@@ -880,7 +885,12 @@ pub fn main() u8 {
.permanent_storage = app_permanent_storage,
};
var frame_callback_added = false;
const callback: ?*c.wl_callback = c.wl_surface_frame(wl_surface);
if (callback) |cb| {
const ret: c_int = c.wl_callback_add_listener(cb, &frame_callback_listener, &wl_state);
std.debug.print("[Wayland] Added frame callback with ret {d}.\n", .{ret});
}
wl_state.frame_ready = true;
var timer = std.time.Timer.start() catch {
std.debug.print("[Wayland] ERROR: timer not supported.\n", .{});
@@ -998,23 +1008,13 @@ pub fn main() u8 {
_ = c.wl_display_roundtrip(display);
if (!frame_callback_added) {
const callback: ?*c.wl_callback = c.wl_surface_frame(wl_surface);
if (callback) |cb| {
const ret: c_int = c.wl_callback_add_listener(cb, &frame_callback_listener, &wl_state);
std.debug.print("[Wayland] Added frame callback with ret {d}.\n", .{ret});
}
frame_callback_added = true;
wl_state.frame_ready = true;
}
// std.posix.nanosleep(0, std.time.ns_per_ms * 32);
const current = timer.lap();
const current_ms = current / std.time.ns_per_ms;
const current_ms: f64 = @as(f64, @floatFromInt(current)) / std.time.ns_per_ms;
const sleep_time_ms: f64 = @as(f64, @floatFromInt(sleep_time)) / @as(f64, @floatFromInt(std.time.ns_per_ms));
std.debug.print(
"Render: {d:.3}ms, Sleeping: {d:.3}ms, Frame: {d}ms.\n",
"Render: {d:2.3}ms, Sleeping: {d:2.3}ms, Frame: {d:.3}ms.\n",
.{ render_time_ms, sleep_time_ms, current_ms },
);
}
+1
View File
@@ -16,6 +16,7 @@ pub const Key = struct {
const Keyboard = struct {
esc: Key,
f1: Key,
f: Key,
r: Key,
q: Key,