From: Rob Clark <r...@ti.com> The drmModeAddFB2() call will fail anyways, and cause us to unnecessarily set sprites_are_broken.
Signed-off-by: Rob Clark <r...@ti.com> --- src/compositor-drm.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/compositor-drm.c b/src/compositor-drm.c index d6e6c98..9132206 100644 --- a/src/compositor-drm.c +++ b/src/compositor-drm.c @@ -74,6 +74,13 @@ struct drm_compositor { struct gbm_surface *dummy_surface; EGLSurface dummy_egl_surface; + /* we need these parameters in order to not fail drmModeAddFB2() + * due to out of bounds dimensions, and then mistakenly set + * sprites_are_broken: + */ + uint32_t min_width, max_width; + uint32_t min_height, max_height; + struct wl_list sprite_list; int sprites_are_broken; @@ -556,6 +563,7 @@ drm_output_prepare_overlay_surface(struct weston_output *output_base, pixman_box32_t *box; uint32_t format; wl_fixed_t sx1, sy1, sx2, sy2; + int32_t width, height; if (c->sprites_are_broken) return -1; @@ -603,11 +611,21 @@ drm_output_prepare_overlay_surface(struct weston_output *output_base, if (!handle) return -1; + width = es->geometry.width; + height = es->geometry.height; + + /* if geometry is out of bounds, don't even bother trying because + * we know the AddFB2() call will fail: + */ + if ((c->min_width > width) || (width > c->max_width) || + (c->min_height > height) || (height > c->max_height)) + return -1; + handles[0] = handle; pitches[0] = stride; offsets[0] = 0; - ret = drmModeAddFB2(c->drm.fd, es->geometry.width, es->geometry.height, + ret = drmModeAddFB2(c->drm.fd, width, height, format, handles, pitches, offsets, &fb_id, 0); if (ret) { @@ -1527,6 +1545,11 @@ create_outputs(struct drm_compositor *ec, uint32_t option_connector, return -1; } + ec->min_width = resources->min_width; + ec->max_width = resources->max_width; + ec->min_height = resources->min_height; + ec->max_height = resources->max_height; + ec->num_crtcs = resources->count_crtcs; memcpy(ec->crtcs, resources->crtcs, sizeof(uint32_t) * ec->num_crtcs); -- 1.7.9.5 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel