layer: add tdm_layer_get_index()
[platform/core/uifw/libtdm.git] / src / tdm_private_types.h
index 77393f1..a5b4423 100644 (file)
@@ -96,6 +96,7 @@ typedef enum {
        TDM_COMMIT_TYPE_LAYER,
 } tdm_commit_type;
 
+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;
@@ -114,21 +115,16 @@ typedef struct _tdm_private_output_hwc_target_buffer_window_commit_handler tdm_p
 
 typedef struct _tdm_private_layer_buffer tdm_private_layer_buffer;
 
-struct _tdm_private_display {
-       pthread_mutex_t lock;
-       unsigned int init_count;
+struct _tdm_private_module {
+       struct list_head link;
 
-       double stamp;
+       tdm_private_display *private_display;
 
        /* backend module info */
        void *module;
        tdm_backend_module *module_data;
        tdm_backend_data *bdata;
 
-#ifdef INIT_BUFMGR
-       tbm_bufmgr bufmgr;
-#endif
-
        /* backend function */
        tdm_display_capability capabilities;
        tdm_func_display func_display;
@@ -148,20 +144,39 @@ struct _tdm_private_display {
        struct list_head pp_list;
        struct list_head capture_list;
 
-       void **outputs_ptr;
+       /* backend output objects. allocated in backend. freed in frontend. ordered */
+       tdm_output **outputs;
+
+       int fd;
+       tdm_event_loop_source *event_source;
+};
+
+struct _tdm_private_display {
+       pthread_mutex_t lock;
+       unsigned int init_count;
+
+       double stamp;
+
+#ifdef INIT_BUFMGR
+       tbm_bufmgr bufmgr;
+#endif
+
+       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;
 
-       /* output order */
-       tdm_output **outputs;
-
        int print_fps;
 };
 
 struct _tdm_private_output {
        struct list_head link;
 
+       tdm_private_module *private_module;
+
        int index;
        double stamp;
 
@@ -193,6 +208,7 @@ struct _tdm_private_output {
        int layer_waiting_vblank;
 
        tdm_event_loop_source *vblank_timeout_timer;
+       unsigned int vblank_timeout_timer_expired;
 
        struct list_head change_handler_list;
 
@@ -221,6 +237,8 @@ struct _tdm_private_output {
 struct _tdm_private_layer {
        struct list_head link;
 
+       tdm_private_module *private_module;
+
        int index;
 
        tdm_private_display *private_display;
@@ -267,11 +285,13 @@ struct _tdm_private_hwc_window {
 struct _tdm_private_pp {
        struct list_head link;
 
+       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;
@@ -287,6 +307,8 @@ struct _tdm_private_capture {
        struct list_head link;
        struct list_head display_link;
 
+       tdm_private_module *private_module;
+
        double stamp;
 
        tdm_capture_target target;
@@ -295,7 +317,7 @@ struct _tdm_private_capture {
        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;
@@ -320,9 +342,6 @@ struct _tdm_private_loop {
        struct wl_display *wl_display;
        struct wl_event_loop *wl_loop;
 
-       int backend_fd;
-       tdm_event_loop_source *backend_source;
-
        /* In event loop, all resources are accessed by this dpy.
         * CAUTION:
         * - DO NOT include other private structure in this structure because this
@@ -430,7 +449,8 @@ typedef enum {
        TDM_THREAD_CB_NONE,
        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,
@@ -442,7 +462,8 @@ typedef enum {
 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;
@@ -464,10 +485,14 @@ struct _tdm_thread_cb_output_vblank {
        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 {