gl-renderer: Avoid destroying an egl image if known import failed

As observed on some platforms, importing known DMA buffers can cause
failures, leading to an attempt of destroyng an EGL image not set. This patch
resets the num_images such that loop becomes inert when destroying the
DMA buffer, and avoids passing an egl image to it.

The initial import doesn't have this issue as it sets the num_images in
case it succeeds.  This also corrects the assumption that the num_images
were 0 at that point which, if the initial import succeded, was actually set
to 1.

Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
dev
Marius Vlad 4 years ago
parent 2f2e5da4c3
commit 2a6ea687ba
  1. 8
      libweston/renderer-gl/gl-renderer.c

@ -2726,9 +2726,13 @@ import_known_dmabuf(struct gl_renderer *gr,
switch (image->import_type) { switch (image->import_type) {
case IMPORT_TYPE_DIRECT: case IMPORT_TYPE_DIRECT:
image->images[0] = import_simple_dmabuf(gr, &image->dmabuf->attributes); image->images[0] = import_simple_dmabuf(gr, &image->dmabuf->attributes);
if (!image->images[0]) if (!image->images[0]) {
/* num_images is already set to 1 when doing the intial
* import so reset it to 0 to avoid passing an empty
* egl_image to dmabuf_destroy */
image->num_images = 0;
return false; return false;
image->num_images = 1; }
break; break;
case IMPORT_TYPE_GL_CONVERSION: case IMPORT_TYPE_GL_CONVERSION:

Loading…
Cancel
Save