From f53e7c147b48b4a5b81af6dac606f971c8179390 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Thu, 22 Jan 2026 18:59:58 +0000 Subject: [PATCH] perf: use XFlush instead of XSync in drw_map --- .jules/bolt.md | 3 +++ drw.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 .jules/bolt.md diff --git a/.jules/bolt.md b/.jules/bolt.md new file mode 100644 index 00000000..dd1c6a84 --- /dev/null +++ b/.jules/bolt.md @@ -0,0 +1,3 @@ +## 2024-05-23 - XSync vs XFlush in Drawing Paths +**Learning:** Found `XSync` being used in `drw_map`, causing blocking round-trips to the X server for every buffer swap. This defeats the purpose of double buffering and significantly reduces rendering throughput. +**Action:** Replace `XSync` with `XFlush` in pure drawing functions. Only use `XSync` when synchronization or error handling is explicitly required. diff --git a/drw.c b/drw.c index 7e99a386..e3f9501b 100644 --- a/drw.c +++ b/drw.c @@ -494,7 +494,7 @@ void drw_map(Drw *drw, Window win, int x, int y, unsigned int w, } XCopyArea(drw->dpy, drw->drawable, win, drw->gc, x, y, w, h, x, y); - XSync(drw->dpy, False); + XFlush(drw->dpy); } unsigned int drw_fontset_getwidth(Drw *drw, const char *text) {