summaryrefslogtreecommitdiff
path: root/src/wayland/clipboard.c
diff options
context:
space:
mode:
authorBerke Güzel <wenekar1@gmail.com>2026-10-11 23:35:00 +0300
committerBerke Güzel <wenekar1@gmail.com>2026-10-11 23:35:00 +0300
commit5bbcd2c036dd19d3293d9abc4d44014a5108a5ed (patch)
tree2ca0c8f4df7527a9596ef6fb011a6d2c0f742b9e /src/wayland/clipboard.c
parent5530c662bb53837d64a154e3b580d41adb6cc8b9 (diff)
opt: shrink input event to 48B, pack mouse event to 32B, and shave 2KB off yasl_surface
- Compact yasl_mouse_event from 36B to 32B (half a cacheline, 0 holes) - Compact yasl_input_event from 56B to 48B (0 holes) - Reduce yasl_surface by 2,048 bytes (shaving 32 full cachelines per surface) - Optimize UTF-8 sanitize with vectorized validation fast-path - Fast-path MIME prefix match in clipboard transfers
Diffstat (limited to 'src/wayland/clipboard.c')
-rw-r--r--src/wayland/clipboard.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/wayland/clipboard.c b/src/wayland/clipboard.c
index 324644f..0e6ce33 100644
--- a/src/wayland/clipboard.c
+++ b/src/wayland/clipboard.c
@@ -170,9 +170,12 @@ static struct transfer *start_transfer(struct clipboard *c, int fd, bool sending
static const char *match_text_mime(const char *mime)
{
- if (!strcasecmp(mime, "text/plain;charset=utf-8")) return "text/plain;charset=utf-8";
- if (!strcasecmp(mime, "text/plain;charset=utf8")) return "text/plain;charset=utf8";
- if (!strcasecmp(mime, "text/plain")) return "text/plain";
+ if (unlikely(!mime)) return NULL;
+ if (likely(!strncasecmp(mime, "text/plain", 10))) {
+ if (!strcasecmp(mime, "text/plain;charset=utf-8")) return "text/plain;charset=utf-8";
+ if (!strcasecmp(mime, "text/plain;charset=utf8")) return "text/plain;charset=utf8";
+ if (!strcasecmp(mime, "text/plain")) return "text/plain";
+ }
if (!strcasecmp(mime, "UTF8_STRING")) return "UTF8_STRING";
if (!strcasecmp(mime, "STRING")) return "STRING";
if (!strcasecmp(mime, "TEXT")) return "TEXT";