add tdm_hwc_window_set_name
[platform/core/uifw/libtdm.git] / src / tdm_hwc_window.c
index 362c798..fd86345 100644 (file)
@@ -2,14 +2,12 @@
  *
  * 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_backend *private_backend;
+       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;
 
@@ -82,48 +195,83 @@ tdm_hwc_window_get_tbm_buffer_queue(tdm_hwc_window *hwc_window, tdm_error *error
 
        _pthread_mutex_lock(&private_display->lock);
 
-       private_backend = private_output->private_backend;
-       func_hwc_window = &private_backend->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_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_backend *private_backend;
+       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);
 
-       private_backend = private_output->private_backend;
-       func_hwc_window = &private_backend->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_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);
@@ -134,9 +282,9 @@ tdm_hwc_window_set_composition_type(tdm_hwc_window *hwc_window,
 }
 
 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_backend *private_backend;
+       tdm_private_module *private_module;
        tdm_func_hwc_window *func_hwc_window = NULL;
 
        HWC_WINDOW_FUNC_ENTRY();
@@ -145,15 +293,13 @@ tdm_hwc_window_set_buffer_damage(tdm_hwc_window *hwc_window, tdm_hwc_region dama
 
        _pthread_mutex_lock(&private_display->lock);
 
-       private_backend = private_output->private_backend;
-       func_hwc_window = &private_backend->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_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);
@@ -167,7 +313,7 @@ tdm_hwc_window_set_buffer_damage(tdm_hwc_window *hwc_window, tdm_hwc_region dama
 EXTERN tdm_error
 tdm_hwc_window_set_info(tdm_hwc_window *hwc_window, tdm_hwc_window_info *info)
 {
-       tdm_private_backend *private_backend;
+       tdm_private_module *private_module;
        tdm_func_hwc_window *func_hwc_window = NULL;
        char fmtstr[128];
 
@@ -177,15 +323,13 @@ tdm_hwc_window_set_info(tdm_hwc_window *hwc_window, tdm_hwc_window_info *info)
 
        _pthread_mutex_lock(&private_display->lock);
 
-       private_backend = private_output->private_backend;
-       func_hwc_window = &private_backend->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_WRN("not implemented!!");
                return TDM_ERROR_NOT_IMPLEMENTED;
-               /* LCOV_EXCL_STOP */
        }
 
        if (info->src_config.format)
@@ -212,7 +356,7 @@ tdm_hwc_window_set_info(tdm_hwc_window *hwc_window, tdm_hwc_window_info *info)
 EXTERN tdm_error
 tdm_hwc_window_set_buffer(tdm_hwc_window *hwc_window, tbm_surface_h buffer)
 {
-       tdm_private_backend *private_backend;
+       tdm_private_module *private_module;
        tdm_func_hwc_window *func_hwc_window;
 
        HWC_WINDOW_FUNC_ENTRY();
@@ -220,23 +364,19 @@ tdm_hwc_window_set_buffer(tdm_hwc_window *hwc_window, tbm_surface_h buffer)
        _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_backend = private_output->private_backend;
-       func_hwc_window = &private_backend->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_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);
@@ -247,322 +387,28 @@ tdm_hwc_window_set_buffer(tdm_hwc_window *hwc_window, tbm_surface_h buffer)
 }
 
 EXTERN tdm_error
