tdm_vblank_set_client_vblank_fps(unsigned int pid, const char *name, unsigned int fps);
void
tdm_vblank_get_vblank_list_information(tdm_display *dpy, char *reply, int *len);
+tdm_error
+tdm_vblank_set_timeout_handler(tdm_vblank *vblank, tdm_vblank_timeout_handler func, void *user_data);
tdm_error
tdm_pp_init(tdm_private_display *private_display);
typedef struct _tdm_private_layer_buffer tdm_private_layer_buffer;
+typedef void (*tdm_vblank_timeout_handler)(tdm_vblank *vblank, void *user_data);
+
struct _tdm_private_module {
struct list_head link;
/* for timeout */
tdm_event_loop_source *timeout_timer;
+ tdm_vblank_timeout_handler timeout_func;
+ void *timeout_user_data;
} tdm_private_vblank;
struct _tdm_vblank_wait_info {
w, w->req_time, w->target_time, w->target_seq, w->interval);
}
+ if (private_vblank->timeout_func)
+ private_vblank->timeout_func(private_vblank, private_vblank->timeout_user_data);
+
return TDM_ERROR_NONE;
}
return;
}
+INTERN tdm_error
+tdm_vblank_set_timeout_handler(tdm_vblank *vblank, tdm_vblank_timeout_handler func, void *user_data)
+{
+ tdm_private_vblank *private_vblank = vblank;
+
+ TDM_RETURN_VAL_IF_FAIL(tdm_vblank_is_valid(vblank), TDM_ERROR_INVALID_PARAMETER);
+
+ private_vblank->timeout_func = func;
+ private_vblank->timeout_user_data = user_data;
+
+ return TDM_ERROR_NONE;
+}
+
/* LCOV_EXCL_START */
INTERN void
tdm_vblank_get_vblank_list_information(tdm_display *dpy, char *reply, int *len)