#include <poll.h>
#include <sys/syscall.h>
#include <sys/types.h>
+#include <sys/eventfd.h>
#include <math.h>
#include <grp.h>
/* TODO: temp solution for handling DPMS things in sub-htread */
tdm_event_loop_source *dpms_changed_timer;
+
+ struct {
+ /* look at the tdm_output_set_need_revalidate_handler() declaration for the details */
+ tdm_output_need_validate_handler hndl;
+ int event_fd;
+ } need_validate;
};
struct _tdm_private_layer {
TDM_THREAD_CB_PP_DONE,
TDM_THREAD_CB_CAPTURE_DONE,
TDM_THREAD_CB_VBLANK_SW,
+ TDM_THREAD_CB_NEED_VALIDATE,
} tdm_thread_cb_type;
typedef struct _tdm_thread_cb_base tdm_thread_cb_base;
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;
+typedef struct _tdm_thread_cb_need_validate tdm_thread_cb_need_validate;
struct _tdm_thread_cb_base {
tdm_thread_cb_type type;
double vblank_stamp;
};
+struct _tdm_thread_cb_need_validate {
+ tdm_thread_cb_base base;
+ tdm_private_output *o;
+};
+
tdm_error
tdm_thread_init(tdm_private_loop *private_loop);
void
void
tdm_monitor_server_command(tdm_display *dpy, const char *options, char *reply, int *len);
+tdm_error
+tdm_handle_need_validate_event(tdm_thread_cb_need_validate *ev);
struct argument_details {
char type;