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,
_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