core: fix background not blurred under transparent windows
When a window has 0 opacity, it's rendering is skipped completely. Thus its background isn't blurred. This commit fixes that. Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
This commit is contained in:
		| @ -252,7 +252,10 @@ void paint_all_new(session_t *ps, struct managed_win *t, bool ignore_damage) { | ||||
| 			ps->backend_data->ops->compose(ps->backend_data, w->win_image, | ||||
| 			                               w->g.x, w->g.y, | ||||
| 			                               ®_paint_in_bound, ®_visible); | ||||
| 		} else { | ||||
| 		} else if (w->opacity * MAX_ALPHA >= 1){ | ||||
| 			// We don't need to paint the window body itself if it's | ||||
| 			// completely transparent. | ||||
|  | ||||
| 			// For window image processing, we don't need to limit the process | ||||
| 			// region to damage, since the window image data is independent | ||||
| 			// from the target image data, which we want to protect. | ||||
|  | ||||
| @ -511,7 +511,8 @@ static struct managed_win *paint_preprocess(session_t *ps, bool *fade_running) { | ||||
| 		if (!w->ever_damaged || w->g.x + w->g.width < 1 || | ||||
| 		    w->g.y + w->g.height < 1 || w->g.x >= ps->root_width || | ||||
| 		    w->g.y >= ps->root_height || w->state == WSTATE_UNMAPPED || | ||||
| 		    (double)w->opacity * MAX_ALPHA < 1 || w->paint_excluded) { | ||||
| 		    ((double)w->opacity * MAX_ALPHA < 1 && !w->blur_background) || | ||||
| 		    w->paint_excluded) { | ||||
| 			// TODO: for consistency, even a window has 0 opacity, we still | ||||
| 			// probably need to blur its background, so to_paint shouldn't be | ||||
| 			// false for them. | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Yuxuan Shui
					Yuxuan Shui