diff options
Diffstat (limited to 'src/egl/drivers/dri2')
-rw-r--r-- | src/egl/drivers/dri2/platform_android.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/egl/drivers/dri2/platform_android.c b/src/egl/drivers/dri2/platform_android.c index 37616f93e68..e3d5f0bf4c9 100644 --- a/src/egl/drivers/dri2/platform_android.c +++ b/src/egl/drivers/dri2/platform_android.c @@ -162,6 +162,8 @@ droid_window_dequeue_buffer(struct dri2_egl_surface *dri2_surf) static EGLBoolean droid_window_enqueue_buffer(_EGLDisplay *disp, struct dri2_egl_surface *dri2_surf) { + struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp); + /* To avoid blocking other EGL calls, release the display mutex before * we enter droid_window_enqueue_buffer() and re-acquire the mutex upon * return. @@ -192,6 +194,12 @@ droid_window_enqueue_buffer(_EGLDisplay *disp, struct dri2_egl_surface *dri2_sur dri2_surf->buffer = NULL; mtx_lock(&disp->Mutex); + + if (dri2_surf->dri_image) { + dri2_dpy->image->destroyImage(dri2_surf->dri_image); + dri2_surf->dri_image = NULL; + } + return EGL_TRUE; } @@ -377,6 +385,9 @@ get_back_bo(struct dri2_egl_surface *dri2_surf) int fourcc, pitch; int offset = 0, fd; + if (dri2_surf->dri_image) + return 0; + if (!dri2_surf->buffer) return -1; |