send mode changed noti to server 09/189109/1
authorJunkyeong Kim <jk0430.kim@samsung.com>
Thu, 13 Sep 2018 10:37:00 +0000 (19:37 +0900)
committerJunkyeong Kim <jk0430.kim@samsung.com>
Thu, 13 Sep 2018 10:37:27 +0000 (19:37 +0900)
Change-Id: Ifda2968772b25c5227330261bcf140a336648096
Signed-off-by: Junkyeong Kim <jk0430.kim@samsung.com>
src/tdm_exynos.c
src/tdm_exynos.h
src/tdm_exynos_display.c
src/tdm_exynos_types.h

index a443b7ad5fbb74a8d140f3c62134d9549522a961..0a30a11c939dfba0e06258d2bcc3eade89a96666 100644 (file)
@@ -176,6 +176,7 @@ tdm_exynos_init(tdm_display *dpy, tdm_error *error)
        exynos_func_output.output_set_mode = exynos_output_set_mode;
        exynos_func_output.output_get_mode = exynos_output_get_mode;
        exynos_func_output.output_create_capture = exynos_output_create_capture;
+       exynos_func_output.output_set_status_handler = exynos_output_set_status_handler;
        if (exynos_data->hwc_mode) {
                exynos_func_output.output_get_hwc = exynos_output_get_hwc;
 
index 89c4118b88e5b2a05ad6cff5365d78867a3e9412..01c28c192b484967d9569e77e0871b68e408a4b0 100644 (file)
@@ -53,6 +53,7 @@ tdm_error    exynos_output_get_dpms(tdm_output *output, tdm_output_dpms *dpms_va
 tdm_error    exynos_output_set_mode(tdm_output *output, const tdm_output_mode *mode);
 tdm_error    exynos_output_get_mode(tdm_output *output, const tdm_output_mode **mode);
 tdm_capture* exynos_output_create_capture(tdm_output *output, tdm_error *error);
+tdm_error    exynos_output_set_status_handler(tdm_output *output, tdm_output_status_handler func, void *user_data);
 tdm_hwc     *exynos_output_get_hwc(tdm_output *output, tdm_error *error);
 tdm_error    exynos_layer_get_capability(tdm_layer *layer, tdm_caps_layer *caps);
 tdm_error    exynos_layer_set_property(tdm_layer *layer, unsigned int id, tdm_value value);
index 55706b5986e1ec922641d4eb0c7786d4ed6738c1..d0b1a604a0ca544a0df81e039add504e4bc1c62c 100644 (file)
@@ -295,6 +295,24 @@ _tdm_exynos_display_layer_disable(tdm_layer *layer)
        return TDM_ERROR_NONE;
 }
 
+tdm_error
+_tdm_exynos_output_update_status(tdm_exynos_output_data *output_data,
+                                                                tdm_output_conn_status status)
+{
+       RETURN_VAL_IF_FAIL(output_data, TDM_ERROR_INVALID_PARAMETER);
+
+       if (output_data->status == status)
+               return TDM_ERROR_NONE;
+
+       output_data->status = status;
+
+       if (output_data->status_func)
+               output_data->status_func(output_data, status,
+                                                                output_data->status_user_data);
+
+       return TDM_ERROR_NONE;
+}
+
 static tdm_error
 _tdm_exynos_display_do_commit(tdm_exynos_output_data *output_data)
 {
@@ -355,6 +373,11 @@ _tdm_exynos_display_do_commit(tdm_exynos_output_data *output_data)
                }
        }
 
+       if (output_data->mode_changed) {
+               _tdm_exynos_output_update_status(output_data, TDM_OUTPUT_CONN_STATUS_MODE_SETTED);
+               output_data->mode_changed = 0;
+       }
+
        TDM_DBG("S3CFB_WIN_CONFIG fd:%d\n", win_data.config[layer_index].fd_idma[0]);
 
        if (ioctl(output_data->fb_fd, S3CFB_WIN_CONFIG, &win_data)) {
@@ -1500,6 +1523,22 @@ exynos_output_create_capture(tdm_output *output, tdm_error *error)
        return tdm_exynos_capture_create_output(exynos_data, output, error);
 }
 
+tdm_error
+exynos_output_set_status_handler(tdm_output *output,
+                                                                          tdm_output_status_handler func,
+                                                                          void *user_data)
+{
+       tdm_exynos_output_data *output_data = output;
+
+       RETURN_VAL_IF_FAIL(output_data, TDM_ERROR_INVALID_PARAMETER);
+       RETURN_VAL_IF_FAIL(func, TDM_ERROR_INVALID_PARAMETER);
+
+       output_data->status_func = func;
+       output_data->status_user_data = user_data;
+
+       return TDM_ERROR_NONE;
+}
+
 tdm_hwc *
 exynos_output_get_hwc(tdm_output *output, tdm_error *error)
 {
index 28f43624191e1186b39c289ad193d8fcbc445404..1e1dd6466a8841b1260af0b06e6a5689e2e26d6a 100644 (file)
@@ -185,8 +185,9 @@ struct _tdm_exynos_output_data {
        tdm_output_vblank_handler vblank_func;
        tdm_output_commit_handler commit_func;
        tdm_output_dpms_handler dpms_func;
+       tdm_output_status_handler status_func;
        tdm_output_conn_status status;
-
+       void *status_user_data;
        int mode_changed;
        const tdm_output_mode *current_mode;