enhance the paremeter check and the error return 77/201677/3
authorSooChan Lim <sc1.lim@samsung.com>
Tue, 19 Mar 2019 01:36:28 +0000 (10:36 +0900)
committerSooChan Lim <sc1.lim@samsung.com>
Tue, 19 Mar 2019 06:59:16 +0000 (06:59 +0000)
Change-Id: I97120d49c0d03bb756b67facedf1b23f2748701c

src/tdm_exynos_hwc.c
src/tdm_exynos_hwc_window.c

index cd8235a0f6bfaec4c603cb6751c4959a911367b5..094a8b1e0cbf76374823ed7f52f679c66fd08e2c 100644 (file)
@@ -142,6 +142,8 @@ _exynos_hwc_layer_attach_window(tdm_exynos_layer_data *layer_data, tdm_exynos_hw
 {
        tdm_error ret = TDM_ERROR_NONE;
 
+       RETURN_VAL_IF_FAIL(layer_data, TDM_ERROR_OPERATION_FAILED);
+
        if (hwc_window_data == NULL || hwc_window_data->surface == NULL) {
                if (layer_data->display_buffer)
                        ret = exynos_layer_unset_buffer(layer_data);
@@ -157,8 +159,7 @@ _exynos_hwc_layer_attach_window(tdm_exynos_layer_data *layer_data, tdm_exynos_hw
        return ret;
 }
 
-
-static void
+static tdm_error
 _exynos_hwc_prepare_commit(tdm_exynos_hwc_data *hwc_data)
 {
        tdm_exynos_hwc_window_data *hwc_window_data = NULL;
@@ -204,6 +205,8 @@ _exynos_hwc_prepare_commit(tdm_exynos_hwc_data *hwc_data)
                if (use_layers_zpos[lzpos])
                        TDM_INFO(" lzpos(%d) : %s", lzpos, use_layers_zpos[lzpos] ? "SET" : "UNSET");
        }
+
+       return TDM_ERROR_NONE;
 }
 
 /* assign the validated_type to the composited_wnds
@@ -371,9 +374,10 @@ exynos_hwc_create_window(tdm_hwc *hwc, tdm_error *error)
        tdm_exynos_hwc_data *hwc_data = hwc;
        tdm_exynos_hwc_window_data *hwc_window_data = NULL;
 
+       RETURN_VAL_IF_FAIL(hwc_data, NULL);
+
        hwc_window_data = _exynos_hwc_create_window(hwc_data, NULL, error);
-       if (hwc_window_data == NULL)
-               return NULL;
+       RETURN_VAL_IF_FAIL(hwc_window_data, NULL);
 
        LIST_ADDTAIL(&hwc_window_data->link, &hwc_data->hwc_window_list);
 
@@ -387,9 +391,7 @@ exynos_hwc_create_window(tdm_hwc *hwc, tdm_error *error)
 tdm_error
 exynos_hwc_get_video_supported_formats(tdm_hwc *hwc, const tbm_format **formats, int *count)
 {
-       tdm_exynos_hwc_data *hwc_data = hwc;
-
-       RETURN_VAL_IF_FAIL(hwc_data != NULL, TDM_ERROR_INVALID_PARAMETER);
+       RETURN_VAL_IF_FAIL(hwc != NULL, TDM_ERROR_INVALID_PARAMETER);
        RETURN_VAL_IF_FAIL(formats != NULL, TDM_ERROR_INVALID_PARAMETER);
        RETURN_VAL_IF_FAIL(count != NULL, TDM_ERROR_INVALID_PARAMETER);
 
@@ -401,9 +403,7 @@ exynos_hwc_get_video_supported_formats(tdm_hwc *hwc, const tbm_format **formats,
 tdm_error
 exynos_hwc_get_capabilities(tdm_hwc *hwc, tdm_hwc_capability *capabilities)
 {
-       tdm_exynos_hwc_data *hwc_data = hwc;
-
-       RETURN_VAL_IF_FAIL(hwc_data != NULL, TDM_ERROR_INVALID_PARAMETER);
+       RETURN_VAL_IF_FAIL(hwc != NULL, TDM_ERROR_INVALID_PARAMETER);
        RETURN_VAL_IF_FAIL(capabilities != NULL, TDM_ERROR_INVALID_PARAMETER);
 
        *capabilities = 0;
@@ -526,13 +526,15 @@ tdm_error
 exynos_hwc_accept_validation(tdm_hwc *hwc)
 {
        tdm_exynos_hwc_data *hwc_data = hwc;
+       tdm_error ret = TDM_ERROR_NONE;
 
        RETURN_VAL_IF_FAIL(hwc_data != NULL, TDM_ERROR_INVALID_PARAMETER);
+       RETURN_VAL_IF_FAIL(hwc_data->output_data != NULL, TDM_ERROR_INVALID_PARAMETER);
 
        TDM_DBG(" ==============Accept Changes Done=================================");
 
-       _exynos_hwc_prepare_commit(hwc_data);
-       hwc_data->need_validate = 0;
+       ret = _exynos_hwc_prepare_commit(hwc_data);
+       RETURN_VAL_IF_FAIL(ret == TDM_ERROR_NONE, ret);
 
        return TDM_ERROR_NONE;
 }
@@ -547,6 +549,7 @@ exynos_hwc_commit(tdm_hwc *hwc, int sync, void *user_data)
        RETURN_VAL_IF_FAIL(hwc_data, TDM_ERROR_INVALID_PARAMETER);
 
        output_data = hwc_data->output_data;
+       RETURN_VAL_IF_FAIL(output_data, TDM_ERROR_INVALID_PARAMETER);
 
        TDM_INFO(" ==============COMMIT=================================");
 
index 79d0083ccc825f4d5bdd1a8583fbb385a1557bfe..120a26c1a3814096895d1773efbf4b6c2d2078fe 100644 (file)
@@ -39,10 +39,8 @@ tdm_error
 exynos_hwc_window_set_buffer_damage(tdm_hwc_window *hwc_window, tdm_region damage)
 {
        tdm_exynos_hwc_window_data *hwc_window_data = hwc_window;
-       tdm_exynos_hwc_data *hwc_data = hwc_window_data->hwc_data;
 
        RETURN_VAL_IF_FAIL(hwc_window_data != NULL, TDM_ERROR_INVALID_PARAMETER);
-       RETURN_VAL_IF_FAIL(hwc_data != NULL, TDM_ERROR_INVALID_PARAMETER);
 
        /* TODO:: */
 
@@ -58,6 +56,7 @@ exynos_hwc_window_set_info(tdm_hwc_window *hwc_window, tdm_hwc_window_info *info
        RETURN_VAL_IF_FAIL(hwc_window_data != NULL, TDM_ERROR_INVALID_PARAMETER);
        hwc_data = hwc_window_data->hwc_data;
        RETURN_VAL_IF_FAIL(hwc_data != NULL, TDM_ERROR_INVALID_PARAMETER);
+       RETURN_VAL_IF_FAIL(info != NULL, TDM_ERROR_INVALID_PARAMETER);
 
        if (!memcmp(&hwc_window_data->info, info, sizeof(tdm_hwc_window_info)))
                return TDM_ERROR_NONE;
@@ -109,6 +108,7 @@ exynos_hwc_window_get_constraints(tdm_hwc_window *hwc_window, int *constraints)
        tdm_exynos_hwc_window_data *hwc_window_data = hwc_window;
 
        RETURN_VAL_IF_FAIL(hwc_window_data != NULL, TDM_ERROR_INVALID_PARAMETER);
+       RETURN_VAL_IF_FAIL(constraints != NULL, TDM_ERROR_INVALID_PARAMETER);
 
        // no constraints
        *constraints = 0;