compositor: wl_viewport destination 1x1 min
authorPekka Paalanen <pekka.paalanen@collabora.co.uk>
Fri, 4 Apr 2014 11:22:13 +0000 (14:22 +0300)
committerKristian Høgsberg <krh@bitplanet.net>
Mon, 7 Apr 2014 05:38:24 +0000 (22:38 -0700)
Ensure, that the resulting surface size is at least 1x1, even when
destination size is not set and source size is zero. Previously this
lead to zero surface size.

This can still happen due to wl_viewport.set(#, #, 0, 0, #, #) followed
by wl_viewport.set_destination(-1, -1).

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
src/compositor.c

index a076291..fd2decb 100644 (file)
@@ -1245,9 +1245,10 @@ weston_surface_set_size_from_buffer(struct weston_surface *surface)
        }
 
        if (vp->buffer.src_width != wl_fixed_from_int(-1)) {
-               surface_set_size(surface,
-                                fixed_round_up_to_int(vp->buffer.src_width),
-                                fixed_round_up_to_int(vp->buffer.src_height));
+               int32_t w = fixed_round_up_to_int(vp->buffer.src_width);
+               int32_t h = fixed_round_up_to_int(vp->buffer.src_height);
+
+               surface_set_size(surface, w ?: 1, h ?: 1);
                return;
        }