diff options
author | David Herrmann <dh.herrmann@gmail.com> | 2013-06-11 18:57:38 +0200 |
---|---|---|
committer | David Herrmann <dh.herrmann@gmail.com> | 2013-06-11 18:57:38 +0200 |
commit | 3d2d8f5984a5bb9443d9904be8e4d2e4bd94991a (patch) | |
tree | 770f1f865c79a6b9c48c2b13119a805d40a4a010 | |
parent | 4e0b9813de9e75b5b487e76aa48799b332555b21 (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.c | 8 |
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); |