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>
This commit is contained in:
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user