standalone: force whole-output damage when the overlay shrinks on tab close
Deleting a tab while the overlay is up drops its row, shrinking the box. The overlay renders into the scene-output buffer outside the scene graph, so its old pixels are invisible to scene damage tracking: the vacated ring of the larger box stayed baked into the reused swapchain buffer. Bump the overlay damage sentinel when a toplevel dies while the overlay is shown, mirroring the reorder path.
This commit is contained in:
parent
e206e8433a
commit
6fa1c0dfb1
1 changed files with 8 additions and 0 deletions
|
|
@ -1851,6 +1851,14 @@ static void handle_toplevel_destroy(struct wl_listener *listener, void *data) {
|
|||
struct wlr_xdg_toplevel *toplevel = app->toplevel;
|
||||
app->toplevel = NULL;
|
||||
app->tree = NULL;
|
||||
|
||||
/* The overlay's row for this tab disappears the moment the toplevel does,
|
||||
shrinking the box mid-menu. The overlay is drawn into the scene-output
|
||||
buffer outside the scene graph, so its damage trackers never learn about
|
||||
the old pixels; without whole-output damage the vacated ring of the
|
||||
larger box stays baked into the reused swapchain buffer. */
|
||||
if (host.overlay_visible && server.standalone)
|
||||
standalone_overlay_damage();
|
||||
if (app->icon_tex) {
|
||||
glDeleteTextures(1, &app->icon_tex);
|
||||
app->icon_tex = 0;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue