From 91013a4e056ab1c1630021711365c2b4085ed0ea Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 13 Feb 2024 11:09:07 +0530 Subject: [PATCH] Faster image cache key generation --- kitty/graphics.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/kitty/graphics.c b/kitty/graphics.c index e348faeab..2a01a230a 100644 --- a/kitty/graphics.c +++ b/kitty/graphics.c @@ -27,11 +27,14 @@ PyTypeObject GraphicsManager_Type; #define RAII_CoalescedFrameData(name, initializer) __attribute__((cleanup(cfd_free))) CoalescedFrameData name = initializer // caching {{{ -#define CACHE_KEY_BUFFER_SIZE 32 +#define member_size(type, member) sizeof(((type *)0)->member) +#define CACHE_KEY_BUFFER_SIZE (member_size(ImageAndFrame, image_id) + member_size(ImageAndFrame, frame_id)) static size_t cache_key(const ImageAndFrame x, char *key) { - return snprintf(key, CACHE_KEY_BUFFER_SIZE, "%llx:%x", x.image_id, x.frame_id); + memcpy(key, &x.image_id, sizeof(x.image_id)); + memcpy(key + sizeof(x.image_id), &x.frame_id, sizeof(x.frame_id)); + return CACHE_KEY_BUFFER_SIZE; } #define CK(x) key, cache_key(x, key)