struct list_head link;
int index;
- unsigned long stamp;
+ double stamp;
tdm_private_display *private_display;
struct _tdm_private_pp {
struct list_head link;
- unsigned long stamp;
+ double stamp;
tdm_private_display *private_display;
struct list_head link;
struct list_head display_link;
- unsigned long stamp;
+ double stamp;
tdm_capture_target target;
struct list_head commit_link;
} tdm_pp_private_buffer;
+typedef struct _tdm_capture_private_buffer {
+ tbm_surface_h buffer;
+ struct list_head link;
+ struct list_head commit_link;
+} tdm_capture_private_buffer;
+
int
tdm_display_check_module_abi(tdm_private_display *private_display, int abimaj, int abimin);
tdm_private_output *
-tdm_display_find_output_stamp(tdm_private_display *private_display,
- unsigned long stamp);
+tdm_display_find_output_stamp(tdm_private_display *private_display, double stamp);
tdm_private_pp *
-tdm_pp_find_stamp(tdm_private_display *private_display, unsigned long stamp);
+tdm_pp_find_stamp(tdm_private_display *private_display, double stamp);
tdm_private_capture *
-tdm_capture_find_stamp(tdm_private_display *private_display, unsigned long stamp);
+tdm_capture_find_stamp(tdm_private_display *private_display, double stamp);
void
tdm_output_cb_vblank(tdm_output *output_backend, unsigned int sequence,
void
tdm_capture_cb_done(tdm_capture *capture_backend, tbm_surface_h buffer,
void *user_data);
+tdm_error
+tdm_vblank_cb_vblank_SW(tdm_vblank *vblank, double vblank_stamp);
void
tdm_output_call_change_handler_internal(tdm_private_output *private_output,
TDM_THREAD_CB_OUTPUT_DPMS,
TDM_THREAD_CB_PP_DONE,
TDM_THREAD_CB_CAPTURE_DONE,
+ TDM_THREAD_CB_VBLANK_SW,
} tdm_thread_cb_type;
typedef struct _tdm_thread_cb_base tdm_thread_cb_base;
typedef struct _tdm_thread_cb_output_dpms tdm_thread_cb_output_dpms;
typedef struct _tdm_thread_cb_pp_done tdm_thread_cb_pp_done;
typedef struct _tdm_thread_cb_capture_done tdm_thread_cb_capture_done;
+typedef struct _tdm_thread_cb_vblank_sw tdm_thread_cb_vblank_sw;
struct _tdm_thread_cb_base {
tdm_thread_cb_type type;
struct _tdm_thread_cb_output_vblank {
tdm_thread_cb_base base;
- unsigned long output_stamp;
+ double output_stamp;
unsigned int sequence;
unsigned int tv_sec;
unsigned int tv_usec;
struct _tdm_thread_cb_output_status {
tdm_thread_cb_base base;
- unsigned long output_stamp;
+ double output_stamp;
tdm_output_conn_status status;
void *user_data;
};
struct _tdm_thread_cb_output_dpms {
tdm_thread_cb_base base;
- unsigned long output_stamp;
+ double output_stamp;
tdm_output_dpms dpms;
void *user_data;
};
struct _tdm_thread_cb_pp_done {
tdm_thread_cb_base base;
- unsigned long pp_stamp;
+ double pp_stamp;
tbm_surface_h src;
tbm_surface_h dst;
void *user_data;
struct _tdm_thread_cb_capture_done {
tdm_thread_cb_base base;
- unsigned long capture_stamp;
+ double capture_stamp;
tbm_surface_h buffer;
void *user_data;
};
+struct _tdm_thread_cb_vblank_sw {
+ tdm_thread_cb_base base;
+ double vblank_stamp;
+};
+
tdm_error
tdm_thread_init(tdm_private_loop *private_loop);
void
tdm_helper_dump_make_directory(const char *path, char *reply, int *len);
void
tdm_helper_dump_buffer_str(tbm_surface_h buffer, char *dir, char *str);
-unsigned long
-tdm_helper_get_time_in_millis(void);
-unsigned long
-tdm_helper_get_time_in_micros(void);
+double
+tdm_helper_get_time(void);
extern pthread_mutex_t tdm_mutex_check_lock;
extern int tdm_mutex_locked;
tdm_error
tdm_display_enable_ttrace_vblank(tdm_display *dpy, tdm_output *output, int enable);
-/**
- * @brief The tdm vblank object
- */
-typedef void tdm_vblank;
-
-typedef void (*tdm_vblank_handler)(tdm_vblank *vblank, tdm_error error, unsigned int sequence,
- unsigned int tv_sec, unsigned int tv_usec, void *user_data);
-
-tdm_vblank*
-tdm_vblank_create(tdm_display *dpy, tdm_output *output, tdm_error *error);
-void
-tdm_vblank_destroy(tdm_vblank *vblank);
-tdm_error
-tdm_vblank_set_fps(tdm_vblank *vblank, unsigned int fps);
-tdm_error
-tdm_vblank_set_offset(tdm_vblank *vblank, int offset);
-tdm_error
-tdm_vblank_set_enable_fake(tdm_vblank *vblank, unsigned int enable_fake);
-unsigned int
-tdm_vblank_get_enable_fake(tdm_vblank *vblank);
-tdm_error
-tdm_vblank_wait(tdm_vblank *vblank, unsigned int req_sec, unsigned int req_usec, unsigned int interval, tdm_vblank_handler func, void *user_data);
-
void
tdm_monitor_server_command(tdm_display *dpy, const char *options, char *reply, int *len);