From 859f51f8606bff3235d75130635ade4e8a8ce338 Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Mon, 22 Jul 2019 19:05:27 +0900 Subject: [PATCH] add tdm_output_unset_mirror This function unset the mirro image of the output. Change-Id: If67805ebf0d54f2097718c4e3dd3d02ed8d0d798 --- include/tdm.h | 8 ++++++++ include/tdm_backend.h | 10 +++++++++- src/tdm_output.c | 38 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 55 insertions(+), 1 deletion(-) diff --git a/include/tdm.h b/include/tdm.h index 1c10a3c..c334b20 100644 --- a/include/tdm.h +++ b/include/tdm.h @@ -659,6 +659,14 @@ tdm_error tdm_output_set_mirror(tdm_output *output, tdm_output *src_output, tdm_transform transform); /** + * @brief Unset the mirror + * @param[in] output A output object + * @return #TDM_ERROR_NONE if success. Otherwise, error value. + */ +tdm_error +tdm_output_unset_mirror(tdm_output *output); + +/** * @brief Get a output object of a layer object * @param[in] layer A layer object * @param[out] error #TDM_ERROR_NONE if success. Otherwise, error value. diff --git a/include/tdm_backend.h b/include/tdm_backend.h index 4075f7b..f9a1b22 100644 --- a/include/tdm_backend.h +++ b/include/tdm_backend.h @@ -569,11 +569,19 @@ typedef struct _tdm_func_output { * @param[in] src_output A src output object of which image is displayed on the output * @param[in] transform A transform value * @return #TDM_ERROR_NONE if success. Otherwise, error value. - * @see #TDM_OUTPUT_CAPABILITY_MIRROR + * @see #output_set_mirror, #TDM_OUTPUT_CAPABILITY_MIRROR */ tdm_error (*output_set_mirror)(tdm_output *output, tdm_output *src_output, tdm_transform transform); + /** + * @brief Unset the mirror image + * @details This function unset the mirro image of the output. + * @param[in] output A output object to display the src_output image + * @return #TDM_ERROR_NONE if success. Otherwise, error value. + * @see #output_set_mirror, #TDM_OUTPUT_CAPABILITY_MIRROR + */ + tdm_error (*output_unset_mirror)(tdm_output *output); void (*reserved4)(void); void (*reserved5)(void); diff --git a/src/tdm_output.c b/src/tdm_output.c index f4c818b..4605183 100644 --- a/src/tdm_output.c +++ b/src/tdm_output.c @@ -2068,9 +2068,47 @@ tdm_output_set_mirror(tdm_output *output, tdm_output *src_output, tdm_transform _pthread_mutex_unlock(&private_display->lock); + return ret; /* LCOV_EXCL_STOP */ +} + +tdm_error +tdm_output_unset_mirror(tdm_output *output) +{ + /* LCOV_EXCL_START */ + tdm_private_module *private_module; + tdm_func_output *func_output; + + OUTPUT_FUNC_ENTRY(); + + _pthread_mutex_lock(&private_display->lock); + + private_module = private_output->private_module; + func_output = &private_module->func_output; + + if (!(private_output->caps.capabilities & TDM_OUTPUT_CAPABILITY_MIRROR)) { + TDM_INFO("output(%d) doesn't support the mirror.", private_output->pipe); + _pthread_mutex_unlock(&private_display->lock); + return TDM_ERROR_BAD_REQUEST; + } + + if (!func_output->output_unset_mirror) { + TDM_WRN("not implemented!!"); + _pthread_mutex_unlock(&private_display->lock); + return TDM_ERROR_NOT_IMPLEMENTED; + } + + ret = func_output->output_unset_mirror(private_output->output_backend); + if (ret != TDM_ERROR_NONE) { + TDM_ERR("output(%p) fails to unset MIRROR.", private_output); + _pthread_mutex_unlock(&private_display->lock); + return TDM_ERROR_BAD_REQUEST; + } + + _pthread_mutex_unlock(&private_display->lock); return ret; + /* LCOV_EXCL_STOP */ } INTERN tdm_error -- 2.7.4