libweston: Add a new helper weston_view_has_valid_buffer
authorMarius Vlad <marius.vlad@collabora.com>
Wed, 11 Sep 2019 13:41:04 +0000 (16:41 +0300)
committerDaniel Stone <daniels@collabora.com>
Mon, 11 Nov 2019 16:51:48 +0000 (16:51 +0000)
Helper to determine if the buffer attached to the view is valid.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
libweston/backend-drm/state-propose.c
libweston/compositor.c
libweston/libweston-internal.h

index 6a01f44bd48157a042f4c71dc5420395d79947e8..148397e9e0ff4e8e43aa95fcb7b6fa7c3c719787 100644 (file)
@@ -278,7 +278,7 @@ drm_output_prepare_cursor_view(struct drm_output_state *output_state,
        if (b->gbm == NULL)
                return NULL;
 
-       if (ev->surface->buffer_ref.buffer == NULL) {
+       if (!weston_view_has_valid_buffer(ev)) {
                drm_debug(b, "\t\t\t\t[cursor] not assigning view %p to cursor plane "
                             "(no buffer available)\n", ev);
                return NULL;
@@ -546,7 +546,7 @@ drm_output_propose_state(struct weston_output *output_base,
                        force_renderer = true;
                }
 
-               if (!ev->surface->buffer_ref.buffer) {
+               if (!weston_view_has_valid_buffer(ev)) {
                        drm_debug(b, "\t\t\t\t[view] not assigning view %p to plane "
                                     "(no buffer available)\n", ev);
                        force_renderer = true;
@@ -764,7 +764,7 @@ drm_assign_planes(struct weston_output *output_base, void *repaint_data)
                 * to the buffer anyway, there is no side effects.
                 */
                if (b->use_pixman ||
-                   (ev->surface->buffer_ref.buffer &&
+                   (weston_view_has_valid_buffer(ev) &&
                    (!wl_shm_buffer_get(ev->surface->buffer_ref.buffer->resource) ||
                     (ev->surface->width <= b->cursor_width &&
                      ev->surface->height <= b->cursor_height))))
index 6336c58989d869dcb22497f9a623323cd4793ce5..794253f672ac51a0eaa289022cc575412a0f9a38 100644 (file)
@@ -1852,6 +1852,18 @@ weston_view_is_opaque(struct weston_view *ev, pixman_region32_t *region)
        return ret;
 }
 
+/** Check if the view has a valid buffer available
+ *
+ * @param ev The view to check if it has a valid buffer.
+ *
+ * Returns true if the view has a valid buffer or false otherwise.
+ */
+WL_EXPORT bool
+weston_view_has_valid_buffer(struct weston_view *ev)
+{
+       return ev->surface->buffer_ref.buffer != NULL;
+}
+
 /* Check if a surface has a view assigned to it
  *
  * The indicator is set manually when mapping
index c804120b98c49998a9d7de067b4b203e81e3c350..4c8e35bdd28b29109b96a2615c42cbb76d167e6b 100644 (file)
@@ -287,6 +287,9 @@ weston_view_from_global_float(struct weston_view *view,
 bool
 weston_view_is_opaque(struct weston_view *ev, pixman_region32_t *region);
 
+bool
+weston_view_has_valid_buffer(struct weston_view *ev);
+
 void
 weston_view_move_to_plane(struct weston_view *view,
                          struct weston_plane *plane);