-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_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;
-}
-