From 934915afafa9e65bb51740509047b6b45e799810 Mon Sep 17 00:00:00 2001 From: Changyeon Lee Date: Tue, 17 May 2016 14:26:57 +0900 Subject: [PATCH] Add tdm_layer_get_displaying_buffer function Change-Id: Icf5337ce6ead12ae534506a4d150039568e59a73 --- include/tdm.h | 10 ++++++++++ src/tdm_display.c | 25 +++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/include/tdm.h b/include/tdm.h index 1c38b52..229de00 100644 --- a/include/tdm.h +++ b/include/tdm.h @@ -582,6 +582,16 @@ tdm_error tdm_layer_unset_buffer(tdm_layer *layer); /** + * @brief Get a displaying TDM buffer from a layer object + * @details A displaying TDM buffer is a current showing buffer on screen + * that is set to layer object and applied output object of a layer object. + * @param[in] layer A layer object + * @return A TDM buffer if success. Otherwise, NULL. + */ +tbm_surface_h +tdm_layer_get_displaying_buffer(tdm_layer *layer, tdm_error *error); + +/** * @brief Set a TBM surface_queue to a layer object * @details A TBM surface_queue will be applied when the output object * of a layer object is committed. and TDM layer will be automatically updated diff --git a/src/tdm_display.c b/src/tdm_display.c index 1b95bec..c44130b 100644 --- a/src/tdm_display.c +++ b/src/tdm_display.c @@ -1543,6 +1543,31 @@ tdm_layer_unset_buffer(tdm_layer *layer) return ret; } +EXTERN tbm_surface_h +tdm_layer_get_displaying_buffer(tdm_layer *layer, tdm_error *error) +{ + tbm_surface_h buffer; + LAYER_FUNC_ENTRY_ERROR(); + + _pthread_mutex_lock(&private_display->lock); + + if (error) + *error = TDM_ERROR_NONE; + + if (private_layer->showing_buffer) { + buffer = private_layer->showing_buffer; + } else { + *error = TDM_ERROR_OPERATION_FAILED; + _pthread_mutex_unlock(&private_display->lock); + TDM_ERR("layer(%p) showing_buffer is null", + private_layer); + return NULL; + } + _pthread_mutex_unlock(&private_display->lock); + + return buffer; +} + static void _tbm_layer_queue_acquirable_cb(tbm_surface_queue_h surface_queue, void *data) { -- 2.7.4