diff --git a/src/animation/client.h b/src/animation/client.h index e94f872a..a5a10434 100644 --- a/src/animation/client.h +++ b/src/animation/client.h @@ -1182,6 +1182,10 @@ bool client_draw_frame(Client *c) { if (!c || !client_surface(c)->mapped) return false; + if (c->animation.running && client_is_initing(c)) { + return true; + } + if (!c->need_output_flush) { return client_apply_focus_opacity(c); } diff --git a/src/client/client.h b/src/client/client.h index 4788e448..708d7cc0 100644 --- a/src/client/client.h +++ b/src/client/client.h @@ -491,6 +491,14 @@ static inline bool client_request_maximize(Client *c, void *data) { return c->surface.xdg->toplevel->requested.maximized; } +static inline bool client_is_initing(Client *c) { +#ifdef XWAYLAND + if (client_is_x11(c)) + return false; +#endif + return c->surface.xdg->initial_commit; +} + static inline void client_set_size_bound(Client *c) { struct wlr_xdg_toplevel *toplevel; struct wlr_xdg_toplevel_state state;