-tdm_hwc_window_unset_buffer(tdm_hwc_window *hwc_window)
-{
-       tdm_private_backend *private_backend;
-       tdm_func_hwc_window *func_hwc_window;
-
-       HWC_WINDOW_FUNC_ENTRY();
-
-       _pthread_mutex_lock(&private_display->lock);
-
-       private_backend = private_output->private_backend;
-       func_hwc_window = &private_backend->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_hwc_window_get_property(tdm_hwc_window *hwc_window, unsigned int id, tdm_value *value)
 {
-       tdm_private_display *private_display = private_output->private_display;
-       tdm_private_backend *private_backend = private_output->private_backend;
-       tdm_func_output *func_output = &private_backend->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_output *private_output;
-       tdm_private_backend *private_backend;
-       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_output = private_hwc_window->private_output;
-       private_backend = private_output->private_backend;
-
-       LIST_DEL(&private_hwc_window->link);
-
-       func_output = &private_backend->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_private_backend *private_backend;
-       tdm_func_hwc_window *func_hwc_window = NULL;
-
-       HWC_WINDOW_FUNC_ENTRY();
-
-       _pthread_mutex_lock(&private_display->lock);
-
-       private_backend = private_output->private_backend;
-       func_hwc_window = &private_backend->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);
-
-       _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_private_backend *private_backend;
-       tdm_func_hwc_window *func_hwc_window = NULL;
-
-       HWC_WINDOW_FUNC_ENTRY();
-
-       _pthread_mutex_lock(&private_display->lock);
-
-       private_backend = private_output->private_backend;
-       func_hwc_window = &private_backend->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);
-
-       _pthread_mutex_unlock(&private_display->lock);
-
-       return ret;
-}
-
-static void
-_tdm_hwc_window_layer_commit_handler(tdm_layer *layer, unsigned int sequence,
-                                                                                unsigned int tv_sec, unsigned int tv_usec,
-                                                                                void *user_data)
-{
-       tdm_private_hwc_window_commit_handler *hwc_window_commit_handler = (tdm_private_hwc_window_commit_handler *)user_data;
-       tdm_hwc_window_commit_handler func = hwc_window_commit_handler->func;
-       tdm_hwc_window *hwc_window = (tdm_hwc_window *)hwc_window_commit_handler->private_hwc_window;
-       void *data = hwc_window_commit_handler->user_data;
-
-       func(hwc_window, sequence, tv_sec, tv_usec, data);
-
-       free(hwc_window_commit_handler);
-}
-
-tdm_error
-tdm_hwc_window_commit(tdm_hwc_window *hwc_window, tdm_hwc_window_commit_handler func, void *user_data)
-{
-       tdm_private_backend *private_backend;
-       tdm_func_hwc_window *func_hwc_window = NULL;
-       tdm_private_hwc_window_commit_handler *hwc_window_commit_handler;
-       tdm_layer *layer = NULL;
-       tdm_private_layer *private_layer;
-       tdm_info_layer *info_layer;
-       tdm_hwc_window_info window_info;
-       tbm_surface_h buffer;
-
-       HWC_WINDOW_FUNC_ENTRY();
-
-       _pthread_mutex_lock(&private_display->lock);
-
-       private_backend = private_output->private_backend;
-       func_hwc_window = &private_backend->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;
-
-       buffer = func_hwc_window->hwc_window_get_buffer(private_hwc_window->hwc_window_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 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;
-       hwc_window_commit_handler->func = func;
-       hwc_window_commit_handler->user_data = user_data;
-
-       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;
-       }
-
-       _pthread_mutex_unlock(&private_display->lock);
-
-       return ret;
-}
-
-EXTERN tdm_error
-tdm_hwc_window_video_get_capability(tdm_hwc_window *hwc_window,
-                                                                       tdm_hwc_window_video_capability *video_capability)
-{
-       tdm_private_backend *private_backend;
+       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);
+       TDM_RETURN_VAL_IF_FAIL(value != NULL, TDM_ERROR_INVALID_PARAMETER);
 
        _pthread_mutex_lock(&private_display->lock);
 
-       private_backend = private_output->private_backend;
-       func_hwc_window = &private_backend->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_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_capability(private_hwc_window->hwc_window_backend,
-                                                                                                                  video_capability);
+       ret = func_hwc_window->hwc_window_get_property(private_hwc_window->hwc_window_backend, id, value);
 
        _pthread_mutex_unlock(&private_display->lock);
 
@@ -570,32 +416,26 @@ tdm_hwc_window_video_get_capability(tdm_hwc_window *hwc_window,
 }
 
 EXTERN tdm_error
-tdm_hwc_window_video_get_available_properties(tdm_hwc_window *hwc_window,
-                                                                                         const tdm_prop **props, int *count)
+tdm_hwc_window_set_property(tdm_hwc_window *hwc_window, unsigned int id, tdm_value value)
 {
-       tdm_private_backend *private_backend;
+       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);
 
-       private_backend = private_output->private_backend;
-       func_hwc_window = &private_backend->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) {
+       if (!func_hwc_window->hwc_window_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_get_available_properties(private_hwc_window->hwc_window_backend,
-                                                                                                                                        props, count);
+       ret = func_hwc_window->hwc_window_set_property(private_hwc_window->hwc_window_backend, id, value);
 
        _pthread_mutex_unlock(&private_display->lock);
 
@@ -603,31 +443,25 @@ tdm_hwc_window_video_get_available_properties(tdm_hwc_window *hwc_window,
 }
 
 EXTERN tdm_error
-tdm_hwc_window_video_get_property(tdm_hwc_window *hwc_window,
-                                                                       unsigned int id, tdm_value *value)
+tdm_hwc_window_get_constraints(tdm_hwc_window *hwc_window, int *constraints)
 {
-       tdm_private_backend *private_backend;
+       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);
 
-       private_backend = private_output->private_backend;
-       func_hwc_window = &private_backend->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_get_constraints) {
                _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,
-                                                                                                                id, value);
+       ret = func_hwc_window->hwc_window_get_constraints(private_hwc_window->hwc_window_backend, constraints);
 
        _pthread_mutex_unlock(&private_display->lock);
 
@@ -635,31 +469,28 @@ tdm_hwc_window_video_get_property(tdm_hwc_window *hwc_window,
 }
 
 EXTERN tdm_error
-tdm_hwc_window_video_set_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_backend *private_backend;
+       tdm_private_module *private_module;
        tdm_func_hwc_window *func_hwc_window = NULL;
 
        HWC_WINDOW_FUNC_ENTRY();
 
        _pthread_mutex_lock(&private_display->lock);
 
-       private_backend = private_output->private_backend;
-       func_hwc_window = &private_backend->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_get_constraints) {
                _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,
-                                                                                                                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;
 }
+/* LCOV_EXCL_STOP */
\ No newline at end of file