*
* libtdm
*
- * Copyright 2015 Samsung Electronics co., Ltd. All Rights Reserved.
+ * Copyright 2018 Samsung Electronics co., Ltd. All Rights Reserved.
*
- * Contact: Eunchul Kim <chulspro.kim@samsung.com>,
- * JinYoung Jeon <jy0.jeon@samsung.com>,
- * Taeheon Kim <th908.kim@samsung.com>,
- * YoungJun Cho <yj44.cho@samsung.com>,
- * SooChan Lim <sc1.lim@samsung.com>,
- * Boram Park <sc1.lim@samsung.com>
+ * Contact: SooChan Lim <sc1.lim@samsung.com>,
+ * Boram Park <boram1288.park@samsung.com>,
+ * Changyeon Lee <cyeon.lee@samsung.com>,
+ * Sangjin Lee <lsj119@samsung.com>
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the
#include "tdm_private.h"
+/* LCOV_EXCL_START */
+
#define COUNT_MAX 10
#define HWC_WINDOW_FUNC_ENTRY() \
tdm_private_display *private_display; \
tdm_private_output *private_output; \
+ tdm_private_hwc *private_hwc; \
tdm_private_hwc_window *private_hwc_window; \
tdm_error ret = TDM_ERROR_NONE; /* default TDM_ERROR_NONE */\
TDM_RETURN_VAL_IF_FAIL(hwc_window != NULL, TDM_ERROR_INVALID_PARAMETER); \
private_hwc_window = (tdm_private_hwc_window*)hwc_window; \
- private_output = private_hwc_window->private_output; \
+ private_hwc = private_hwc_window->private_hwc; \
+ TDM_RETURN_VAL_IF_FAIL(private_hwc != NULL, TDM_ERROR_INVALID_PARAMETER); \
+ private_output = private_hwc->private_output; \
+ TDM_RETURN_VAL_IF_FAIL(private_output != NULL, TDM_ERROR_INVALID_PARAMETER); \
private_display = private_output->private_display
#define HWC_WINDOW_FUNC_ENTRY_ERROR() \
tdm_private_display *private_display; \
tdm_private_output *private_output; \
+ tdm_private_hwc *private_hwc; \
tdm_private_hwc_window *private_hwc_window; \
tdm_error ret = TDM_ERROR_NONE; /* default TDM_ERROR_NONE */\
TDM_RETURN_VAL_IF_FAIL_WITH_ERROR(hwc_window != NULL, TDM_ERROR_INVALID_PARAMETER, NULL); \
private_hwc_window = (tdm_private_hwc_window*)hwc_window; \
- private_output = private_hwc_window->private_output; \
+ private_hwc = private_hwc_window->private_hwc; \
+ TDM_RETURN_VAL_IF_FAIL_WITH_ERROR(private_hwc != NULL, TDM_ERROR_INVALID_PARAMETER, NULL); \
+ private_output = private_hwc->private_output; \
+ TDM_RETURN_VAL_IF_FAIL_WITH_ERROR(private_output != NULL, TDM_ERROR_INVALID_PARAMETER, NULL); \
private_display = private_output->private_display
#define HWC_WINDOW_FUNC_ENTRY_VOID_RETURN() \
tdm_private_display *private_display; \
tdm_private_output *private_output; \
+ tdm_private_hwc *private_hwc; \
tdm_private_hwc_window *private_hwc_window; \
tdm_error ret = TDM_ERROR_NONE; /* default TDM_ERROR_NONE */\
TDM_RETURN_IF_FAIL(hwc_window != NULL); \
private_hwc_window = (tdm_private_hwc_window*)hwc_window; \
- private_output = private_hwc_window->private_output; \
+ private_hwc = private_hwc_window->private_hwc; \
+ TDM_RETURN_IF_FAIL(private_hwc != NULL); \
+ private_output = private_hwc->private_output; \
+ TDM_RETURN_IF_FAIL(private_output != NULL); \
private_display = private_output->private_display
-tbm_surface_queue_h
-tdm_hwc_window_get_tbm_buffer_queue(tdm_hwc_window *hwc_window, tdm_error *error)
+
+INTERN tdm_hwc_window *
+tdm_hwc_window_create_internal(tdm_private_hwc *private_hwc, tdm_error *error)
+{
+ tdm_private_output *private_output = private_hwc->private_output;
+ tdm_private_module *private_module = private_output->private_module;
+ tdm_func_hwc *func_hwc = &private_module->func_hwc;
+ tdm_private_hwc_window *private_hwc_window = NULL;
+ tdm_hwc_window *hwc_window_backend = NULL;
+ tdm_error ret = TDM_ERROR_NONE;
+
+ TDM_RETURN_VAL_IF_FAIL(TDM_MUTEX_IS_LOCKED(), NULL);
+
+ if (!func_hwc->hwc_create_window) {
+ /* LCOV_EXCL_START */
+ if (error)
+ *error = TDM_ERROR_BAD_MODULE;
+ return NULL;
+ /* LCOV_EXCL_STOP */
+ }
+
+ private_hwc_window = calloc(1, sizeof(tdm_private_hwc_window));
+ if (!private_hwc_window) {
+ /* LCOV_EXCL_START */
+ TDM_ERR("failed: alloc memory");
+ if (error)
+ *error = TDM_ERROR_OUT_OF_MEMORY;
+ return NULL;
+ /* LCOV_EXCL_STOP */
+ }
+
+ hwc_window_backend = func_hwc->hwc_create_window(private_hwc->hwc_backend, &ret);
+ if (ret != TDM_ERROR_NONE) {
+ free(private_hwc_window);
+ if (error)
+ *error = ret;
+ return NULL;
+ }
+
+ LIST_ADD(&private_hwc_window->link, &private_hwc->hwc_window_list);
+
+ private_hwc_window->private_hwc = private_hwc;
+ private_hwc_window->hwc_window_backend = hwc_window_backend;
+
+ TDM_DBG("hwc_window(%p) create", private_hwc_window);
+
+ if (error)
+ *error = TDM_ERROR_NONE;
+
+ return private_hwc_window;
+}
+
+INTERN void
+tdm_hwc_window_destroy_internal(tdm_private_hwc_window *private_hwc_window)
{
+ tdm_private_output *private_output;
+ tdm_private_module *private_module;
+ tdm_private_hwc *private_hwc;
+ tdm_func_hwc_window *func_hwc_window;
+
+ TDM_RETURN_IF_FAIL(TDM_MUTEX_IS_LOCKED());
+
+ if (!private_hwc_window)
+ return;
+
+ private_hwc = private_hwc_window->private_hwc;
+ private_output = private_hwc->private_output;
+ private_module = private_output->private_module;
+ func_hwc_window = &private_module->func_hwc_window;
+
+ LIST_DEL(&private_hwc_window->link);
+
+ func_hwc_window = &private_module->func_hwc_window;
+ func_hwc_window->hwc_window_destroy(private_hwc_window->hwc_window_backend);
+
+ free(private_hwc_window);
+}
+
+EXTERN void
+tdm_hwc_window_destroy(tdm_hwc_window *hwc_window)
+{
+ tdm_private_display *private_display;
+ tdm_private_output *private_output;
+ tdm_private_hwc *private_hwc;
+ tdm_private_hwc_window *private_hwc_window;
+
+ if (!hwc_window)
+ return;
+
+ private_hwc_window = (tdm_private_hwc_window *)hwc_window;
+ private_hwc = private_hwc_window->private_hwc;
+ private_output = private_hwc->private_output;
+ private_display = private_output->private_display;
+
+ _pthread_mutex_lock(&private_display->lock);
+
+ tdm_hwc_window_destroy_internal(hwc_window);
+
+ _pthread_mutex_unlock(&private_display->lock);
+}
+
+EXTERN tbm_surface_queue_h
+tdm_hwc_window_acquire_buffer_queue(tdm_hwc_window *hwc_window, tdm_error *error)
+{
+ tdm_private_module *private_module;
tdm_func_hwc_window *func_hwc_window = NULL;
tbm_surface_queue_h queue = NULL;
_pthread_mutex_lock(&private_display->lock);
- func_hwc_window = &private_display->func_hwc_window;
+ private_module = private_output->private_module;
+ func_hwc_window = &private_module->func_hwc_window;
- if (!func_hwc_window->hwc_window_get_tbm_buffer_queue) {
+ if (!func_hwc_window->hwc_window_acquire_buffer_queue) {
/* LCOV_EXCL_START */
_pthread_mutex_unlock(&private_display->lock);
- TDM_ERR("not implemented!!");
+ 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);
+ queue = func_hwc_window->hwc_window_acquire_buffer_queue(private_hwc_window->hwc_window_backend, error);
_pthread_mutex_unlock(&private_display->lock);
return queue;
}
+EXTERN void
+tdm_hwc_window_release_buffer_queue(tdm_hwc_window *hwc_window, tbm_surface_queue_h queue)
+{
+ tdm_private_module *private_module;
+ tdm_func_hwc_window *func_hwc_window = NULL;
+ tdm_private_display *private_display;
+ tdm_private_output *private_output;
+ tdm_private_hwc *private_hwc;
+ tdm_private_hwc_window *private_hwc_window;
+
+ if (!hwc_window)
+ return;
+
+ private_hwc_window = (tdm_private_hwc_window *)hwc_window;
+ private_hwc = private_hwc_window->private_hwc;
+ private_output = private_hwc->private_output;
+ private_display = private_output->private_display;
+
+ TDM_RETURN_IF_FAIL(queue != NULL);
+
+ _pthread_mutex_lock(&private_display->lock);
+
+ private_module = private_output->private_module;
+ func_hwc_window = &private_module->func_hwc_window;
+
+ if (!func_hwc_window->hwc_window_release_buffer_queue) {
+ _pthread_mutex_unlock(&private_display->lock);
+ TDM_WRN("not implemented!!");
+ return;
+ }
+
+ func_hwc_window->hwc_window_release_buffer_queue(private_hwc_window->hwc_window_backend, queue);
+
+ _pthread_mutex_unlock(&private_display->lock);
+
+ return;
+}
+
EXTERN tdm_error
tdm_hwc_window_set_composition_type(tdm_hwc_window *hwc_window,
tdm_hwc_window_composition composition_type)
{
+ tdm_private_module *private_module;
tdm_func_hwc_window *func_hwc_window = NULL;
HWC_WINDOW_FUNC_ENTRY();
- TDM_RETURN_VAL_IF_FAIL(composition_type >= TDM_COMPOSITION_NONE, TDM_ERROR_INVALID_PARAMETER);
- TDM_RETURN_VAL_IF_FAIL(composition_type <= TDM_COMPOSITION_VIDEO, TDM_ERROR_INVALID_PARAMETER);
+ TDM_RETURN_VAL_IF_FAIL(composition_type >= TDM_HWC_WIN_COMPOSITION_NONE, TDM_ERROR_INVALID_PARAMETER);
+ TDM_RETURN_VAL_IF_FAIL(composition_type <= TDM_HWC_WIN_COMPOSITION_VIDEO, TDM_ERROR_INVALID_PARAMETER);
_pthread_mutex_lock(&private_display->lock);
- func_hwc_window = &private_display->func_hwc_window;
+ private_module = private_output->private_module;
+ 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_ERR("not implemented!!");
+ 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);
}
EXTERN tdm_error
-tdm_hwc_window_set_buffer_damage(tdm_hwc_window *hwc_window, tdm_hwc_region damage)
+tdm_hwc_window_set_buffer_damage(tdm_hwc_window *hwc_window, tdm_region damage)
{
+ tdm_private_module *private_module;
tdm_func_hwc_window *func_hwc_window = NULL;
HWC_WINDOW_FUNC_ENTRY();
_pthread_mutex_lock(&private_display->lock);
- func_hwc_window = &private_display->func_hwc_window;
+ private_module = private_output->private_module;
+ 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_ERR("not implemented!!");
+ 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);
EXTERN tdm_error
tdm_hwc_window_set_info(tdm_hwc_window *hwc_window, tdm_hwc_window_info *info)
{
+ tdm_private_module *private_module;
tdm_func_hwc_window *func_hwc_window = NULL;
char fmtstr[128];
_pthread_mutex_lock(&private_display->lock);
- func_hwc_window = &private_display->func_hwc_window;
+ private_module = private_output->private_module;
+ 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_ERR("not implemented!!");
+ TDM_WRN("not implemented!!");
return TDM_ERROR_NOT_IMPLEMENTED;
- /* LCOV_EXCL_STOP */
}
if (info->src_config.format)
EXTERN tdm_error
tdm_hwc_window_set_buffer(tdm_hwc_window *hwc_window, tbm_surface_h buffer)
{
+ tdm_private_module *private_module;
tdm_func_hwc_window *func_hwc_window;
HWC_WINDOW_FUNC_ENTRY();
_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 */
}
- func_hwc_window = &private_display->func_hwc_window;
+ 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_ERR("not implemented!!");
+ 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);
}
EXTERN tdm_error
-tdm_hwc_window_unset_buffer(tdm_hwc_window *hwc_window)
-{
- tdm_func_hwc_window *func_hwc_window;
-
- HWC_WINDOW_FUNC_ENTRY();
-
- _pthread_mutex_lock(&private_display->lock);
-
- func_hwc_window = &private_display->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);
-
- _pthread_mutex_unlock(&private_display->lock);
-
- return ret;
-}
-
-INTERN tdm_hwc_window *
-tdm_hwc_window_create_internal(tdm_private_output *private_output, int is_video,
- tdm_error *error)
-{
- tdm_private_display *private_display = private_output->private_display;
- tdm_func_output *func_output = &private_display->func_output;
- tdm_private_hwc_window *private_hwc_window = NULL;
- tdm_hwc_window *hwc_window_backend = NULL;
- tdm_error ret = TDM_ERROR_NONE;
-
- TDM_RETURN_VAL_IF_FAIL(TDM_MUTEX_IS_LOCKED(), NULL);
-
- 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(
- private_output->output_backend, &ret);
- if (ret != TDM_ERROR_NONE) {
- if (error)
- *error = ret;
- return NULL;
- }
- } 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_output->output_backend, &ret);
- if (ret != TDM_ERROR_NONE) {
- if (error)
- *error = ret;
- return NULL;
- }
- }
-
- 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);
-
- private_hwc_window->private_display = private_display;
- private_hwc_window->private_output = private_output;
- private_hwc_window->hwc_window_backend = hwc_window_backend;
-
- TDM_DBG("hwc_window(%p) create", private_hwc_window);
-
- if (error)
- *error = TDM_ERROR_NONE;
-
- return private_hwc_window;
-}
-
-INTERN tdm_error
-tdm_hwc_window_destroy_internal(tdm_private_hwc_window * private_hwc_window)
-{
- tdm_private_display *private_display;
- tdm_private_output *private_output;
- tdm_func_output *func_output;
-
- TDM_RETURN_VAL_IF_FAIL(TDM_MUTEX_IS_LOCKED(), TDM_ERROR_OPERATION_FAILED);
-
- if (!private_hwc_window)
- return TDM_ERROR_OPERATION_FAILED;
-
- private_display = private_hwc_window->private_display;
- private_output = private_hwc_window->private_output;
-
- LIST_DEL(&private_hwc_window->link);
-
- func_output = &private_display->func_output;
- func_output->output_hwc_destroy_window(private_output->output_backend, private_hwc_window->hwc_window_backend);
-
- free(private_hwc_window);
- return TDM_ERROR_NONE;
-}
-
-EXTERN tdm_error
-tdm_hwc_window_set_flags(tdm_hwc_window *hwc_window, tdm_hwc_window_flag flags)
+tdm_hwc_window_get_property(tdm_hwc_window *hwc_window, unsigned int id, tdm_value *value)
{
+ tdm_private_module *private_module;
tdm_func_hwc_window *func_hwc_window = NULL;
HWC_WINDOW_FUNC_ENTRY();
- _pthread_mutex_lock(&private_display->lock);
-
- func_hwc_window = &private_display->func_hwc_window;
-
- if (!func_hwc_window->hwc_window_set_flags) {
- /* 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_set_flags(private_hwc_window->hwc_window_backend, flags);
-
- _pthread_mutex_unlock(&private_display->lock);
-
- return ret;
-}
-
-EXTERN tdm_error
-tdm_hwc_window_unset_flags(tdm_hwc_window *hwc_window, tdm_hwc_window_flag flags)
-{
- tdm_func_hwc_window *func_hwc_window = NULL;
-
- HWC_WINDOW_FUNC_ENTRY();
+ TDM_RETURN_VAL_IF_FAIL(value != NULL, TDM_ERROR_INVALID_PARAMETER);
_pthread_mutex_lock(&private_display->lock);
- func_hwc_window = &private_display->func_hwc_window;
+ private_module = private_output->private_module;
+ func_hwc_window = &private_module->func_hwc_window;
- if (!func_hwc_window->hwc_window_unset_flags) {
+ if (!func_hwc_window->hwc_window_get_property) {
/* LCOV_EXCL_START */
_pthread_mutex_unlock(&private_display->lock);
- TDM_ERR("not implemented!!");
+ 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);
+ ret = func_hwc_window->hwc_window_get_property(private_hwc_window->hwc_window_backend, id, value);
_pthread_mutex_unlock(&private_display->lock);
}
EXTERN tdm_error
-tdm_hwc_window_video_get_capability(tdm_hwc_window *hwc_window,
- tdm_hwc_window_video_capability *video_capability)
+tdm_hwc_window_set_property(tdm_hwc_window *hwc_window, unsigned int id, tdm_value value)
{
+ tdm_private_module *private_module;
tdm_func_hwc_window *func_hwc_window = NULL;
HWC_WINDOW_FUNC_ENTRY();
- TDM_RETURN_VAL_IF_FAIL(video_capability != NULL, TDM_ERROR_INVALID_PARAMETER);
-
_pthread_mutex_lock(&private_display->lock);
- func_hwc_window = &private_display->func_hwc_window;
+ private_module = private_output->private_module;
+ func_hwc_window = &private_module->func_hwc_window;
- if (!func_hwc_window->hwc_window_video_get_capability) {
+ if (!func_hwc_window->hwc_window_set_property) {
/* LCOV_EXCL_START */
_pthread_mutex_unlock(&private_display->lock);
- TDM_ERR("not implemented!!");
+ 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,
- video_capability);
+ ret = func_hwc_window->hwc_window_set_property(private_hwc_window->hwc_window_backend, id, value);
_pthread_mutex_unlock(&private_display->lock);
}
EXTERN tdm_error
-tdm_hwc_window_video_get_available_properties(tdm_hwc_window *hwc_window,
- const tdm_prop **props, int *count)
+tdm_hwc_window_get_constraints(tdm_hwc_window *hwc_window, int *constraints)
{
+ tdm_private_module *private_module;
tdm_func_hwc_window *func_hwc_window = NULL;
HWC_WINDOW_FUNC_ENTRY();
- TDM_RETURN_VAL_IF_FAIL(props != NULL, TDM_ERROR_INVALID_PARAMETER);
- TDM_RETURN_VAL_IF_FAIL(count != NULL, TDM_ERROR_INVALID_PARAMETER);
-
_pthread_mutex_lock(&private_display->lock);
- func_hwc_window = &private_display->func_hwc_window;
+ private_module = private_output->private_module;
+ func_hwc_window = &private_module->func_hwc_window;
- if (!func_hwc_window->hwc_window_video_get_available_properties) {
- /* LCOV_EXCL_START */
+ if (!func_hwc_window->hwc_window_get_constraints) {
_pthread_mutex_unlock(&private_display->lock);
- TDM_ERR("not implemented!!");
+ 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,
- props, count);
+ ret = func_hwc_window->hwc_window_get_constraints(private_hwc_window->hwc_window_backend, constraints);
_pthread_mutex_unlock(&private_display->lock);
}
EXTERN tdm_error
-tdm_hwc_window_video_get_property(tdm_hwc_window *hwc_window,
- unsigned int id, tdm_value *value)
+tdm_hwc_window_set_name(tdm_hwc_window *hwc_window, const char *name)
{
+ tdm_private_module *private_module;
tdm_func_hwc_window *func_hwc_window = NULL;
HWC_WINDOW_FUNC_ENTRY();
- TDM_RETURN_VAL_IF_FAIL(value != NULL, TDM_ERROR_INVALID_PARAMETER);
-
_pthread_mutex_lock(&private_display->lock);
- func_hwc_window = &private_display->func_hwc_window;
+ private_module = private_output->private_module;
+ func_hwc_window = &private_module->func_hwc_window;
- if (!func_hwc_window->hwc_window_video_get_property) {
- /* LCOV_EXCL_START */
+ if (!func_hwc_window->hwc_window_set_name) {
_pthread_mutex_unlock(&private_display->lock);
- TDM_ERR("not implemented!!");
+ 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,
- id, value);
+ ret = func_hwc_window->hwc_window_set_name(private_hwc_window->hwc_window_backend, name);
_pthread_mutex_unlock(&private_display->lock);
return ret;
}
-EXTERN tdm_error
-tdm_hwc_window_video_set_property(tdm_hwc_window *hwc_window,
- unsigned int id, tdm_value value)
+tdm_error
+tdm_hwc_window_set_cursor_image(tdm_hwc_window *hwc_window, int width, int height, int stride, void *ptr)
{
+ tdm_private_module *private_module;
tdm_func_hwc_window *func_hwc_window = NULL;
HWC_WINDOW_FUNC_ENTRY();
_pthread_mutex_lock(&private_display->lock);
- func_hwc_window = &private_display->func_hwc_window;
+ private_module = private_output->private_module;
+ func_hwc_window = &private_module->func_hwc_window;
- if (!func_hwc_window->hwc_window_video_set_property) {
- /* LCOV_EXCL_START */
+ if (!func_hwc_window->hwc_window_set_cursor_image) {
_pthread_mutex_unlock(&private_display->lock);
- TDM_ERR("not implemented!!");
+ 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,
- id, value);
+ ret = func_hwc_window->hwc_window_set_cursor_image(private_hwc_window->hwc_window_backend, width, height, stride, ptr);
_pthread_mutex_unlock(&private_display->lock);
return ret;
}
+/* LCOV_EXCL_STOP */
\ No newline at end of file