Add tdm_layer_get_displaying_buffer function 49/69849/2 accepted/tizen/common/20160518.124829 accepted/tizen/ivi/20160518.004037 accepted/tizen/mobile/20160518.004113 accepted/tizen/tv/20160518.004107 accepted/tizen/wearable/20160518.004047 submit/tizen/20160517.082526
authorChangyeon Lee <cyeon.lee@samsung.com>
Tue, 17 May 2016 05:26:57 +0000 (14:26 +0900)
committerChangyeon Lee <cyeon.lee@samsung.com>
Tue, 17 May 2016 08:15:27 +0000 (17:15 +0900)
Change-Id: Icf5337ce6ead12ae534506a4d150039568e59a73

include/tdm.h
src/tdm_display.c

index 1c38b52..229de00 100644 (file)
@@ -582,6 +582,16 @@ tdm_error
 tdm_layer_unset_buffer(tdm_layer *layer);
 
 /**
+ * @brief Get a displaying TDM buffer from a layer object
+ * @details A displaying TDM buffer is a current showing buffer on screen
+ * that is set to layer object and applied output object of a layer object.
+ * @param[in] layer A layer object
+ * @return A TDM buffer if success. Otherwise, NULL.
+ */
+tbm_surface_h
+tdm_layer_get_displaying_buffer(tdm_layer *layer, tdm_error *error);
+
+/**
  * @brief Set a TBM surface_queue to a layer object
  * @details A TBM surface_queue will be applied when the output object
  * of a layer object is committed. and TDM layer will be automatically updated
index 1b95bec..c44130b 100644 (file)
@@ -1543,6 +1543,31 @@ tdm_layer_unset_buffer(tdm_layer *layer)
        return ret;
 }
 
+EXTERN tbm_surface_h
+tdm_layer_get_displaying_buffer(tdm_layer *layer, tdm_error *error)
+{
+       tbm_surface_h buffer;
+       LAYER_FUNC_ENTRY_ERROR();
+
+       _pthread_mutex_lock(&private_display->lock);
+
+       if (error)
+               *error = TDM_ERROR_NONE;
+
+       if (private_layer->showing_buffer) {
+               buffer = private_layer->showing_buffer;
+       } else {
+               *error = TDM_ERROR_OPERATION_FAILED;
+               _pthread_mutex_unlock(&private_display->lock);
+               TDM_ERR("layer(%p) showing_buffer is null",
+                       private_layer);
+               return NULL;
+       }
+       _pthread_mutex_unlock(&private_display->lock);
+
+       return buffer;
+}
+
 static void
 _tbm_layer_queue_acquirable_cb(tbm_surface_queue_h surface_queue, void *data)
 {