mirror of
https://github.com/DreamMaoMao/maomaowm.git
synced 2026-02-26 01:40:18 -05:00
opt: flush the blur background cache when unmap a background layer
This commit is contained in:
parent
5ae8975b11
commit
f251615524
1 changed files with 15 additions and 9 deletions
24
src/mango.c
24
src/mango.c
|
|
@ -2275,6 +2275,19 @@ static void iter_layer_scene_buffers(struct wlr_scene_buffer *buffer,
|
|||
}
|
||||
}
|
||||
|
||||
void layer_flush_blur_background(LayerSurface *l) {
|
||||
if (!blur)
|
||||
return;
|
||||
|
||||
// 如果背景层发生变化,标记优化的模糊背景缓存需要更新
|
||||
if (l->layer_surface->current.layer ==
|
||||
ZWLR_LAYER_SHELL_V1_LAYER_BACKGROUND) {
|
||||
if (l->mon) {
|
||||
wlr_scene_optimized_blur_mark_dirty(l->mon->blur);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void maplayersurfacenotify(struct wl_listener *listener, void *data) {
|
||||
LayerSurface *l = wl_container_of(listener, l, map);
|
||||
struct wlr_layer_surface_v1 *layer_surface = l->layer_surface;
|
||||
|
|
@ -2402,15 +2415,7 @@ void commitlayersurfacenotify(struct wl_listener *listener, void *data) {
|
|||
}
|
||||
}
|
||||
|
||||
if (blur) {
|
||||
// 如果背景层发生变化,标记优化的模糊背景缓存需要更新
|
||||
if (layer_surface->current.layer ==
|
||||
ZWLR_LAYER_SHELL_V1_LAYER_BACKGROUND) {
|
||||
if (l->mon) {
|
||||
wlr_scene_optimized_blur_mark_dirty(l->mon->blur);
|
||||
}
|
||||
}
|
||||
}
|
||||
layer_flush_blur_background(l);
|
||||
|
||||
if (layer_surface == exclusive_focus &&
|
||||
layer_surface->current.keyboard_interactive !=
|
||||
|
|
@ -5643,6 +5648,7 @@ void unmaplayersurfacenotify(struct wl_listener *listener, void *data) {
|
|||
focusclient(focustop(selmon), 1);
|
||||
motionnotify(0, NULL, 0, 0, 0, 0);
|
||||
l->being_unmapped = false;
|
||||
layer_flush_blur_background(l);
|
||||
wlr_scene_node_destroy(&l->shadow->node);
|
||||
l->shadow = NULL;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue