core: ensure stale flags aren't set in destroy_backend

After 60f733d17c, we can be sure stale
flags won't be seen in destroy_backend.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
This commit is contained in:
Yuxuan Shui 2020-11-29 00:12:40 +00:00
parent 60f733d17c
commit 0f975616d6
No known key found for this signature in database
GPG Key ID: D3A4405BE6CC17F4
1 changed files with 9 additions and 6 deletions

View File

@ -405,12 +405,15 @@ static void destroy_backend(session_t *ps) {
// Unmapped windows could still have shadow images, but not pixmap
// images
assert(!w->win_image || w->state != WSTATE_UNMAPPED);
// Windows can still have stale flags set. For mapped windows,
// this can happen when destroy_backend is called before the stale
// flags are handled (e.g. when destroy_backend is called in
// session_destroy, or configure_root); for unmapped windows, this
// is because their stale flags aren't handled until they are
// mapped.
if (win_check_flags_any(w, WIN_FLAGS_IMAGES_STALE) &&
w->state == WSTATE_MAPPED) {
log_warn("Stale flags set for mapped window %#010x "
"during backend destruction",
w->base.id);
assert(false);
}
// Unmapped windows can still have stale flags set, because their
// stale flags aren't handled until they are mapped.
win_clear_flags(w, WIN_FLAGS_IMAGES_STALE);
win_release_images(ps->backend_data, w);
}