From e5db3b0bef603c5e16fec1d2444e859169135ee2 Mon Sep 17 00:00:00 2001 From: Boram Park Date: Fri, 30 Sep 2016 18:11:51 +0900 Subject: [PATCH] check the size limitation Change-Id: I0018eae284e776f4bc97b97d320ab7b1f2d7c178 --- src/tdm_capture.c | 17 +++++++++++++++++ src/tdm_display.c | 21 +++++++++++++++++++++ src/tdm_pp.c | 25 +++++++++++++++++++++++++ 3 files changed, 63 insertions(+) diff --git a/src/tdm_capture.c b/src/tdm_capture.c index da1a0e5..d2911f1 100644 --- a/src/tdm_capture.c +++ b/src/tdm_capture.c @@ -343,6 +343,23 @@ tdm_capture_set_info(tdm_capture *capture, tdm_info_capture *info) TDM_RETURN_VAL_IF_FAIL(info != NULL, TDM_ERROR_INVALID_PARAMETER); + if (private_display->caps_capture.min_w > 0) { + TDM_RETURN_VAL_IF_FAIL(info->dst_config.size.h >= private_display->caps_capture.min_w, TDM_ERROR_INVALID_PARAMETER); + TDM_RETURN_VAL_IF_FAIL(info->dst_config.pos.w >= private_display->caps_capture.min_w, TDM_ERROR_INVALID_PARAMETER); + } + if (private_display->caps_capture.min_h > 0) { + TDM_RETURN_VAL_IF_FAIL(info->dst_config.size.v >= private_display->caps_capture.min_h, TDM_ERROR_INVALID_PARAMETER); + TDM_RETURN_VAL_IF_FAIL(info->dst_config.pos.h >= private_display->caps_capture.min_h, TDM_ERROR_INVALID_PARAMETER); + } + if (private_display->caps_capture.max_w > 0) { + TDM_RETURN_VAL_IF_FAIL(info->dst_config.size.h <= private_display->caps_capture.max_w, TDM_ERROR_INVALID_PARAMETER); + TDM_RETURN_VAL_IF_FAIL(info->dst_config.pos.w <= private_display->caps_capture.max_w, TDM_ERROR_INVALID_PARAMETER); + } + if (private_display->caps_capture.max_h > 0) { + TDM_RETURN_VAL_IF_FAIL(info->dst_config.size.v <= private_display->caps_capture.max_h, TDM_ERROR_INVALID_PARAMETER); + TDM_RETURN_VAL_IF_FAIL(info->dst_config.pos.h <= private_display->caps_capture.max_h, TDM_ERROR_INVALID_PARAMETER); + } + _pthread_mutex_lock(&private_display->lock); if (!func_capture->capture_set_info) { diff --git a/src/tdm_display.c b/src/tdm_display.c index 7d9b08f..5336f81 100644 --- a/src/tdm_display.c +++ b/src/tdm_display.c @@ -1447,6 +1447,27 @@ tdm_layer_set_info(tdm_layer *layer, tdm_info_layer *info) TDM_RETURN_VAL_IF_FAIL(info != NULL, TDM_ERROR_INVALID_PARAMETER); + if (private_output->caps.min_w > 0) { + TDM_RETURN_VAL_IF_FAIL(info->src_config.size.h >= private_output->caps.min_w, TDM_ERROR_INVALID_PARAMETER); + TDM_RETURN_VAL_IF_FAIL(info->src_config.pos.w >= private_output->caps.min_w, TDM_ERROR_INVALID_PARAMETER); + TDM_RETURN_VAL_IF_FAIL(info->dst_pos.w >= private_output->caps.min_w, TDM_ERROR_INVALID_PARAMETER); + } + if (private_output->caps.min_h > 0) { + TDM_RETURN_VAL_IF_FAIL(info->src_config.size.v >= private_output->caps.min_h, TDM_ERROR_INVALID_PARAMETER); + TDM_RETURN_VAL_IF_FAIL(info->src_config.pos.h >= private_output->caps.min_h, TDM_ERROR_INVALID_PARAMETER); + TDM_RETURN_VAL_IF_FAIL(info->dst_pos.h >= private_output->caps.min_h, TDM_ERROR_INVALID_PARAMETER); + } + if (private_output->caps.max_w > 0) { + TDM_RETURN_VAL_IF_FAIL(info->src_config.size.h <= private_output->caps.max_w, TDM_ERROR_INVALID_PARAMETER); + TDM_RETURN_VAL_IF_FAIL(info->src_config.pos.w <= private_output->caps.max_w, TDM_ERROR_INVALID_PARAMETER); + TDM_RETURN_VAL_IF_FAIL(info->dst_pos.w <= private_output->caps.max_w, TDM_ERROR_INVALID_PARAMETER); + } + if (private_output->caps.max_h > 0) { + TDM_RETURN_VAL_IF_FAIL(info->src_config.size.v <= private_output->caps.max_h, TDM_ERROR_INVALID_PARAMETER); + TDM_RETURN_VAL_IF_FAIL(info->src_config.pos.h <= private_output->caps.max_h, TDM_ERROR_INVALID_PARAMETER); + TDM_RETURN_VAL_IF_FAIL(info->dst_pos.h <= private_output->caps.max_h, TDM_ERROR_INVALID_PARAMETER); + } + _pthread_mutex_lock(&private_display->lock); func_layer = &private_display->func_layer; diff --git a/src/tdm_pp.c b/src/tdm_pp.c index 1a61d7f..304d403 100644 --- a/src/tdm_pp.c +++ b/src/tdm_pp.c @@ -309,6 +309,31 @@ tdm_pp_set_info(tdm_pp *pp, tdm_info_pp *info) TDM_RETURN_VAL_IF_FAIL(info != NULL, TDM_ERROR_INVALID_PARAMETER); + if (private_display->caps_pp.min_w > 0) { + TDM_RETURN_VAL_IF_FAIL(info->src_config.size.h >= private_display->caps_pp.min_w, TDM_ERROR_INVALID_PARAMETER); + TDM_RETURN_VAL_IF_FAIL(info->src_config.pos.w >= private_display->caps_pp.min_w, TDM_ERROR_INVALID_PARAMETER); + TDM_RETURN_VAL_IF_FAIL(info->dst_config.size.h >= private_display->caps_pp.min_w, TDM_ERROR_INVALID_PARAMETER); + TDM_RETURN_VAL_IF_FAIL(info->dst_config.pos.w >= private_display->caps_pp.min_w, TDM_ERROR_INVALID_PARAMETER); + } + if (private_display->caps_pp.min_h > 0) { + TDM_RETURN_VAL_IF_FAIL(info->src_config.size.v >= private_display->caps_pp.min_h, TDM_ERROR_INVALID_PARAMETER); + TDM_RETURN_VAL_IF_FAIL(info->src_config.pos.h >= private_display->caps_pp.min_h, TDM_ERROR_INVALID_PARAMETER); + TDM_RETURN_VAL_IF_FAIL(info->dst_config.size.v >= private_display->caps_pp.min_h, TDM_ERROR_INVALID_PARAMETER); + TDM_RETURN_VAL_IF_FAIL(info->dst_config.pos.h >= private_display->caps_pp.min_h, TDM_ERROR_INVALID_PARAMETER); + } + if (private_display->caps_pp.max_w > 0) { + TDM_RETURN_VAL_IF_FAIL(info->src_config.size.h <= private_display->caps_pp.max_w, TDM_ERROR_INVALID_PARAMETER); + TDM_RETURN_VAL_IF_FAIL(info->src_config.pos.w <= private_display->caps_pp.max_w, TDM_ERROR_INVALID_PARAMETER); + TDM_RETURN_VAL_IF_FAIL(info->dst_config.size.h <= private_display->caps_pp.max_w, TDM_ERROR_INVALID_PARAMETER); + TDM_RETURN_VAL_IF_FAIL(info->dst_config.pos.w <= private_display->caps_pp.max_w, TDM_ERROR_INVALID_PARAMETER); + } + if (private_display->caps_pp.max_h > 0) { + TDM_RETURN_VAL_IF_FAIL(info->src_config.size.v <= private_display->caps_pp.max_h, TDM_ERROR_INVALID_PARAMETER); + TDM_RETURN_VAL_IF_FAIL(info->src_config.pos.h <= private_display->caps_pp.max_h, TDM_ERROR_INVALID_PARAMETER); + TDM_RETURN_VAL_IF_FAIL(info->dst_config.size.v <= private_display->caps_pp.max_h, TDM_ERROR_INVALID_PARAMETER); + TDM_RETURN_VAL_IF_FAIL(info->dst_config.pos.h <= private_display->caps_pp.max_h, TDM_ERROR_INVALID_PARAMETER); + } + _pthread_mutex_lock(&private_display->lock); if (!func_pp->pp_set_info) { -- 2.7.4