virtual: add output create/destroy interface 89/186089/1
authorBoram Park <boram1288.park@samsung.com>
Mon, 26 Mar 2018 08:04:33 +0000 (17:04 +0900)
committerJunkyeong Kim <jk0430.kim@samsung.com>
Tue, 7 Aug 2018 06:58:32 +0000 (15:58 +0900)
Change-Id: I1ee25761ef62df057c4bbfa63408f47501cda380

include/tdm.h
include/tdm_backend.h
include/tdm_common.h

index 7beccd0..979c35e 100644 (file)
@@ -206,6 +206,16 @@ tdm_display_get_output_count(tdm_display *dpy, int *count);
 tdm_output *
 tdm_display_get_output(tdm_display *dpy, int index, tdm_error *error);
 
+tdm_error
+tdm_display_add_output_create_handler(tdm_display *dpy,
+                                                                         tdm_output_create_handler func,
+                                                                         void *user_data);
+
+void
+tdm_display_remove_output_create_handler(tdm_display *dpy,
+                                                                                tdm_output_create_handler func,
+                                                                                void *user_data);
+
 /**
  * @brief Find a output object which has the given name.
  * @param[in] dpy A display object
@@ -238,6 +248,16 @@ tdm_error
 tdm_module_get_info(tdm_module *module, const char **name,
                                        const char **vendor, int *major, int *minor);
 
+tdm_error
+tdm_output_add_destroy_handler(tdm_output *output,
+                                                          tdm_output_destroy_handler func,
+                                                          void *user_data);
+
+void
+tdm_output_remove_destroy_handler(tdm_output *output,
+                                                                 tdm_output_destroy_handler func,
+                                                                 void *user_data);
+
 /**
  * @brief Get a backend module object of the given output.
  * @param[in] output A output object
@@ -761,6 +781,9 @@ tdm_layer_get_displaying_buffer(tdm_layer *layer, tdm_error *error);
 tdm_error
 tdm_layer_set_buffer_queue(tdm_layer *layer, tbm_surface_queue_h buffer_queue);
 
+tdm_error
+tdm_layer_get_own_buffer_queue(tdm_layer *layer, tbm_surface_queue_h *buffer_queue);
+
 /**
  * @brief Unset a TBM surface_queue from a layer object
  * @details When this function is called, a current surface_queue will be
index 72136b1..a28654a 100644 (file)
@@ -682,6 +682,15 @@ typedef struct _tdm_func_layer {
         */
        tdm_error (*layer_get_buffer_flags)(tdm_layer *layer, unsigned int *flags);
 
+       /**
+        * @brief Get buffer queue which the layer offers.
+        * @param[in] layer A layer object
+        * @param[out] buffer_queue The buffer queue
+        * @return #TDM_ERROR_NONE if success. Otherwise, error value.
+        * @since 2.0.0
+        */
+       tdm_error (*layer_get_buffer_queue)(tdm_layer *layer, tbm_surface_queue_h *buffer_queue);
+
        void (*reserved1)(void);
        void (*reserved2)(void);
        void (*reserved3)(void);
index 328f837..cc79e90 100644 (file)
@@ -134,6 +134,7 @@ typedef enum {
        TDM_LAYER_CAPABILITY_SCANOUT        = (1 << 10), /**< if a layer allows a scanout buffer only */
        TDM_LAYER_CAPABILITY_RESEVED_MEMORY = (1 << 11), /**< if a layer allows a reserved buffer only */
        TDM_LAYER_CAPABILITY_NO_CROP        = (1 << 12), /**< if a layer has no cropping capability */
+       TDM_LAYER_CAPABILITY_BUFFER_QUEUE   = (1 << 13), /**< if a layer has an own buffer queue */
 } tdm_layer_capability;
 
 /**