From a79eb79174436cc40acbd8177973554fbb9ca825 Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Wed, 12 May 2021 08:39:07 +0900 Subject: [PATCH] tbm_surface_internal: implement tbm_surface_internal_export It returns a buffer_data. Change-Id: I4cb6cdfd86815abe478429e5cfb792b9b9d66594 --- src/tbm_surface_internal.c | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/src/tbm_surface_internal.c b/src/tbm_surface_internal.c index 18a922c..00f9454 100644 --- a/src/tbm_surface_internal.c +++ b/src/tbm_surface_internal.c @@ -2947,8 +2947,35 @@ tbm_surface_internal_remove_destroy_handler(tbm_surface_h surface, tbm_surface_i tbm_surface_buffer_data * tbm_surface_internal_export(tbm_surface_h surface, tbm_error_e *error) { - // TODO: implement - return NULL; + tbm_surface_buffer_data *buffer_data = NULL; + struct _tbm_surface *surf; + struct _tbm_bufmgr *bufmgr; + + _tbm_surface_mutex_lock(); + + surf = (struct _tbm_surface *)surface; + TBM_SURFACE_RETURN_VAL_SET_ERR_IF_FAIL(_tbm_surface_internal_is_valid(surface), NULL, *error, TBM_ERROR_INVALID_PARAMETER); + + bufmgr = surf->bufmgr; + TBM_SURFACE_RETURN_VAL_SET_ERR_IF_FAIL(bufmgr != NULL, NULL, *error, TBM_ERROR_INVALID_PARAMETER); + + // this function supports when it comes to be use_hal. + TBM_SURFACE_RETURN_VAL_SET_ERR_IF_FAIL(bufmgr->use_hal_tbm, NULL, *error, TBM_ERROR_NOT_SUPPORTED); + + // export a surface + buffer_data = (tbm_surface_buffer_data *)hal_tbm_surface_export((hal_tbm_surface *)surf->hal_surface, + (hal_tbm_error *)error); + TBM_SURFACE_RETURN_VAL_ERR_IF_FAIL(buffer_data != NULL, NULL, *error); + + TBM_TRACE_SURFACE_INTERNAL("tbm_surface(%p) buffer_data(%p)", surface, buffer_data); + + if (error) + *error = TBM_ERROR_NONE; + + _tbm_set_last_result(TBM_ERROR_NONE); + _tbm_surface_mutex_unlock(); + + return buffer_data; } tbm_surface_h -- 2.7.4