+static void
+_voutput_output_handler(tdm_client_output *output, tdm_output_change_type type,
+ tdm_value value, void *user_data)
+{
+ tdm_client_voutput *voutput = NULL;
+ tdm_output_conn_status status;
+ tdm_test_client *data;
+
+ data = (tdm_test_client *) user_data;
+ TDM_RETURN_IF_FAIL(data != NULL);
+ voutput = data->voutput;
+ TDM_RETURN_IF_FAIL(voutput != NULL);
+
+ if (type == TDM_OUTPUT_CHANGE_CONNECTION) {
+ status = (tdm_output_conn_status)value.u32;
+ printf("output %s.\n", conn_str[value.u32]);
+
+ if (status == TDM_OUTPUT_CONN_STATUS_DISCONNECTED) {
+ printf("client: disconnected, destroy voutput\n");
+ tdm_client_output_remove_change_handler(output, _voutput_output_handler, data);
+ tdm_client_voutput_destroy(voutput);
+ } else if (status == TDM_OUTPUT_CONN_STATUS_CONNECTED) {
+ printf("client: connected\n");
+ }
+ } else if (type == TDM_OUTPUT_CHANGE_DPMS) {
+ printf("output %s.\n", dpms_str[value.u32]);
+ }
+}
+