diff --git a/src/main.zig b/src/main.zig index bc96586..256c1a7 100644 --- a/src/main.zig +++ b/src/main.zig @@ -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 }, ); } diff --git a/src/platform.zig b/src/platform.zig index 43ddc16..5c08596 100644 --- a/src/platform.zig +++ b/src/platform.zig @@ -16,6 +16,7 @@ pub const Key = struct { const Keyboard = struct { esc: Key, + f1: Key, f: Key, r: Key, q: Key,