Faster image cache key generation

This commit is contained in:
Kovid Goyal 2024-02-13 11:09:07 +05:30
parent de92470f0d
commit 91013a4e05
No known key found for this signature in database
GPG key ID: 06BC317B515ACE7C

View file

@ -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)