From 633c7139cfeb77dd009c0e99fb0d33498009b056 Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Mon, 27 Jun 2016 21:53:28 +0900 Subject: [PATCH] add tdm_layer_get_buffer_flags There can be the layer which can set and display the specific buffer with the specific flags. Therefore, tdm user has to know the buffer flags to create the buffer which can be set to the specified layer. Change-Id: I1df658f4cbb4ca6019a7df1fe72c77db3d6db401 --- include/tdm.h | 9 +++++++++ include/tdm_backend.h | 9 ++++++++- src/tdm_display.c | 23 +++++++++++++++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/include/tdm.h b/include/tdm.h index 4af34d7..6ba4996 100644 --- a/include/tdm.h +++ b/include/tdm.h @@ -653,6 +653,15 @@ tdm_capture * tdm_layer_create_capture(tdm_layer *layer, tdm_error *error); /** + * @brief Get buffer flags from a layer object + * @param[in] layer A layer object + * @param[out] flags a buffer flags value + * @return #TDM_ERROR_NONE if success. Otherwise, error value. + */ +tdm_error +tdm_layer_get_buffer_flags(tdm_layer *layer, unsigned int *flags); + +/** * @brief Destroy a pp object * @param[in] pp A pp object * @see tdm_display_create_pp diff --git a/include/tdm_backend.h b/include/tdm_backend.h index 8967b52..0256e92 100644 --- a/include/tdm_backend.h +++ b/include/tdm_backend.h @@ -621,6 +621,14 @@ typedef struct _tdm_func_layer { */ tdm_capture *(*layer_create_capture)(tdm_layer *layer, tdm_error *error); + /** + * @brief Get buffer flags which the layer can support. + * @param[in] layer A layer object + * @param[out] flags The buffer flags which should be the tbm_bo flags + * @return #TDM_ERROR_NONE if success. Otherwise, error value. + */ + tdm_error (*layer_get_buffer_flags)(tdm_layer *layer, unsigned int *flags); + void (*reserved1)(void); void (*reserved2)(void); void (*reserved3)(void); @@ -628,7 +636,6 @@ typedef struct _tdm_func_layer { void (*reserved5)(void); void (*reserved6)(void); void (*reserved7)(void); - void (*reserved8)(void); } tdm_func_layer; /** diff --git a/src/tdm_display.c b/src/tdm_display.c index e691501..17c02aa 100644 --- a/src/tdm_display.c +++ b/src/tdm_display.c @@ -1839,3 +1839,26 @@ tdm_layer_create_capture(tdm_layer *layer, tdm_error *error) return capture; } + +EXTERN tdm_error +tdm_layer_get_buffer_flags(tdm_layer *layer, unsigned int *flags) +{ + tdm_func_layer *func_layer; + LAYER_FUNC_ENTRY(); + + _pthread_mutex_lock(&private_display->lock); + + func_layer = &private_display->func_layer; + + if (!func_layer->layer_get_buffer_flags) { + _pthread_mutex_unlock(&private_display->lock); + TDM_ERR("not implemented!!"); + return TDM_ERROR_NOT_IMPLEMENTED; + } + + ret = func_layer->layer_get_buffer_flags(private_layer->layer_backend, flags); + + _pthread_mutex_unlock(&private_display->lock); + + return ret; +} -- 2.7.4