From 0c3bbb663d3e83b39a1f7cdd6dcda2caedec6738 Mon Sep 17 00:00:00 2001 From: Boram Park Date: Fri, 8 Sep 2017 11:58:28 +0900 Subject: [PATCH] add error information to protocol Change-Id: Ieba9ce9235eb815528228b6b656d12531af7e746 --- client/tdm_client.c | 15 ++++++++++++--- protocol/tdm.xml | 3 +++ src/tdm_server.c | 37 +++++++++++++++++++------------------ 3 files changed, 34 insertions(+), 21 deletions(-) diff --git a/client/tdm_client.c b/client/tdm_client.c index 04c9d2f..6ab849d 100644 --- a/client/tdm_client.c +++ b/client/tdm_client.c @@ -188,7 +188,7 @@ _tdm_client_output_destroy(tdm_private_client_output *private_output) static void _tdm_client_output_cb_mode(void *data, struct wl_tdm_output *wl_tdm_output, - uint32_t width, uint32_t height, uint32_t refresh) + uint32_t width, uint32_t height, uint32_t refresh, uint32_t error) { tdm_private_client_output *private_output = (tdm_private_client_output*)data; @@ -198,13 +198,16 @@ _tdm_client_output_cb_mode(void *data, struct wl_tdm_output *wl_tdm_output, private_output->height = height; private_output->refresh = refresh; + if (error != TDM_ERROR_NONE) + TDM_INFO("mode event error: %d", error); + TDM_DBG("private_output(%p) wl_tbm_output@%d width(%d) height(%d) refresh(%d)", private_output, wl_proxy_get_id((struct wl_proxy*)private_output->output), width, height, refresh); } static void -_tdm_client_output_cb_connection(void *data, struct wl_tdm_output *wl_tdm_output, uint32_t value) +_tdm_client_output_cb_connection(void *data, struct wl_tdm_output *wl_tdm_output, uint32_t value, uint32_t error) { tdm_private_client_output *private_output = (tdm_private_client_output*)data; tdm_client_output_handler_info *h = NULL; @@ -217,6 +220,9 @@ _tdm_client_output_cb_connection(void *data, struct wl_tdm_output *wl_tdm_output private_output->connection = value; + if (error != TDM_ERROR_NONE) + TDM_INFO("connection event error: %d", error); + TDM_DBG("private_output(%p) wl_tbm_output@%d connection(%d)", private_output, wl_proxy_get_id((struct wl_proxy*)private_output->output), @@ -230,7 +236,7 @@ _tdm_client_output_cb_connection(void *data, struct wl_tdm_output *wl_tdm_output } static void -_tdm_client_output_cb_dpms(void *data, struct wl_tdm_output *wl_tdm_output, uint32_t value) +_tdm_client_output_cb_dpms(void *data, struct wl_tdm_output *wl_tdm_output, uint32_t value, uint32_t error) { tdm_private_client_output *private_output = (tdm_private_client_output*)data; tdm_client_output_handler_info *h = NULL; @@ -243,6 +249,9 @@ _tdm_client_output_cb_dpms(void *data, struct wl_tdm_output *wl_tdm_output, uint private_output->dpms = value; + if (error != TDM_ERROR_NONE) + TDM_INFO("dpms event error: %d", error); + TDM_DBG("private_output(%p) wl_tbm_output@%d dpms(%d)", private_output, wl_proxy_get_id((struct wl_proxy*)private_output->output), diff --git a/protocol/tdm.xml b/protocol/tdm.xml index dcd99ed..22328ac 100644 --- a/protocol/tdm.xml +++ b/protocol/tdm.xml @@ -41,14 +41,17 @@ + + + diff --git a/src/tdm_server.c b/src/tdm_server.c index c49e9db..ca994ce 100644 --- a/src/tdm_server.c +++ b/src/tdm_server.c @@ -217,10 +217,10 @@ _tdm_server_cb_output_change(tdm_output *output, tdm_output_change_type type, switch (type) { case TDM_OUTPUT_CHANGE_DPMS: - wl_tdm_output_send_dpms(output_info->resource, value.u32); + wl_tdm_output_send_dpms(output_info->resource, value.u32, TDM_ERROR_NONE); break; case TDM_OUTPUT_CHANGE_CONNECTION: - wl_tdm_output_send_connection(output_info->resource, value.u32); + wl_tdm_output_send_connection(output_info->resource, value.u32, TDM_ERROR_NONE); break; default: break; @@ -463,12 +463,12 @@ _tdm_server_output_cb_get_connection(struct wl_client *client, struct wl_resourc ret = tdm_output_get_conn_status(output_info->output, &status); TDM_GOTO_IF_FAIL(ret != TDM_ERROR_NONE, failed); - wl_tdm_output_send_connection(output_info->resource, status); + wl_tdm_output_send_connection(output_info->resource, status, ret); return; failed: - wl_tdm_output_send_connection(output_info->resource, TDM_OUTPUT_CONN_STATUS_DISCONNECTED); + wl_tdm_output_send_connection(output_info->resource, TDM_OUTPUT_CONN_STATUS_DISCONNECTED, ret); } static void @@ -494,14 +494,14 @@ _tdm_server_output_cb_get_mode(struct wl_client *client, struct wl_resource *res vdisplay = (mode) ? mode->vdisplay : 0; vrefresh = (mode) ? mode->vrefresh : 0; - wl_tdm_output_send_mode(output_info->resource, hdisplay, vdisplay, vrefresh); + wl_tdm_output_send_mode(output_info->resource, hdisplay, vdisplay, vrefresh, ret); } else { - wl_tdm_output_send_mode(output_info->resource, 0, 0, 0); + wl_tdm_output_send_mode(output_info->resource, 0, 0, 0, TDM_ERROR_OUTPUT_DISCONNECTED); } return; failed: - wl_tdm_output_send_mode(output_info->resource, 0, 0, 0); + wl_tdm_output_send_mode(output_info->resource, 0, 0, 0, ret); } static void @@ -522,14 +522,14 @@ _tdm_server_output_cb_get_dpms(struct wl_client *client, struct wl_resource *res ret = tdm_output_get_dpms(output_info->output, &dpms_value); TDM_GOTO_IF_FAIL(ret != TDM_ERROR_NONE, failed); - wl_tdm_output_send_dpms(output_info->resource, dpms_value); + wl_tdm_output_send_dpms(output_info->resource, dpms_value, ret); } else { - wl_tdm_output_send_dpms(output_info->resource, TDM_OUTPUT_DPMS_OFF); + wl_tdm_output_send_dpms(output_info->resource, TDM_OUTPUT_DPMS_OFF, TDM_ERROR_OUTPUT_DISCONNECTED); } return; failed: - wl_tdm_output_send_dpms(output_info->resource, TDM_OUTPUT_DPMS_OFF); + wl_tdm_output_send_dpms(output_info->resource, TDM_OUTPUT_DPMS_OFF, ret); } static const struct wl_tdm_output_interface tdm_output_implementation = { @@ -569,6 +569,7 @@ _tdm_server_cb_create_output(struct wl_client *client, struct wl_resource *resou struct wl_resource *output_resource = NULL; tdm_output *output; tdm_output_conn_status status = TDM_OUTPUT_CONN_STATUS_DISCONNECTED; + tdm_error ret; output = _tdm_server_find_output(private_server, name); if (!output) { @@ -606,25 +607,25 @@ _tdm_server_cb_create_output(struct wl_client *client, struct wl_resource *resou wl_resource_set_implementation(output_resource, &tdm_output_implementation, output_info, destroy_output_callback); - tdm_output_get_conn_status(output, &status); - wl_tdm_output_send_connection(output_resource, status); + ret = tdm_output_get_conn_status(output, &status); + wl_tdm_output_send_connection(output_resource, status, ret); if (status != TDM_OUTPUT_CONN_STATUS_DISCONNECTED) { tdm_output_dpms dpms_value = TDM_OUTPUT_DPMS_OFF; const tdm_output_mode *mode = NULL; unsigned int hdisplay, vdisplay, vrefresh; - tdm_output_get_mode(output, &mode); + ret = tdm_output_get_mode(output, &mode); hdisplay = (mode) ? mode->hdisplay : 0; vdisplay = (mode) ? mode->vdisplay : 0; vrefresh = (mode) ? mode->vrefresh : 0; - wl_tdm_output_send_mode(output_resource, hdisplay, vdisplay, vrefresh); + wl_tdm_output_send_mode(output_resource, hdisplay, vdisplay, vrefresh, ret); - tdm_output_get_dpms(output, &dpms_value); - wl_tdm_output_send_dpms(output_resource, dpms_value); + ret = tdm_output_get_dpms(output, &dpms_value); + wl_tdm_output_send_dpms(output_resource, dpms_value, ret); } else { - wl_tdm_output_send_mode(output_resource, 0, 0, 0); - wl_tdm_output_send_dpms(output_resource, TDM_OUTPUT_DPMS_OFF); + wl_tdm_output_send_mode(output_resource, 0, 0, 0, TDM_ERROR_OUTPUT_DISCONNECTED); + wl_tdm_output_send_dpms(output_resource, TDM_OUTPUT_DPMS_OFF, TDM_ERROR_OUTPUT_DISCONNECTED); } } -- 2.7.4