+_tc_tdm_test_server_cb_output_mode_change(tdm_output *output, unsigned int index, void *user_data)
+{
+ const tdm_output_mode *modes, *mode;
+ int count = 0;
+ tdm_error ret;
+
+ ret = tdm_output_get_available_modes(output, &modes, &count);
+ TDM_UT_RETURN_IF_FAIL(ret == TDM_ERROR_NONE);
+ TDM_UT_RETURN_IF_FAIL((int)index < count);
+
+ mode = &modes[index];
+
+ ret = tdm_output_set_mode(output, mode);
+ TDM_UT_RETURN_IF_FAIL(ret == TDM_ERROR_NONE);
+
+ ret = tdm_output_set_dpms(output, TDM_OUTPUT_DPMS_ON);
+ TDM_UT_RETURN_IF_FAIL(ret == TDM_ERROR_NONE);
+
+ ret = tdm_output_commit(output, 0, NULL, NULL);
+ TDM_UT_RETURN_IF_FAIL(ret == TDM_ERROR_NONE);
+}
+
+static void
+_tc_tdm_output_cb_destroy_handler(tdm_output *output, void *user_data)
+{
+ tdm_error ret;
+
+ tdm_output_remove_mode_change_request_handler(output, _tc_tdm_test_server_cb_output_mode_change, NULL);
+ tdm_output_remove_destroy_handler(output, _tc_tdm_output_cb_destroy_handler, NULL);
+
+ ret = tdm_output_set_dpms(output, TDM_OUTPUT_DPMS_OFF);
+ TDM_UT_RETURN_IF_FAIL(ret == TDM_ERROR_NONE);
+}
+
+static void
+_tc_tdm_output_cb_create_handler(tdm_display *dpy, tdm_output *output, void *user_data)
+{
+ tdm_error ret = TDM_ERROR_NONE;
+
+ ret = tdm_output_add_mode_change_request_handler(output, _tc_tdm_test_server_cb_output_mode_change, NULL);
+ TDM_UT_RETURN_IF_FAIL(ret == TDM_ERROR_NONE);
+
+ ret = tdm_output_add_destroy_handler(output, _tc_tdm_output_cb_destroy_handler, NULL);
+ TDM_UT_RETURN_IF_FAIL(ret == TDM_ERROR_NONE);
+}
+
+static void