From cc538aa18ab88ae100d13bd8385e918381fe45c7 Mon Sep 17 00:00:00 2001 From: RGBCube Date: Wed, 17 May 2023 23:03:14 +0300 Subject: [PATCH] Adjust some stuff --- src/Spinner.zig | 21 ++++++++++----------- zterm.zig | 7 +++++-- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/Spinner.zig b/src/Spinner.zig index f9b5562..eadd3d0 100644 --- a/src/Spinner.zig +++ b/src/Spinner.zig @@ -5,24 +5,24 @@ const Thread = std.Thread; const time = std.time; const Spinner = @This(); -const default_frame_rate = 150 * time.ns_per_ms; +const default_framerate = 100 * time.ns_per_ms; const default_charset = [_][]const u8{ "|", "/", "-", "\\" }; keep_going: AtomicBool, spinner_thread: ?Thread, // The number of nanoseconds to wait between frames. -framerate: u64, +framerate_ns: u64, -charset: [4][]const u8, +charset: []const []const u8, message: []const u8, -pub fn new(framerate: ?u64, charset: ?[4][]const u8, message: ?[]const u8) Spinner { +pub fn new(framerate_ns: ?u64, charset: ?[]const []const u8, message: ?[]const u8) Spinner { return Spinner{ .keep_going = AtomicBool.init(false), .spinner_thread = null, - .framerate = framerate orelse default_frame_rate, - .charset = charset orelse default_charset, + .framerate_ns = framerate_ns orelse default_framerate, + .charset = charset orelse &default_charset, .message = message orelse "", }; } @@ -34,21 +34,20 @@ pub fn start(sp: *Spinner) !void { pub fn stop(sp: *Spinner) void { sp.keep_going.store(false, .SeqCst); - (sp.spinner_thread orelse unreachable).join(); + if (sp.spinner_thread) |*thread| thread.join(); } fn animateSpinnerOnce(sp: *Spinner) !void { var stdOut = std.io.getStdOut(); for (sp.charset) |frame| { + _ = try stdOut.write("\r"); + _ = try stdOut.write(frame); _ = try stdOut.write(" "); _ = try stdOut.write(sp.message); - // Jumps to the start of the line. - _ = try stdOut.write("\r"); - - time.sleep(sp.framerate); + time.sleep(sp.framerate_ns); } } diff --git a/zterm.zig b/zterm.zig index 5da36e2..f2c3beb 100644 --- a/zterm.zig +++ b/zterm.zig @@ -1,11 +1,14 @@ const Spinner = @import("src/Spinner.zig"); -const time = @import("std").time; +const std = @import("std"); +const time = std.time; pub fn main() !void { - var sp = Spinner.new(null, null, "Loading..."); + var sp = Spinner.new(100 * time.ns_per_ms, null, "Loading..."); try sp.start(); + time.sleep(5 * time.ns_per_s); + sp.stop(); }