virtual: add get_available_modes and set_mode protocol.
[platform/core/uifw/libtdm.git] / src / tdm_server.c
index e51d868..a71eb0e 100644 (file)
@@ -596,6 +596,53 @@ failed:
        wl_tdm_output_send_dpms(output_info->resource, TDM_OUTPUT_DPMS_OFF, ret);
 }
 
+static void
+_tdm_server_output_cb_get_available_modes(struct wl_client *client, struct wl_resource *resource)
+{
+       tdm_server_output_info *output_info = wl_resource_get_user_data(resource);
+       const tdm_output_mode *modes;
+       tdm_output_mode *mode;
+       struct wl_array array;
+       int i, size, count = 0;
+       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;
+       }
+
+       size = sizeof(tdm_output_mode);
+       wl_array_init(&array);
+       for (i = 0; i < count; i++) {
+               mode = wl_array_add(&array, size);
+               memcpy(mode, &modes[i], size);
+       }
+
+       wl_tdm_output_send_available_modes(output_info->resource, &array, ret);
+
+       wl_array_release(&array);
+}
+
+static void
+_tdm_server_output_cb_set_mode(struct wl_client *client, struct wl_resource *resource, unsigned int index)
+{
+       tdm_server_output_info *output_info = wl_resource_get_user_data(resource);
+       tdm_output_conn_status status = TDM_OUTPUT_CONN_STATUS_DISCONNECTED;
+       tdm_error ret;
+
+       TDM_RETURN_IF_FAIL(output_info != NULL);
+
+       ret = tdm_output_get_conn_status(output_info->output, &status);
+       TDM_RETURN_IF_FAIL(ret == TDM_ERROR_NONE);
+       TDM_RETURN_IF_FAIL(status != TDM_OUTPUT_CONN_STATUS_DISCONNECTED);
+
+       //To do
+
+       return;
+}
+
 static const struct wl_tdm_output_interface tdm_output_implementation = {
        _tdm_server_output_cb_destroy,
        _tdm_server_output_cb_create_vblank,
@@ -603,6 +650,8 @@ static const struct wl_tdm_output_interface tdm_output_implementation = {
        _tdm_server_output_cb_get_connection,
        _tdm_server_output_cb_get_mode,
        _tdm_server_output_cb_get_dpms,
+       _tdm_server_output_cb_get_available_modes,
+       _tdm_server_output_cb_set_mode,
 };
 
 static void