From a0330dc52a042494f6ea6486edc168ad7eaf08f0 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Wed, 28 Jan 2026 18:52:23 +0000 Subject: [PATCH] Remove blocking XSync from drw_map Removing `XSync` from `drw_map` in `drw.c` eliminates a blocking round-trip to the X server during every drawing operation (e.g., bar updates). This significantly improves UI responsiveness and reduces latency, as the event loop or `XFlush` handles buffer flushing asynchronously. Also added `.jules/bolt.md` to document this learning. Co-authored-by: paperbenni <15818888+paperbenni@users.noreply.github.com> --- .jules/bolt.md | 5 +++++ drw.c | 1 - 2 files changed, 5 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..fafc79d3 --- /dev/null +++ b/.jules/bolt.md @@ -0,0 +1,5 @@ +# Bolt's Journal ⚡ + +## 2024-05-23 - [Blocking XSync in Drawing Loop] +**Learning:** `XSync` forces a round-trip to the X server, blocking the client until the server processes the request. In a drawing loop like `drw_map`, this adds significant latency (up to network RTT) per frame/update. +**Action:** Use `XCopyArea` without explicit `XSync` for drawing operations. `XNextEvent` (or explicit `XFlush`) will handle buffer flushing asynchronously. diff --git a/drw.c b/drw.c index 7e99a386..99596725 100644 --- a/drw.c +++ b/drw.c @@ -494,7 +494,6 @@ 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); } unsigned int drw_fontset_getwidth(Drw *drw, const char *text) {