- func_output = &private_module->func_output;
-
- if (!func_output->output_hwc_get_client_target_buffer_layer) {
- /* LCOV_EXCL_START */
- _pthread_mutex_unlock(&private_display->lock);
- TDM_ERR("not implemented!!");
- return TDM_ERROR_NOT_IMPLEMENTED;
- /* LCOV_EXCL_STOP */
- }
-
- layer = func_output->output_hwc_get_client_target_buffer_layer(private_output->output_backend,
- &ret);
- if (!layer) {
- /* LCOV_EXCL_START */
- _pthread_mutex_unlock(&private_display->lock);
- TDM_ERR("no assigned layer!!");
- return TDM_ERROR_INVALID_PARAMETER;
- /* LCOV_EXCL_STOP */
- }
-
- private_layer = (tdm_private_layer*)layer;
-
- if (!func_output->output_hwc_get_client_target_buffer) {
- /* LCOV_EXCL_START */
- _pthread_mutex_unlock(&private_display->lock);
- TDM_ERR("not implemented!!");
- return TDM_ERROR_NOT_IMPLEMENTED;
- /* LCOV_EXCL_STOP */
- }
-
- buffer = func_output->output_hwc_get_client_target_buffer(private_output->output_backend,
- &ret);
- if (buffer)
- ret = tdm_layer_set_buffer_internal(private_layer, buffer);
- else
- ret = tdm_layer_unset_buffer_internal(private_layer);
- if (ret != TDM_ERROR_NONE) {
- /* LCOV_EXCL_START */
- TDM_ERR("failed: layer set info(window)");
- _pthread_mutex_unlock(&private_display->lock);
- /* LCOV_EXCL_STOP */
- return ret;
- }
-
- if (private_output->need_set_target_info) {
- mode = private_output->current_mode;
- private_output->target_buffer_info.src_config.size.h = mode->hdisplay;
- private_output->target_buffer_info.src_config.size.v = mode->vdisplay;
- private_output->target_buffer_info.src_config.pos.x = 0;
- private_output->target_buffer_info.src_config.pos.y = 0;
- private_output->target_buffer_info.src_config.pos.w = mode->hdisplay;
- private_output->target_buffer_info.src_config.pos.h = mode->vdisplay;
- private_output->target_buffer_info.dst_pos.x = 0;
- private_output->target_buffer_info.dst_pos.y = 0;
- private_output->target_buffer_info.dst_pos.w = mode->hdisplay;
- private_output->target_buffer_info.dst_pos.h = mode->vdisplay;
- private_output->target_buffer_info.transform = TDM_TRANSFORM_NORMAL;
-
- ret = tdm_layer_set_info_internal(private_layer, &private_output->target_buffer_info);
- if (ret != TDM_ERROR_NONE) {
- /* LCOV_EXCL_START */
- TDM_ERR("failed: layer set info(window)");
- _pthread_mutex_unlock(&private_display->lock);
- /* LCOV_EXCL_STOP */
- return ret;
- }
-
- private_output->need_set_target_info = 0;
- }
-
- output_hwc_target_buffer_commit_handler = calloc(1, sizeof(tdm_private_output_hwc_target_buffer_commit_handler));
- if (!output_hwc_target_buffer_commit_handler) {
- /* LCOV_EXCL_START */
- TDM_ERR("failed: alloc memory");
- _pthread_mutex_unlock(&private_display->lock);
- return TDM_ERROR_OUT_OF_MEMORY;
- /* LCOV_EXCL_STOP */
- }
-
- output_hwc_target_buffer_commit_handler->private_output = private_output;
- output_hwc_target_buffer_commit_handler->func = func;
- output_hwc_target_buffer_commit_handler->user_data = user_data;
-
- ret = tdm_layer_commit_internal(private_layer, _tdm_output_hwc_layer_commit_handler, output_hwc_target_buffer_commit_handler);
- if (ret != TDM_ERROR_NONE) {
- /* LCOV_EXCL_START */
- TDM_ERR("failed: commit layer(target buffer)");
- free(output_hwc_target_buffer_commit_handler);
- _pthread_mutex_unlock(&private_display->lock);
- /* LCOV_EXCL_STOP */
- return ret;
- }
-
- _pthread_mutex_unlock(&private_display->lock);
-
- return ret;
-}
-
-tdm_error
-tdm_output_hwc_get_video_supported_formats(tdm_output *output, const tbm_format **formats,
- int *count)
-{
- tdm_private_module *private_module;
- tdm_func_output *func_output;
- OUTPUT_FUNC_ENTRY();
-
- TDM_RETURN_VAL_IF_FAIL(formats != NULL, TDM_ERROR_INVALID_PARAMETER);
- TDM_RETURN_VAL_IF_FAIL(count != NULL, TDM_ERROR_INVALID_PARAMETER);