From d59da24fd9ce7dab992fcaf8de77a6c4f421fcc1 Mon Sep 17 00:00:00 2001 From: Paul Kocialkowski Date: Thu, 26 Apr 2018 09:51:30 +0200 Subject: [PATCH] Separate Rendering and Dsiplaying surface status Signed-off-by: Paul Kocialkowski --- src/image.c | 9 +++++++-- src/surface.c | 7 ++----- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/image.c b/src/image.c index 7121419..71353d1 100644 --- a/src/image.c +++ b/src/image.c @@ -111,8 +111,13 @@ VAStatus SunxiCedrusDeriveImage(VADriverContextP context, if (surface_object == NULL) return VA_STATUS_ERROR_INVALID_SURFACE; - if (surface_object->status == VASurfaceRendering) - SunxiCedrusSyncSurface(context, surface_id); + if (surface_object->status == VASurfaceRendering) { + status = SunxiCedrusSyncSurface(context, surface_id); + if (status != VA_STATUS_SUCCESS) + return status; + } else if (surface_object->status == VASurfaceReady) { + return VA_STATUS_SUCCESS; + } format.fourcc = VA_FOURCC_NV12; diff --git a/src/surface.c b/src/surface.c index bbb7856..a1a3230 100644 --- a/src/surface.c +++ b/src/surface.c @@ -153,12 +153,9 @@ VAStatus SunxiCedrusSyncSurface(VADriverContextP context, goto error; } - if (surface_object->status == VASurfaceReady) { + if (surface_object->status != VASurfaceRendering) { status = VA_STATUS_SUCCESS; goto complete; - } else if (surface_object->status == VASurfaceSkipped) { - status = VA_STATUS_ERROR_UNKNOWN; - goto error; } request_fd = surface_object->request_fd; @@ -197,7 +194,7 @@ VAStatus SunxiCedrusSyncSurface(VADriverContextP context, goto error; } - surface_object->status = VASurfaceReady; + surface_object->status = VASurfaceDisplaying; status = VA_STATUS_SUCCESS; goto complete;