summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Herrmann <dh.herrmann@gmail.com>2013-06-11 18:57:38 +0200
committerDavid Herrmann <dh.herrmann@gmail.com>2013-06-11 18:57:38 +0200
commit3d2d8f5984a5bb9443d9904be8e4d2e4bd94991a (patch)
tree770f1f865c79a6b9c48c2b13119a805d40a4a010
parent4e0b9813de9e75b5b487e76aa48799b332555b21 (diff)
wlt: toolkit: dont depend on implicit buffer releases
Wayland compositors are not required to send buffer release notifications on an implicit buffer-attach. That is, an attach->commit->commit series does not cause a buffer-release notification after the second commit. Hence, send a buffer-attach on every commit that requires a new buffer-release notification. For the related wayland-protocol changes, see: http://cgit.freedesktop.org/wayland/wayland/commit/?id=7165bf21917ed1c4f5ec823a1e1642a9e83aa984 This fixes a bug where wlterm only redraws the window-content when resizing (due to explicit buffer-attach calls during redraw). Reported by: MoD Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
-rw-r--r--src/wlt_toolkit.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/src/wlt_toolkit.c b/src/wlt_toolkit.c
index 18a0233..f2a118f 100644
--- a/src/wlt_toolkit.c
+++ b/src/wlt_toolkit.c
@@ -1283,20 +1283,18 @@ static void wlt_window_do_redraw(struct wlt_window *wnd,
}
wnd->skip_damage = false;
+ x = 0;
+ y = 0;
if (!wnd->buffer_attached) {
wnd->buffer_attached = true;
if (wnd->resize_edges & WL_SHELL_SURFACE_RESIZE_LEFT)
x = (int)oldw - wnd->buffer.width;
- else
- x = 0;
if (wnd->resize_edges & WL_SHELL_SURFACE_RESIZE_TOP)
y = (int)oldh - wnd->buffer.height;
- else
- y = 0;
- wl_surface_attach(wnd->w_surface, wnd->w_buffer, x, y);
wnd->resize_edges = 0;
}
+ wl_surface_attach(wnd->w_surface, wnd->w_buffer, x, y);
wl_surface_damage(wnd->w_surface, 0, 0, wnd->buffer.width,
wnd->buffer.height);
wl_surface_commit(wnd->w_surface);