return TDM_ERROR_NONE;
}
+/* LCOV_EXCL_START */
EXTERN tdm_error
tdm_backend_register_func_hwc_window(tdm_display *dpy, tdm_func_hwc_window *func_hwc_window)
{
return TDM_ERROR_NONE;
}
+/* LCOV_EXCL_STOP */
EXTERN tdm_error
tdm_backend_register_func_pp(tdm_display *dpy, tdm_func_pp *func_pp)
return TDM_ERROR_NONE;
}
+/* LCOV_EXCL_START */
/* backend operates itself types */
static tdm_private_output*
_look_for_frontend_hwc_output(tdm_output *backend_output)
return TDM_ERROR_NONE;
}
+/* LCOV_EXCL_STOP */
private_module = (tdm_private_module*)module; \
private_display = private_module->private_display;
+/* LCOV_EXCL_START */
INTERN tdm_error
tdm_display_enable_debug_module(const char*modules)
{
return TDM_ERROR_NONE;
}
+/* LCOV_EXCL_STOP */
EXTERN tdm_error
tdm_display_get_capabilities(tdm_display *dpy,
#include "tdm_private.h"
+/* LCOV_EXCL_START */
+
#define COUNT_MAX 10
#define HWC_WINDOW_FUNC_ENTRY() \
func_hwc_window = &private_module->func_hwc_window;
if (!func_hwc_window->hwc_window_get_tbm_buffer_queue) {
- /* LCOV_EXCL_START */
_pthread_mutex_unlock(&private_display->lock);
TDM_WRN("not implemented!!");
if (error)
*error = TDM_ERROR_NOT_IMPLEMENTED;
return NULL;
- /* LCOV_EXCL_STOP */
}
queue = func_hwc_window->hwc_window_get_tbm_buffer_queue(private_hwc_window->hwc_window_backend, error);
func_hwc_window = &private_module->func_hwc_window;
if (!func_hwc_window->hwc_window_set_composition_type) {
- /* LCOV_EXCL_START */
_pthread_mutex_unlock(&private_display->lock);
TDM_WRN("not implemented!!");
return TDM_ERROR_NOT_IMPLEMENTED;
- /* LCOV_EXCL_STOP */
}
ret = func_hwc_window->hwc_window_set_composition_type(private_hwc_window->hwc_window_backend, composition_type);
func_hwc_window = &private_module->func_hwc_window;
if (!func_hwc_window->hwc_window_set_buffer_damage) {
- /* LCOV_EXCL_START */
_pthread_mutex_unlock(&private_display->lock);
TDM_WRN("not implemented!!");
return TDM_ERROR_NOT_IMPLEMENTED;
- /* LCOV_EXCL_STOP */
}
ret = func_hwc_window->hwc_window_set_buffer_damage(private_hwc_window->hwc_window_backend, damage);
func_hwc_window = &private_module->func_hwc_window;
if (!func_hwc_window->hwc_window_set_info) {
- /* LCOV_EXCL_START */
_pthread_mutex_unlock(&private_display->lock);
TDM_WRN("not implemented!!");
return TDM_ERROR_NOT_IMPLEMENTED;
- /* LCOV_EXCL_STOP */
}
if (info->src_config.format)
_pthread_mutex_lock(&private_display->lock);
if ((tdm_debug_dump & TDM_DUMP_FLAG_WINDOW) && buffer) {
- /* LCOV_EXCL_START */
char str[TDM_PATH_LEN];
static int i;
snprintf(str, TDM_PATH_LEN, "window_%d_%03d", private_output->index, i++);
tdm_helper_dump_buffer_str(buffer, tdm_debug_dump_dir, str);
- /* LCOV_EXCL_STOP */
}
private_module = private_output->private_module;
func_hwc_window = &private_module->func_hwc_window;
if (!func_hwc_window->hwc_window_set_buffer) {
- /* LCOV_EXCL_START */
_pthread_mutex_unlock(&private_display->lock);
TDM_WRN("not implemented!!");
return TDM_ERROR_NOT_IMPLEMENTED;
- /* LCOV_EXCL_STOP */
}
ret = func_hwc_window->hwc_window_set_buffer(private_hwc_window->hwc_window_backend, buffer);
func_hwc_window = &private_module->func_hwc_window;
if (!func_hwc_window->hwc_window_unset_buffer) {
- /* LCOV_EXCL_START */
_pthread_mutex_unlock(&private_display->lock);
TDM_ERR("not implemented!!");
return TDM_ERROR_NOT_IMPLEMENTED;
- /* LCOV_EXCL_STOP */
}
ret = func_hwc_window->hwc_window_unset_buffer(private_hwc_window->hwc_window_backend);
if (!is_video) {
if (!func_output->output_hwc_create_window) {
- /* LCOV_EXCL_START */
if (error)
*error = TDM_ERROR_BAD_MODULE;
return NULL;
- /* LCOV_EXCL_STOP */
}
hwc_window_backend = func_output->output_hwc_create_window(
}
} else {
if (!func_output->output_hwc_create_video_window) {
- /* LCOV_EXCL_START */
if (error)
*error = TDM_ERROR_NOT_IMPLEMENTED;
return NULL;
- /* LCOV_EXCL_STOP */
}
hwc_window_backend = func_output->output_hwc_create_video_window(
private_hwc_window = calloc(1, sizeof(tdm_private_hwc_window));
if (!private_hwc_window) {
- /* LCOV_EXCL_START */
TDM_ERR("failed: alloc memory");
func_output->output_hwc_destroy_window(private_output->output_backend, hwc_window_backend);
if (error)
*error = TDM_ERROR_OUT_OF_MEMORY;
return NULL;
- /* LCOV_EXCL_STOP */
}
LIST_ADD(&private_hwc_window->link, &private_output->hwc_window_list);
func_hwc_window = &private_module->func_hwc_window;
if (!func_hwc_window->hwc_window_set_flags) {
- /* LCOV_EXCL_START */
_pthread_mutex_unlock(&private_display->lock);
TDM_WRN("not implemented!!");
return TDM_ERROR_NOT_IMPLEMENTED;
- /* LCOV_EXCL_STOP */
}
ret = func_hwc_window->hwc_window_set_flags(private_hwc_window->hwc_window_backend, flags);
func_hwc_window = &private_module->func_hwc_window;
if (!func_hwc_window->hwc_window_unset_flags) {
- /* LCOV_EXCL_START */
_pthread_mutex_unlock(&private_display->lock);
TDM_WRN("not implemented!!");
return TDM_ERROR_NOT_IMPLEMENTED;
- /* LCOV_EXCL_STOP */
}
ret = func_hwc_window->hwc_window_unset_flags(private_hwc_window->hwc_window_backend, flags);
func_hwc_window = &private_module->func_hwc_window;
if (!func_hwc_window->hwc_window_get_layer) {
- /* LCOV_EXCL_START */
_pthread_mutex_unlock(&private_display->lock);
TDM_ERR("not implemented!!");
return TDM_ERROR_NOT_IMPLEMENTED;
- /* LCOV_EXCL_STOP */
}
layer = func_hwc_window->hwc_window_get_layer(private_hwc_window->hwc_window_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;
else
ret = tdm_layer_unset_buffer_internal(private_layer);
if (ret != TDM_ERROR_NONE) {
- /* LCOV_EXCL_START */
TDM_ERR("failed: layer set buffer(window)");
- /* LCOV_EXCL_STOP */
return ret;
}
ret = func_hwc_window->hwc_window_get_info(private_hwc_window->hwc_window_backend,
&window_info);
if (ret != TDM_ERROR_NONE) {
- /* LCOV_EXCL_START */
TDM_ERR("failed: commit layer(window)");
- /* LCOV_EXCL_STOP */
return ret;
}
info_layer = (tdm_info_layer *)&window_info;
ret = tdm_layer_set_info_internal(private_layer, info_layer);
if (ret != TDM_ERROR_NONE) {
- /* LCOV_EXCL_START */
TDM_ERR("failed: layer set info(window)");
- /* LCOV_EXCL_STOP */
return ret;
}
hwc_window_commit_handler = calloc(1, sizeof(tdm_private_hwc_window_commit_handler));
if (!hwc_window_commit_handler) {
- /* LCOV_EXCL_START */
TDM_ERR("failed: alloc memory");
return TDM_ERROR_OUT_OF_MEMORY;
- /* LCOV_EXCL_STOP */
}
hwc_window_commit_handler->private_hwc_window = private_hwc_window;
ret = tdm_layer_commit_internal(private_layer, _tdm_hwc_window_layer_commit_handler, hwc_window_commit_handler);
if (ret != TDM_ERROR_NONE) {
- /* LCOV_EXCL_START */
TDM_ERR("failed: commit layer(window)");
free(hwc_window_commit_handler);
- /* LCOV_EXCL_STOP */
return ret;
}
func_hwc_window = &private_module->func_hwc_window;
if (!func_hwc_window->hwc_window_video_get_capability) {
- /* LCOV_EXCL_START */
_pthread_mutex_unlock(&private_display->lock);
TDM_WRN("not implemented!!");
return TDM_ERROR_NOT_IMPLEMENTED;
- /* LCOV_EXCL_STOP */
}
ret = func_hwc_window->hwc_window_video_get_capability(private_hwc_window->hwc_window_backend,
func_hwc_window = &private_module->func_hwc_window;
if (!func_hwc_window->hwc_window_video_get_available_properties) {
- /* LCOV_EXCL_START */
_pthread_mutex_unlock(&private_display->lock);
TDM_WRN("not implemented!!");
return TDM_ERROR_NOT_IMPLEMENTED;
- /* LCOV_EXCL_STOP */
}
ret = func_hwc_window->hwc_window_video_get_available_properties(private_hwc_window->hwc_window_backend,
func_hwc_window = &private_module->func_hwc_window;
if (!func_hwc_window->hwc_window_video_get_property) {
- /* LCOV_EXCL_START */
_pthread_mutex_unlock(&private_display->lock);
TDM_WRN("not implemented!!");
return TDM_ERROR_NOT_IMPLEMENTED;
- /* LCOV_EXCL_STOP */
}
ret = func_hwc_window->hwc_window_video_get_property(private_hwc_window->hwc_window_backend,
func_hwc_window = &private_module->func_hwc_window;
if (!func_hwc_window->hwc_window_video_set_property) {
- /* LCOV_EXCL_START */
_pthread_mutex_unlock(&private_display->lock);
TDM_WRN("not implemented!!");
return TDM_ERROR_NOT_IMPLEMENTED;
- /* LCOV_EXCL_STOP */
}
ret = func_hwc_window->hwc_window_video_set_property(private_hwc_window->hwc_window_backend,
return ret;
}
+/* LCOV_EXCL_STOP */
\ No newline at end of file
#define TDM_OUTPUT_DPMS_VSYNC_IS_OFF(dpms) ((dpms) & TDM_OUTPUT_DPMS_VSYNC_OFF_MASK)
/* strtostr *****************************************************************/
+/* LCOV_EXCL_START */
static inline char*
strtostr(char *buf, int len, char *str, char *delim)
{
snprintf(buf, len, "%s", str);
return str + len - 1;
}
+/* LCOV_EXCL_STOP */
/* EXTERN, INTERN, DEPRECATED ***********************************************/
#undef EXTERN
return capture;
}
+/* LCOV_EXCL_START */
EXTERN tdm_hwc_window *
tdm_output_hwc_create_window(tdm_output *output, tdm_error *error)
{
if (private_output->caps.capabilities & TDM_OUTPUT_CAPABILITY_HWC)
hwc_window = (tdm_hwc_window *)tdm_hwc_window_create_internal(private_output, 0, error);
else {
- /* LCOV_EXCL_START */
TDM_ERR("output(%p) not support HWC", private_output);
if (error)
*error = TDM_ERROR_BAD_REQUEST;
- /* LCOV_EXCL_STOP */
}
_pthread_mutex_unlock(&private_display->lock);
if (private_output->caps.capabilities & TDM_OUTPUT_CAPABILITY_HWC)
hwc_window = (tdm_hwc_window *)tdm_hwc_window_create_internal(private_output, 1, error);
else {
- /* LCOV_EXCL_START */
TDM_ERR("output(%p) not support HWC", private_output);
if (error)
*error = TDM_ERROR_BAD_REQUEST;
- /* LCOV_EXCL_STOP */
}
_pthread_mutex_unlock(&private_display->lock);
func_output = &private_module->func_output;
if (!func_output->output_hwc_validate) {
- /* LCOV_EXCL_START */
_pthread_mutex_unlock(&private_display->lock);
TDM_WRN("not implemented!!");
return TDM_ERROR_NOT_IMPLEMENTED;
- /* LCOV_EXCL_STOP */
}
if (num_wnds == 0) {
composited_wnds_backend = calloc(num_wnds, sizeof(tdm_hwc_window *));
if (!composited_wnds_backend) {
- /* LCOV_EXCL_START */
_pthread_mutex_unlock(&private_display->lock);
return TDM_ERROR_OUT_OF_MEMORY;
- /* LCOV_EXCL_STOP */
}
composited_wnds_frontend = (tdm_private_hwc_window **)composited_wnds;
func_output = &private_module->func_output;
if (!func_output->output_hwc_get_changed_composition_types) {
- /* LCOV_EXCL_START */
_pthread_mutex_unlock(&private_display->lock);
TDM_WRN("not implemented!!");
return TDM_ERROR_NOT_IMPLEMENTED;
- /* LCOV_EXCL_STOP */
}
ret = func_output->output_hwc_get_changed_composition_types(private_output->output_backend,
num_elements, hwc_window, composition_types);
if (ret != TDM_ERROR_NONE) {
- /* LCOV_EXCL_START */
_pthread_mutex_unlock(&private_display->lock);
return ret;
- /* LCOV_EXCL_STOP */
}
if (hwc_window == NULL || composition_types == NULL) {
private_hwc_window = _tdm_output_find_private_hwc_window(private_output, hwc_window[i]);
if (private_hwc_window == NULL) {
- /* LCOV_EXCL_START */
TDM_ERR("failed! This should never happen!");
func_output->output_hwc_destroy_window(private_output->output_backend, hwc_window[i]);
*num_elements = 0;
_pthread_mutex_unlock(&private_display->lock);
return TDM_ERROR_OPERATION_FAILED;
- /* LCOV_EXCL_STOP */
}
hwc_window[i] = (tdm_hwc_window*)private_hwc_window;
func_output = &private_module->func_output;
if (!func_output->output_hwc_validate) {
- /* LCOV_EXCL_START */
_pthread_mutex_unlock(&private_display->lock);
TDM_WRN("not implemented!!");
return TDM_ERROR_NOT_IMPLEMENTED;
- /* LCOV_EXCL_STOP */
}
ret = func_output->output_hwc_accept_changes(private_output->output_backend);
func_output = &private_module->func_output;
if (!func_output->output_hwc_get_target_buffer_queue) {
- /* LCOV_EXCL_START */
_pthread_mutex_unlock(&private_display->lock);
TDM_WRN("not implemented!!");
return NULL;
- /* LCOV_EXCL_STOP */
}
queue = func_output->output_hwc_get_target_buffer_queue(private_output->output_backend, error);
}
if (tdm_debug_dump & TDM_DUMP_FLAG_WINDOW) {
- /* LCOV_EXCL_START */
char str[TDM_PATH_LEN];
static int i;
snprintf(str, TDM_PATH_LEN, "target_window_%d_%03d",
private_output->index, i++);
tdm_helper_dump_buffer_str(target_buffer, tdm_debug_dump_dir, str);
- /* LCOV_EXCL_STOP */
}
private_module = private_output->private_module;
func_output = &private_module->func_output;
if (!func_output->output_hwc_set_client_target_buffer) {
- /* LCOV_EXCL_START */
_pthread_mutex_unlock(&private_display->lock);
TDM_WRN("not implemented!!");
return TDM_ERROR_NOT_IMPLEMENTED;
- /* LCOV_EXCL_STOP */
}
ret = func_output->output_hwc_set_client_target_buffer(private_output->output_backend, target_buffer, damage);
func_output = &private_module->func_output;
if (!func_output->output_hwc_unset_client_target_buffer) {
- /* LCOV_EXCL_START */
_pthread_mutex_unlock(&private_display->lock);
TDM_ERR("not implemented!!");
return TDM_ERROR_NOT_IMPLEMENTED;
- /* LCOV_EXCL_STOP */
}
ret = func_output->output_hwc_unset_client_target_buffer(private_output->output_backend);
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,
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;
}
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;
}
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;
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;
}
func_output = &private_module->func_output;
if (!func_output->output_hwc_get_video_supported_formats) {
- /* LCOV_EXCL_START */
_pthread_mutex_unlock(&private_display->lock);
TDM_WRN("not implemented!!");
return TDM_ERROR_NOT_IMPLEMENTED;
- /* LCOV_EXCL_STOP */
}
ret = func_output->output_hwc_get_video_supported_formats(
return TDM_ERROR_NONE;
}
+/* LCOV_EXCL_STOP */