* The damage parameter describes a buffer damage region as defined in the
* description of hwc_window_set_buffer_damage().
*
+ * List of composited hwc_windows (hwc_windows which buffers are presented on #target_buffer)
+ * will be passed along with #target_buffer to allow tdm to make the smooth transition
+ * from a DEVICE type to a CLIENT type.
+ *
* Will be called before output_commit() if any of the layers are marked as
* TDM_COMPOSITION_CLIENT or TDM_COMPOSITION_DEVICE_CANDIDATE. If no layers are
* so marked, then it is not necessary to call this function. It is not necessary
* @param[in] output A output object
* @param[in] target The new target buffer
* @param[in] damage The buffer damage region
+ * @param[in] composited_wnds The array of composited hwc_wnds
+ * @param[in] num_wnds The size of #composited_wnds array
* @return #TDM_ERROR_NONE if success. Otherwise, error value.
* @since 2.0.0
*/
- tdm_error (*output_hwc_set_client_target_buffer)(tdm_output *output, tbm_surface_h target_buffer,
- tdm_hwc_region damage);
+ tdm_error (*output_hwc_set_client_target_buffer)(tdm_output *output, tbm_surface_h target_buffer, tdm_hwc_region damage);
/**
* @brief Validate the output
* @return #TDM_ERROR_NONE if success. Otherwise, error value.
* @since 2.0.0
*/
- tdm_error (*output_hwc_validate)(tdm_output *output, uint32_t *num_types);
+ tdm_error (*output_hwc_validate)(tdm_output *output, tdm_hwc_window **composited_wnds, uint32_t num_wnds,
+ uint32_t *num_types);
/**
* @brief Get changed composition types
* @param[in] z the new Z order
* @return #TDM_ERROR_NONE if success. Otherwise, error value.
*/
- tdm_error (*hwc_window_set_zpos)(tdm_hwc_window *hwc_window, uint32_t zpos);
+ tdm_error (*hwc_window_set_zpos)(tdm_hwc_window *hwc_window, int32_t zpos);
/**
* @brief Sets the desired composition type of the given window.
* @param[in] hwc_window A window object
* @param[in] buffer A TDM buffer
* @return #TDM_ERROR_NONE if success. Otherwise, error value.
+ *
+ * Implementation should return #TDM_ERROR_BUSY if #hwc_window can't
+ * be updated right now, this won't be interpreted like some critical
+ * error.
*/
tdm_error (*hwc_window_set_buffer)(tdm_hwc_window *hwc_window,
tbm_surface_h buffer);