tdm_hwc: add fence api and backend interface
[platform/core/uifw/libtdm.git] / src / tdm_hwc_window.c
index ce04c51..2e861d8 100644 (file)
@@ -260,8 +260,8 @@ tdm_hwc_window_set_composition_type(tdm_hwc_window *hwc_window,
        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);
 
@@ -387,6 +387,32 @@ tdm_hwc_window_set_buffer(tdm_hwc_window *hwc_window, tbm_surface_h buffer)
 }
 
 EXTERN tdm_error
+tdm_hwc_window_set_acquire_fence(tdm_hwc_window *hwc_window, int acquire_fence)
+{
+       tdm_private_module *private_module;
+       tdm_func_hwc_window *func_hwc_window;
+
+       HWC_WINDOW_FUNC_ENTRY();
+
+       _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_set_acquire_fence) {
+               _pthread_mutex_unlock(&private_display->lock);
+               TDM_WRN("not implemented!!");
+               return TDM_ERROR_NOT_IMPLEMENTED;
+       }
+
+       ret = func_hwc_window->hwc_window_set_acquire_fence(private_hwc_window->hwc_window_backend, acquire_fence);
+
+       _pthread_mutex_unlock(&private_display->lock);
+
+       return ret;
+}
+
+EXTERN tdm_error
 tdm_hwc_window_get_property(tdm_hwc_window *hwc_window, unsigned int id, tdm_value *value)
 {
        tdm_private_module *private_module;
@@ -467,4 +493,56 @@ tdm_hwc_window_get_constraints(tdm_hwc_window *hwc_window, int *constraints)
 
        return ret;
 }
+
+EXTERN tdm_error
+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();
+
+       _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_set_name) {
+               _pthread_mutex_unlock(&private_display->lock);
+               TDM_WRN("not implemented!!");
+               return TDM_ERROR_NOT_IMPLEMENTED;
+       }
+
+       ret = func_hwc_window->hwc_window_set_name(private_hwc_window->hwc_window_backend, name);
+
+       _pthread_mutex_unlock(&private_display->lock);
+
+       return ret;
+}
+
+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);
+
+       private_module = private_output->private_module;
+       func_hwc_window = &private_module->func_hwc_window;
+
+       if (!func_hwc_window->hwc_window_set_cursor_image) {
+               _pthread_mutex_unlock(&private_display->lock);
+               TDM_WRN("not implemented!!");
+               return TDM_ERROR_NOT_IMPLEMENTED;
+       }
+
+       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