virtual: support tdm_client output_set_mode
[platform/core/uifw/libtdm.git] / src / tdm_server.c
index a71eb0e..453e10e 100644 (file)
@@ -607,7 +607,6 @@ _tdm_server_output_cb_get_available_modes(struct wl_client *client, struct wl_re
        tdm_error ret;
 
        ret = tdm_output_get_available_modes(output_info->output, &modes, &count);
-
        if ((ret != TDM_ERROR_NONE) || (count == 0)) {
                wl_tdm_output_send_available_modes(output_info->resource, NULL, ret);
                return;
@@ -630,6 +629,8 @@ _tdm_server_output_cb_set_mode(struct wl_client *client, struct wl_resource *res
 {
        tdm_server_output_info *output_info = wl_resource_get_user_data(resource);
        tdm_output_conn_status status = TDM_OUTPUT_CONN_STATUS_DISCONNECTED;
+       const tdm_output_mode *modes;
+       int count = 0;
        tdm_error ret;
 
        TDM_RETURN_IF_FAIL(output_info != NULL);
@@ -638,7 +639,10 @@ _tdm_server_output_cb_set_mode(struct wl_client *client, struct wl_resource *res
        TDM_RETURN_IF_FAIL(ret == TDM_ERROR_NONE);
        TDM_RETURN_IF_FAIL(status != TDM_OUTPUT_CONN_STATUS_DISCONNECTED);
 
-       //To do
+       ret = tdm_output_get_available_modes(output_info->output, &modes, &count);
+       TDM_RETURN_IF_FAIL(index < count);
+
+       tdm_output_call_mode_set_request(output_info->output, index);
 
        return;
 }