diff --git a/src/event.c b/src/event.c index 739540d..355aa33 100644 --- a/src/event.c +++ b/src/event.c @@ -270,6 +270,11 @@ static inline void ev_destroy_notify(session_t *ps, xcb_destroy_notify_event_t * if (w != NULL) { auto _ attr_unused = destroy_win_start(ps, w); } else if (mw != NULL) { + // XXX the hope here is the WM will destroy the frame window + // quickly after the client window is destroyed. Otherwise a + // frame window without a client window would linger around. Who + // knows what kind of bugs it could cause. This has caused at + // least one: #704 win_unmark_client(ps, mw); win_set_flags(mw, WIN_FLAGS_CLIENT_STALE); ps->pending_updates = true; diff --git a/src/picom.c b/src/picom.c index 8687c2f..ed79aec 100644 --- a/src/picom.c +++ b/src/picom.c @@ -980,8 +980,9 @@ static bool paint_preprocess(session_t *ps, bool *fade_running, bool *animation, if (w->state == WSTATE_UNMAPPED) { log_trace("|- is unmapped"); to_paint = false; - } else if (unlikely(w->base.id == ps->debug_window || - w->client_win == ps->debug_window)) { + } else if (unlikely(ps->debug_window != XCB_NONE) && + (w->base.id == ps->debug_window || + w->client_win == ps->debug_window)) { log_trace("|- is the debug window"); to_paint = false; } else if (!w->ever_damaged && w->state != WSTATE_UNMAPPING &&