dump layer buffer when calling tdm_layer_set_buffer
[platform/core/uifw/libtdm.git] / src / tdm_server.c
index c49e9db..3ade1e5 100644 (file)
@@ -176,7 +176,7 @@ _tdm_server_send_done(tdm_server_wait_info *wait_info, tdm_error error,
        }
 
        if (tdm_debug_module & TDM_DEBUG_VBLANK)
-               TDM_INFO("req_id(%d) done", wait_info->req_id);
+               TDM_DBG("req_id(%d) done", wait_info->req_id);
 
        TDM_TRACE_COUNT(ServerDoneVBlank, wait_info->req_id);
 
@@ -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;
@@ -242,6 +242,8 @@ destroy_vblank_callback(struct wl_resource *resource)
 
        TDM_RETURN_IF_FAIL(vblank_info != NULL);
 
+       LIST_DEL(&vblank_info->link);
+
        if (vblank_info->vblank)
                tdm_vblank_destroy(vblank_info->vblank);
 
@@ -250,7 +252,6 @@ destroy_vblank_callback(struct wl_resource *resource)
                        destroy_wait(w);
        }
 
-       LIST_DEL(&vblank_info->link);
        free(vblank_info);
 }
 
@@ -317,7 +318,7 @@ _tdm_server_vblank_cb_wait_vblank(struct wl_client *client, struct wl_resource *
        wait_info->req_id = req_id;
 
        if (tdm_debug_module & TDM_DEBUG_VBLANK)
-               TDM_INFO("req_id(%d) wait", req_id);
+               TDM_DBG("req_id(%d) wait", req_id);
 
        ret = tdm_vblank_wait(vblank_info->vblank, req_sec, req_usec, interval, _tdm_server_cb_vblank, wait_info);
 
@@ -359,7 +360,7 @@ _tdm_server_vblank_cb_wait_vblank_seq(struct wl_client *client, struct wl_resour
        wait_info->req_id = req_id;
 
        if (tdm_debug_module & TDM_DEBUG_VBLANK)
-               TDM_INFO("req_id(%d) wait", req_id);
+               TDM_DBG("req_id(%d) wait", req_id);
 
        ret = tdm_vblank_wait_seq(vblank_info->vblank, req_sec, req_usec, sequence, _tdm_server_cb_vblank, wait_info);
 
@@ -463,12 +464,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 +495,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 +523,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 = {
@@ -549,6 +550,8 @@ destroy_output_callback(struct wl_resource *resource)
 
        TDM_RETURN_IF_FAIL(output_info != NULL);
 
+       LIST_DEL(&output_info->link);
+
        tdm_output_remove_change_handler(output_info->output,
                                                                         _tdm_server_cb_output_change, output_info);
 
@@ -556,7 +559,6 @@ destroy_output_callback(struct wl_resource *resource)
                wl_resource_destroy(v->resource);
        }
 
-       LIST_DEL(&output_info->link);
        free(output_info);
 }
 
@@ -569,6 +571,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 +609,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);
        }
 }
 
@@ -650,7 +653,7 @@ _tdm_server_cb_debug(struct wl_client *client, struct wl_resource *resource, con
        size = sizeof(message) - len;
        m = message;
 
-       wl_client_flush(wl_resource_get_client(resource));
+       wl_client_flush(client);
 
        while (size > 0) {
                char buffer[TDM_DEBUG_REPLY_MSG_LEN];
@@ -788,7 +791,7 @@ static void
 _tdm_socket_init(tdm_private_loop *private_loop)
 {
        const char *dir = NULL;
-       char socket_path[128];
+       char socket_path[TDM_NAME_LEN * 2];
        int ret = -1;
        uid_t uid;
        gid_t gid;
@@ -799,7 +802,11 @@ _tdm_socket_init(tdm_private_loop *private_loop)
                return;
        }
 
-       snprintf(socket_path, sizeof(socket_path), "%s/%s", dir, "tdm-socket");
+       strncpy(socket_path, dir, TDM_NAME_LEN - 1);
+       socket_path[TDM_NAME_LEN - 1] = '\0';
+
+       strncat(socket_path, "/tdm-socket", 11);
+       socket_path[TDM_NAME_LEN + 10] = '\0';
 
        ret = chmod(socket_path, 509);
        if (ret < 0) {