From 81a6fff4c5246c0604b065a6b34145cdad9be423 Mon Sep 17 00:00:00 2001 From: Rob Herring Date: Thu, 28 Apr 2016 15:37:30 -0500 Subject: [PATCH] egl: android: factor out back buffer handling code In preparation to use the same code for dma-bufs, factor out the code to a separate function. Signed-off-by: Rob Herring Reviewed-by: Emil Velikov --- src/egl/drivers/dri2/platform_android.c | 36 ++++++++++++++++--------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/src/egl/drivers/dri2/platform_android.c b/src/egl/drivers/dri2/platform_android.c index dd62eda812d..ea05818bc29 100644 --- a/src/egl/drivers/dri2/platform_android.c +++ b/src/egl/drivers/dri2/platform_android.c @@ -312,6 +312,27 @@ droid_destroy_surface(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *surf) return EGL_TRUE; } +static int +update_buffers(struct dri2_egl_surface *dri2_surf) +{ + if (dri2_surf->base.Type != EGL_WINDOW_BIT) + return 0; + + /* try to dequeue the next back buffer */ + if (!dri2_surf->buffer && !droid_window_dequeue_buffer(dri2_surf)) + return -1; + + /* free outdated buffers and update the surface size */ + if (dri2_surf->base.Width != dri2_surf->buffer->width || + dri2_surf->base.Height != dri2_surf->buffer->height) { + droid_free_local_buffers(dri2_surf); + dri2_surf->base.Width = dri2_surf->buffer->width; + dri2_surf->base.Height = dri2_surf->buffer->height; + } + + return 0; +} + static EGLBoolean droid_swap_buffers(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *draw) { @@ -484,19 +505,8 @@ droid_get_buffers_with_format(__DRIdrawable * driDrawable, dri2_egl_display(dri2_surf->base.Resource.Display); int i; - if (dri2_surf->base.Type == EGL_WINDOW_BIT) { - /* try to dequeue the next back buffer */ - if (!dri2_surf->buffer && !droid_window_dequeue_buffer(dri2_surf)) - return NULL; - - /* free outdated buffers and update the surface size */ - if (dri2_surf->base.Width != dri2_surf->buffer->width || - dri2_surf->base.Height != dri2_surf->buffer->height) { - droid_free_local_buffers(dri2_surf); - dri2_surf->base.Width = dri2_surf->buffer->width; - dri2_surf->base.Height = dri2_surf->buffer->height; - } - } + if (update_buffers(dri2_surf) < 0) + return NULL; dri2_surf->buffer_count = droid_get_buffers_parse_attachments(dri2_surf, attachments, count); -- 2.30.2