if backend wants async function works like sync, tdm backend set the sync parameter.
if sync set, the dpms handler will not be called.
Change-Id: Ibf0ca0a2a5effef02a6479f77581b54a8ab47401
Signed-off-by: Junkyeong Kim <jk0430.kim@samsung.com>
* #output_set_dpms_handler, a backend module needs to call the output dpms handler
* to let the TDM frontend know the output DPMS change indeed.
* @param[in] dpms_value DPMS value
* #output_set_dpms_handler, a backend module needs to call the output dpms handler
* to let the TDM frontend know the output DPMS change indeed.
* @param[in] dpms_value DPMS value
+ * @param[out] sync A flag for sync call
* @return #TDM_ERROR_NONE if success. Otherwise, error value.
* @see #output_set_dpms_handler, #TDM_OUTPUT_CAPABILITY_ASYNC_DPMS
* @since 1.7.0
*/
* @return #TDM_ERROR_NONE if success. Otherwise, error value.
* @see #output_set_dpms_handler, #TDM_OUTPUT_CAPABILITY_ASYNC_DPMS
* @since 1.7.0
*/
- tdm_error (*output_set_dpms_async)(tdm_output *output, tdm_output_dpms dpms_value);
+ tdm_error (*output_set_dpms_async)(tdm_output *output, tdm_output_dpms dpms_value, int *sync);
/**
* @brief Get a hwc object of a output object
/**
* @brief Get a hwc object of a output object
{
tdm_private_module *private_module;
tdm_func_output *func_output;
{
tdm_private_module *private_module;
tdm_func_output *func_output;
OUTPUT_FUNC_ENTRY();
if (!(private_output->caps.capabilities & TDM_OUTPUT_CAPABILITY_ASYNC_DPMS)) {
OUTPUT_FUNC_ENTRY();
if (!(private_output->caps.capabilities & TDM_OUTPUT_CAPABILITY_ASYNC_DPMS)) {
TDM_INFO("output(%d) dpms async '%s'", private_output->pipe, tdm_dpms_str(dpms_value));
TDM_INFO("output(%d) dpms async '%s'", private_output->pipe, tdm_dpms_str(dpms_value));
- ret = func_output->output_set_dpms_async(private_output->output_backend, dpms_value);
+ ret = func_output->output_set_dpms_async(private_output->output_backend, dpms_value, &sync);
if (ret == TDM_ERROR_NONE) {
if (ret == TDM_ERROR_NONE) {
- private_output->waiting_dpms_change = 1;
- TDM_INFO("output(%d) dpms async '%s' waiting", private_output->pipe, tdm_dpms_str(dpms_value));
+ if (sync) {
+ tdm_output_dpms temp = TDM_OUTPUT_DPMS_OFF;
+
+ tdm_output_get_dpms_internal(output, &temp);
+ TDM_INFO("output(%d) dpms async '%s'(%s) done", private_output->pipe, tdm_dpms_str(dpms_value), tdm_dpms_str(temp));
+ } else {
+ private_output->waiting_dpms_change = 1;
+ TDM_INFO("output(%d) dpms async '%s' waiting", private_output->pipe, tdm_dpms_str(dpms_value));
+ }
} else {
tdm_output_dpms temp = TDM_OUTPUT_DPMS_OFF;
} else {
tdm_output_dpms temp = TDM_OUTPUT_DPMS_OFF;