summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnder Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>2012-01-27 17:17:39 +0200
committerKristian Høgsberg <krh@bitplanet.net>2012-01-27 11:17:13 -0500
commite018b04c40a653f1aa8d0d326270b43e5ef0457b (patch)
tree51536b169e4785ee5fea916e0dd676081d9d08d5
parent42c8f60506aec8ace5fa295d6f45b153ff3b0fb7 (diff)
window: fix resizing of windows backed by shm buffers
When window_attach_surface() calls window_get_resize_dx_dy(), window->resize_edges is cleared. However if there is already a pending surface to be attached, the resize won't be done until the following call to window_attach_surface(). In this next call, since resize_edges is now zero, the top-left corner of the window will be unchanged. If the user is resizing from the top or left border, this causes the resize to happen in the wrong direction. This patch changes window_attach_surface() to call window_get_resize_dx_dy() only if an attach will actually happen. Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
-rw-r--r--clients/window.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/clients/window.c b/clients/window.c
index d828725..6c00186 100644
--- a/clients/window.c
+++ b/clients/window.c
@@ -832,8 +832,6 @@ window_attach_surface(struct window *window)
case WINDOW_BUFFER_TYPE_EGL_IMAGE:
#endif
case WINDOW_BUFFER_TYPE_SHM:
- window_get_resize_dx_dy(window, &x, &y);
-
if (window->pending_surface != NULL)
return;
@@ -844,6 +842,7 @@ window_attach_surface(struct window *window)
display_get_buffer_for_surface(display,
window->pending_surface);
+ window_get_resize_dx_dy(window, &x, &y);
wl_surface_attach(window->surface, buffer, x, y);
window->server_allocation = window->allocation;
cb = wl_display_sync(display->display);