clients/simple-dmabuf-egl: Properly check for error in gbm_bo_get_handle_for_plane
authorAlexandros Frantzis <alexandros.frantzis@collabora.com>
Wed, 13 Mar 2019 10:16:29 +0000 (12:16 +0200)
committerDaniel Stone <daniel@fooishbar.org>
Thu, 28 Mar 2019 09:51:28 +0000 (09:51 +0000)
gbm_bo_get_handle_for_plane returns handle.s32 == -1 on error, at least
for the Mesa dri implementation.

Reported-by: Marius Vlad <marius.vlad@collabora.com>
Signed-off-by: Alexandros Frantzis <alexandros.frantzis@collabora.com>
clients/simple-dmabuf-egl.c

index 142d73e7399b2d13f17b17bf5ecdc887d89d0574..75d880e08eb5ee35d114576fd637f385e40c5712 100644 (file)
@@ -369,9 +369,17 @@ create_dmabuf_buffer(struct display *display, struct buffer *buffer,
 #ifdef HAVE_GBM_MODIFIERS
        buffer->plane_count = gbm_bo_get_plane_count(buffer->bo);
        for (i = 0; i < buffer->plane_count; ++i) {
-               uint32_t handle = gbm_bo_get_handle_for_plane(buffer->bo, i).u32;
-               int ret = drmPrimeHandleToFD(display->gbm.drm_fd, handle, 0,
-                                            &buffer->dmabuf_fds[i]);
+               int ret;
+               union gbm_bo_handle handle;
+
+               handle = gbm_bo_get_handle_for_plane(buffer->bo, i);
+               if (handle.s32 == -1) {
+                       fprintf(stderr, "error: failed to get gbm_bo_handle\n");
+                       goto error;
+               }
+
+               ret = drmPrimeHandleToFD(display->gbm.drm_fd, handle.u32, 0,
+                                        &buffer->dmabuf_fds[i]);
                if (ret < 0 || buffer->dmabuf_fds[i] < 0) {
                        fprintf(stderr, "error: failed to get dmabuf_fd\n");
                        goto error;