Refresh stale image in critical section

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
This commit is contained in:
Yuxuan Shui
2019-05-22 22:38:22 +01:00
parent b5da914920
commit 094f00a048
3 changed files with 30 additions and 22 deletions

View File

@ -796,6 +796,7 @@ void win_on_win_size_change(session_t *ps, struct managed_win *w) {
if (w->state == WSTATE_MAPPED || w->state == WSTATE_MAPPING ||
w->state == WSTATE_FADING) {
w->flags |= WIN_FLAGS_IMAGE_STALE;
ps->pending_updates = true;
} else {
assert(w->state == WSTATE_UNMAPPED);
}
@ -966,7 +967,7 @@ static struct win *add_win(session_t *ps, xcb_window_t id, struct list_node *pre
new_w->destroyed = false;
HASH_ADD_INT(ps->windows, id, new_w);
ps->has_new_window = true;
ps->pending_updates = true;
return new_w;
}
@ -1462,6 +1463,7 @@ void win_update_bounding_shape(session_t *ps, struct managed_win *w) {
// otherwise win_data is not valid
assert(w->state != WSTATE_UNMAPPING && w->state != WSTATE_DESTROYING);
w->flags |= WIN_FLAGS_IMAGE_STALE;
ps->pending_updates = true;
}
free_paint(ps, &w->paint);
free_paint(ps, &w->shadow_paint);