* Taeheon Kim <th908.kim@samsung.com>,
* YoungJun Cho <yj44.cho@samsung.com>,
* SooChan Lim <sc1.lim@samsung.com>,
- * Boram Park <sc1.lim@samsung.com>
+ * Boram Park <boram1288.park@samsung.com>
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
TDM_COMMIT_TYPE_LAYER,
} tdm_commit_type;
-typedef struct _tdm_private_backend tdm_private_backend;
+typedef struct _tdm_private_module tdm_private_module;
typedef struct _tdm_private_display tdm_private_display;
typedef struct _tdm_private_output tdm_private_output;
typedef struct _tdm_private_layer tdm_private_layer;
+typedef struct _tdm_private_hwc tdm_private_hwc;
typedef struct _tdm_private_hwc_window tdm_private_hwc_window;
typedef struct _tdm_private_pp tdm_private_pp;
typedef struct _tdm_private_capture tdm_private_capture;
typedef struct _tdm_private_output_commit_handler tdm_private_output_commit_handler;
typedef struct _tdm_private_output_vblank_handler tdm_private_output_vblank_handler;
typedef struct _tdm_private_layer_commit_handler tdm_private_layer_commit_handler;
-typedef struct _tdm_private_hwc_window_commit_handler tdm_private_hwc_window_commit_handler;
-typedef struct _tdm_private_output_hwc_target_buffer_window_commit_handler tdm_private_output_hwc_target_buffer_commit_handler;
+typedef struct _tdm_private_hwc_commit_handler tdm_private_hwc_commit_handler;
typedef struct _tdm_private_layer_buffer tdm_private_layer_buffer;
-struct _tdm_private_backend {
+struct _tdm_private_module {
struct list_head link;
tdm_private_display *private_display;
tdm_func_display func_display;
tdm_func_output func_output;
tdm_func_layer func_layer;
+ tdm_func_hwc func_hwc;
tdm_func_hwc_window func_hwc_window;
tdm_func_pp func_pp;
tdm_func_capture func_capture;
tbm_bufmgr bufmgr;
#endif
- struct list_head backend_list;
- tdm_private_backend *current_backend; //setted only when loading
- tdm_private_backend *pp_backend; //pp-support backend
- tdm_private_backend *capture_backend; //TODO: remove later
+ struct list_head module_list;
+ tdm_private_module *current_module; //setted only when loading
+ tdm_private_module *pp_module; //pp-support backend
+ tdm_private_module *capture_module; //TODO: remove later
/* for event handling */
tdm_private_loop *private_loop;
struct _tdm_private_output {
struct list_head link;
- tdm_private_backend *private_backend;
+ tdm_private_module *private_module;
int index;
double stamp;
int regist_dpms_cb;
struct list_head layer_list;
- struct list_head hwc_window_list;
struct list_head capture_list;
struct list_head vblank_handler_list;
struct list_head output_commit_handler_list;
void **layers_ptr;
- struct {
- /* look at the tdm_output_set_need_revalidate_handler() declaration for the details */
- tdm_output_need_validate_handler hndl;
- int event_fd;
- tdm_event_loop_source *event_source;
- } need_validate;
-
tdm_info_layer target_buffer_info; /* layer_info for the target_buffer */
/* calling a output commit per a vblank */
/* hwc */
int need_set_target_info;
+ tdm_private_hwc *private_hwc;
};
struct _tdm_private_layer {
struct list_head link;
- tdm_private_backend *private_backend;
+ tdm_private_module *private_module;
int index;
unsigned int fps_count;
};
-struct _tdm_private_hwc_window {
+struct _tdm_private_hwc {
struct list_head link;
+ tdm_private_module *private_module;
+
int index;
+ double stamp;
- tdm_private_display *private_display;
tdm_private_output *private_output;
+ struct list_head hwc_window_list;
+ struct list_head hwc_commit_handler_list;
+
+ int regist_commit_cb;
+
+ tdm_hwc *hwc_backend;
+};
+
+struct _tdm_private_hwc_window {
+ struct list_head link;
+
+ tdm_private_module *private_module;
+
+ tdm_private_hwc *private_hwc;
tdm_hwc_window *hwc_window_backend;
};
struct _tdm_private_pp {
struct list_head link;
- tdm_private_backend *private_backend;
+ tdm_private_module *private_module;
double stamp;
tdm_private_display *private_display;
- tdm_pp *pp_backend;
+ tdm_pp *pp_module;
struct list_head pending_buffer_list;
struct list_head buffer_list;
struct list_head link;
struct list_head display_link;
- tdm_private_backend *private_backend;
+ tdm_private_module *private_module;
double stamp;
tdm_private_output *private_output;
tdm_private_layer *private_layer;
- tdm_capture *capture_backend;
+ tdm_capture *capture_module;
struct list_head pending_buffer_list;
struct list_head buffer_list;
* private_thread is NULL.
*/
tdm_private_thread *private_thread;
+
+ struct list_head source_list;
};
struct _tdm_private_output_vblank_handler {
pid_t owner_tid;
};
-struct _tdm_private_hwc_window_commit_handler {
- tdm_private_hwc_window *private_hwc_window;
- tdm_hwc_window_commit_handler func;
- void *user_data;
-};
+struct _tdm_private_hwc_commit_handler {
+ struct list_head link;
-struct _tdm_private_output_hwc_target_buffer_window_commit_handler {
- tdm_private_output *private_output;
- tdm_output_hwc_target_buffer_commit_handler func;
+ tdm_private_hwc *private_hwc;
+ tdm_hwc_commit_handler func;
void *user_data;
+
+ pid_t owner_tid;
};
struct _tdm_private_layer_commit_handler {
typedef enum {
TDM_THREAD_CB_NONE,
+ TDM_THREAD_CB_EXIT, /* special type to exit the tdm-thread */
TDM_THREAD_CB_OUTPUT_COMMIT,
TDM_THREAD_CB_OUTPUT_VBLANK,
- TDM_THREAD_CB_OUTPUT_CHANGE,
+ TDM_THREAD_CB_OUTPUT_STATUS,
+ TDM_THREAD_CB_OUTPUT_DPMS,
TDM_THREAD_CB_PP_DONE,
TDM_THREAD_CB_CAPTURE_DONE,
TDM_THREAD_CB_VBLANK_SW,
TDM_THREAD_CB_VBLANK_CREATE,
- TDM_THREAD_CB_NEED_VALIDATE,
+ TDM_THREAD_CB_HWC_COMMIT,
TDM_THREAD_CB_MAX,
} tdm_thread_cb_type;
typedef struct _tdm_thread_cb_base tdm_thread_cb_base;
typedef struct _tdm_thread_cb_output_vblank tdm_thread_cb_output_commit;
typedef struct _tdm_thread_cb_output_vblank tdm_thread_cb_output_vblank;
-typedef struct _tdm_thread_cb_output_change tdm_thread_cb_output_change;
+typedef struct _tdm_thread_cb_output_dpms tdm_thread_cb_output_dpms;
+typedef struct _tdm_thread_cb_output_status tdm_thread_cb_output_status;
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_vblank_create tdm_thread_cb_vblank_create;
-typedef struct _tdm_thread_cb_need_validate tdm_thread_cb_need_validate;
+typedef struct _tdm_thread_cb_output_vblank tdm_thread_cb_hwc_commit;
struct _tdm_thread_cb_base {
tdm_thread_cb_type type;
unsigned int tv_usec;
};
-struct _tdm_thread_cb_output_change {
+struct _tdm_thread_cb_output_status {
+ tdm_thread_cb_base base;
+ tdm_output_conn_status status;
+};
+
+struct _tdm_thread_cb_output_dpms {
tdm_thread_cb_base base;
- tdm_output_change_type type;
- tdm_value value;
+ tdm_output_dpms dpms;
};
struct _tdm_thread_cb_pp_done {
double vblank_stamp;
};
-struct _tdm_thread_cb_need_validate {
- tdm_thread_cb_base base;
-};
-
struct argument_details {
char type;
int nullable;