check the size limitation 05/90505/1
authorBoram Park <boram1288.park@samsung.com>
Fri, 30 Sep 2016 09:11:51 +0000 (18:11 +0900)
committerBoram Park <boram1288.park@samsung.com>
Fri, 30 Sep 2016 09:14:13 +0000 (18:14 +0900)
Change-Id: I0018eae284e776f4bc97b97d320ab7b1f2d7c178

src/tdm_capture.c
src/tdm_display.c
src/tdm_pp.c

index da1a0e5..d2911f1 100644 (file)
@@ -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) {
index 7d9b08f..5336f81 100644 (file)
@@ -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;
index 1a61d7f..304d403 100644 (file)
@@ -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) {