core: re-run paint_preprocess after redirecting
paint_preprocess calls redir_start if it decides to redirect the screen. redir_start might change the state of the windows. For example, when the image of the window fails to bind, redir_start sets the error flag. And those state changes might exclude the window from being rendered. Thus, paint_preprocess should be re-run to make sure the new states are honoured. Fixes a crash when window images fail to bind after redirecting. Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
This commit is contained in:
@ -98,6 +98,7 @@ void paint_all_new(session_t *ps, win *const t, bool ignore_damage) {
|
||||
// Whether this is beneficial is to be determined XXX
|
||||
for (win *w = t; w; w = w->prev_trans) {
|
||||
pixman_region32_subtract(®_visible, &ps->screen_reg, w->reg_ignore);
|
||||
assert(!(w->flags & WIN_FLAGS_IMAGE_ERROR));
|
||||
|
||||
// The bounding shape of the window, in global/target coordinates
|
||||
// reminder: bounding shape contains the WM frame
|
||||
|
Reference in New Issue
Block a user