core: don't try rebinding the window image when unredirected
Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
This commit is contained in:
parent
efe63f5380
commit
9ed1b985c5
|
@ -502,7 +502,8 @@ static struct managed_win *paint_preprocess(session_t *ps, bool *fade_running) {
|
||||||
(w->flags & WIN_FLAGS_IMAGE_ERROR) == 0 && to_paint) {
|
(w->flags & WIN_FLAGS_IMAGE_ERROR) == 0 && to_paint) {
|
||||||
// Image needs to be updated, update it.
|
// Image needs to be updated, update it.
|
||||||
w->flags &= ~WIN_FLAGS_IMAGE_STALE;
|
w->flags &= ~WIN_FLAGS_IMAGE_STALE;
|
||||||
if (w->state != WSTATE_UNMAPPING && w->state != WSTATE_DESTROYING) {
|
if (w->state != WSTATE_UNMAPPING &&
|
||||||
|
w->state != WSTATE_DESTROYING && ps->redirected) {
|
||||||
// Rebind image only when the window does have an image
|
// Rebind image only when the window does have an image
|
||||||
// available
|
// available
|
||||||
if (!win_try_rebind_image(ps, w)) {
|
if (!win_try_rebind_image(ps, w)) {
|
||||||
|
@ -705,6 +706,7 @@ static void destroy_backend(session_t *ps) {
|
||||||
if (!w) {
|
if (!w) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ps->backend_data) {
|
if (ps->backend_data) {
|
||||||
if (w->state == WSTATE_MAPPED) {
|
if (w->state == WSTATE_MAPPED) {
|
||||||
win_release_image(ps->backend_data, w);
|
win_release_image(ps->backend_data, w);
|
||||||
|
|
|
@ -193,6 +193,7 @@ void add_damage_from_win(session_t *ps, const struct managed_win *w) {
|
||||||
|
|
||||||
/// Release the images attached to this window
|
/// Release the images attached to this window
|
||||||
void win_release_image(backend_t *base, struct managed_win *w) {
|
void win_release_image(backend_t *base, struct managed_win *w) {
|
||||||
|
log_debug("Releasing image of window %#010x (%s)", w->base.id, w->name);
|
||||||
assert(w->win_image || (w->flags & WIN_FLAGS_IMAGE_ERROR));
|
assert(w->win_image || (w->flags & WIN_FLAGS_IMAGE_ERROR));
|
||||||
if (w->win_image) {
|
if (w->win_image) {
|
||||||
base->ops->release_image(base, w->win_image);
|
base->ops->release_image(base, w->win_image);
|
||||||
|
@ -218,7 +219,7 @@ _win_bind_image(session_t *ps, struct managed_win *w, void **win_image, void **s
|
||||||
free(e);
|
free(e);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
log_trace("New named pixmap %#010x", pixmap);
|
log_trace("New named pixmap for %#010x (%s) : %#010x", w->base.id, w->name, pixmap);
|
||||||
*win_image = ps->backend_data->ops->bind_pixmap(
|
*win_image = ps->backend_data->ops->bind_pixmap(
|
||||||
ps->backend_data, pixmap, x_get_visual_info(ps->c, w->a.visual), true);
|
ps->backend_data, pixmap, x_get_visual_info(ps->c, w->a.visual), true);
|
||||||
if (!*win_image) {
|
if (!*win_image) {
|
||||||
|
|
Loading…
Reference in New Issue