struct drm_plane *scanout_plane = output->scanout_plane;
struct drm_plane_state *state;
struct drm_fb *fb;
- pixman_box32_t *extents;
assert(!b->sprites_are_broken);
assert(b->atomic_modeset);
/* Check the view spans exactly the output size, calculated in the
* logical co-ordinate space. */
- extents = pixman_region32_extents(&ev->transform.boundingbox);
- if (extents->x1 != output->base.x ||
- extents->y1 != output->base.y ||
- extents->x2 != output->base.x + output->base.width ||
- extents->y2 != output->base.y + output->base.height)
+ if (!weston_view_matches_output_entirely(ev, &output->base))
return NULL;
/* If the surface buffer has an in-fence fd, but the plane doesn't
return ev->surface->buffer_ref.buffer != NULL;
}
+/** Check if the view matches the entire output
+ *
+ * @param ev The view to check.
+ * @param output The output to check against.
+ *
+ * Returns true if the view does indeed matches the entire output.
+ */
+WL_EXPORT bool
+weston_view_matches_output_entirely(struct weston_view *ev,
+ struct weston_output *output)
+{
+ pixman_box32_t *extents =
+ pixman_region32_extents(&ev->transform.boundingbox);
+
+ if (extents->x1 != output->x ||
+ extents->y1 != output->y ||
+ extents->x2 != output->x + output->width ||
+ extents->y2 != output->y + output->height)
+ return false;
+
+ return true;
+}
+
/* Check if a surface has a view assigned to it
*
* The indicator is set manually when mapping
bool
weston_view_has_valid_buffer(struct weston_view *ev);
+bool
+weston_view_matches_output_entirely(struct weston_view *ev,
+ struct weston_output *output);
void
weston_view_move_to_plane(struct weston_view *view,
struct weston_plane *plane);