From: Changyeon Lee Date: Tue, 24 Jul 2018 11:19:08 +0000 (+0900) Subject: hwc_window: tdm_hwc_window_get_preparation_types X-Git-Tag: accepted/tizen/unified/20180813.061409~5 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Flibtdm.git;a=commitdiff_plain;h=d47abbabf3332fcc8c410810f12216e79a25c459 hwc_window: tdm_hwc_window_get_preparation_types Change-Id: I977b322aaedf140ea0aa58342867ab58a0f73dad --- diff --git a/include/tdm.h b/include/tdm.h index acd3a45..fae9308 100644 --- a/include/tdm.h +++ b/include/tdm.h @@ -1089,6 +1089,16 @@ tdm_error tdm_hwc_window_set_property(tdm_hwc_window *hwc_window, uint32_t id, tdm_value value); /** + * @brief Get the preperation type of hwc_window + * @param[in] hwc window A hwc window object + * @param[out] preperation_types The tdm_hwc_window_preparation types + * @return #TDM_ERROR_NONE if success. Otherwise, error value. + */ +tdm_error +tdm_hwc_window_get_preparation_types(tdm_hwc_window *hwc_window, + int *preparation_types); + +/** * @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 d614fff..0b5829c 100644 --- a/include/tdm_backend.h +++ b/include/tdm_backend.h @@ -960,6 +960,15 @@ typedef struct _tdm_func_hwc_window { */ tdm_error (*hwc_window_get_property)(tdm_hwc_window *hwc_window, uint32_t id, tdm_value *value); + + /** + * @brief Get the preperation type of hwc_window + * @param[in] hwc window A hwc window object + * @param[out] preperation_types The tdm_hwc_window_preparation types + * @return #TDM_ERROR_NONE if success. Otherwise, error value. + */ + tdm_error (*hwc_window_get_preparation_types)(tdm_hwc_window *hwc_window, + int *preperation_types); } tdm_func_hwc_window; /** diff --git a/include/tdm_types.h b/include/tdm_types.h index 1a494f6..c596ac6 100644 --- a/include/tdm_types.h +++ b/include/tdm_types.h @@ -205,6 +205,16 @@ typedef enum { TDM_COMPOSITION_VIDEO = 5, } tdm_hwc_window_composition; +typedef enum { + TDM_PREPARATION_NONE = 0, + /** If the client needs to render to a specific buffer for compositing + * with TDM_COMPOSITION_DEVICE, Set TDM_PREPARATION_BUFFER_QUEUE type to hwc_window. + * The client will render next frame on buffers of queue which got by + * tdm_hwc_window_get_buffer_queue. + */ + TDM_PREPARATION_BUFFER_QUEUE = (1 << 0), +} tdm_hwc_window_preparation; + /** * @brief The hwc window flag enumeration * @since 2.0.0 diff --git a/src/tdm_hwc_window.c b/src/tdm_hwc_window.c index 78df88d..31e62ad 100644 --- a/src/tdm_hwc_window.c +++ b/src/tdm_hwc_window.c @@ -403,4 +403,31 @@ tdm_hwc_window_set_property(tdm_hwc_window *hwc_window, unsigned int id, tdm_val return ret; } + +EXTERN tdm_error +tdm_hwc_window_get_preparation_types(tdm_hwc_window *hwc_window, + int *preparation_types) +{ + tdm_private_module *private_module; + tdm_func_hwc_window *func_hwc_window = NULL; + + HWC_WINDOW_FUNC_ENTRY(); + + _pthread_mutex_lock(&private_display->lock); + + private_module = private_output->private_module; + func_hwc_window = &private_module->func_hwc_window; + + if (!func_hwc_window->hwc_window_get_preparation_types) { + _pthread_mutex_unlock(&private_display->lock); + TDM_WRN("not implemented!!"); + return TDM_ERROR_NOT_IMPLEMENTED; + } + + ret = func_hwc_window->hwc_window_get_preparation_types(private_hwc_window->hwc_window_backend, preparation_types); + + _pthread_mutex_unlock(&private_display->lock); + + return ret; +} /* LCOV_EXCL_STOP */ \ No newline at end of file