From c0b58802bae0f75381251e5303cfd338374d7ba0 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Wed, 23 Aug 2023 11:17:58 -0700 Subject: [PATCH] terminal/kitty-gfx: images store transmit time --- src/terminal/kitty/graphics_exec.zig | 1 + src/terminal/kitty/graphics_image.zig | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/src/terminal/kitty/graphics_exec.zig b/src/terminal/kitty/graphics_exec.zig index 4dd638289..e340a8cce 100644 --- a/src/terminal/kitty/graphics_exec.zig +++ b/src/terminal/kitty/graphics_exec.zig @@ -297,6 +297,7 @@ const EncodeableError = Image.Error || Allocator.Error; fn encodeError(r: *Response, err: EncodeableError) void { switch (err) { error.OutOfMemory => r.message = "ENOMEM: out of memory", + error.InternalError => r.message = "EINVAL: internal error", error.InvalidData => r.message = "EINVAL: invalid data", error.DecompressionFailed => r.message = "EINVAL: decompression failed", error.FilePathTooLong => r.message = "EINVAL: file path too long", diff --git a/src/terminal/kitty/graphics_image.zig b/src/terminal/kitty/graphics_image.zig index a0c4eabac..4eb0d2f9d 100644 --- a/src/terminal/kitty/graphics_image.zig +++ b/src/terminal/kitty/graphics_image.zig @@ -244,6 +244,12 @@ pub const LoadingImage = struct { return error.InvalidData; } + // Set our time + self.image.transmit_time = std.time.Instant.now() catch |err| { + log.warn("failed to get time: {}", .{err}); + return error.InternalError; + }; + // Everything looks good, copy the image data over. var result = self.image; result.data = try self.data.toOwnedSlice(alloc); @@ -358,8 +364,10 @@ pub const Image = struct { format: command.Transmission.Format = .rgb, compression: command.Transmission.Compression = .none, data: []const u8 = "", + transmit_time: std.time.Instant = undefined, pub const Error = error{ + InternalError, InvalidData, DecompressionFailed, DimensionsRequired,