core: bind shadow immediate in initialize_backend
This simplifies the logic a bit since we know a shadow is always bound (if needed) when the screen is redirected. Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
This commit is contained in:
parent
d5e8cf655c
commit
0fc6f9aee2
|
@ -758,7 +758,18 @@ static bool initialize_backend(session_t *ps) {
|
||||||
log_debug("Marking window %#010x (%s) for update after "
|
log_debug("Marking window %#010x (%s) for update after "
|
||||||
"redirection",
|
"redirection",
|
||||||
w->base.id, w->name);
|
w->base.id, w->name);
|
||||||
w->flags |= WIN_FLAGS_IMAGES_STALE;
|
if (w->shadow) {
|
||||||
|
struct color c = {
|
||||||
|
.red = ps->o.shadow_red,
|
||||||
|
.green = ps->o.shadow_green,
|
||||||
|
.blue = ps->o.shadow_blue,
|
||||||
|
.alpha = ps->o.shadow_opacity,
|
||||||
|
};
|
||||||
|
win_bind_shadow(ps->backend_data, w, c,
|
||||||
|
ps->gaussian_map);
|
||||||
|
}
|
||||||
|
|
||||||
|
w->flags |= WIN_FLAGS_PIXMAP_STALE;
|
||||||
ps->pending_updates = true;
|
ps->pending_updates = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -292,8 +292,8 @@ static inline bool win_bind_pixmap(struct backend_base *b, struct managed_win *w
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline bool win_bind_shadow(struct backend_base *b, struct managed_win *w,
|
bool win_bind_shadow(struct backend_base *b, struct managed_win *w, struct color c,
|
||||||
struct color c, struct conv *kernel) {
|
struct conv *kernel) {
|
||||||
assert(!w->shadow_image);
|
assert(!w->shadow_image);
|
||||||
assert(w->shadow);
|
assert(w->shadow);
|
||||||
w->shadow_image = b->ops->render_shadow(b, w->widthb, w->heightb, kernel, c.red,
|
w->shadow_image = b->ops->render_shadow(b, w->widthb, w->heightb, kernel, c.red,
|
||||||
|
|
|
@ -256,6 +256,9 @@ void win_process_updates(struct session *ps, struct managed_win *_w);
|
||||||
void win_process_flags(session_t *ps, struct managed_win *w);
|
void win_process_flags(session_t *ps, struct managed_win *w);
|
||||||
/// Queue an update on a window. A series of sanity checks are performed
|
/// Queue an update on a window. A series of sanity checks are performed
|
||||||
void win_queue_update(struct managed_win *_w, enum win_update update);
|
void win_queue_update(struct managed_win *_w, enum win_update update);
|
||||||
|
/// Bind a shadow to the window, with color `c` and shadow kernel `kernel`
|
||||||
|
bool win_bind_shadow(struct backend_base *b, struct managed_win *w, struct color c,
|
||||||
|
struct conv *kernel);
|
||||||
|
|
||||||
/// Start the unmap of a window. We cannot unmap immediately since we might need to fade
|
/// Start the unmap of a window. We cannot unmap immediately since we might need to fade
|
||||||
/// the window out.
|
/// the window out.
|
||||||
|
|
Loading…
Reference in New Issue