X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Ftdm_backend.c;h=b0d1576fbe38ad72bd5a819868d9cb22551ec47a;hb=1b7ce67e473517578e9c78b4afe05fb0bf2a8361;hp=238d0851781adea8806e01624eac1849f5050bfc;hpb=2adc0c96b4af5f88b3560e8ebd0b595a3f483578;p=platform%2Fcore%2Fuifw%2Flibtdm.git diff --git a/src/tdm_backend.c b/src/tdm_backend.c index 238d085..b0d1576 100644 --- a/src/tdm_backend.c +++ b/src/tdm_backend.c @@ -109,7 +109,7 @@ tdm_backend_register_func_output(tdm_display *dpy, tdm_func_output *func_output) } EXTERN tdm_error -tdm_backend_register_func_layer(tdm_display *dpy, tdm_func_layer *func_layer) +tdm_backend_register_func_voutput(tdm_display *dpy, tdm_func_voutput *func_voutput) { tdm_backend_module *module; @@ -117,7 +117,7 @@ tdm_backend_register_func_layer(tdm_display *dpy, tdm_func_layer *func_layer) BACKEND_FUNC_ENTRY(); - TDM_RETURN_VAL_IF_FAIL(func_layer != NULL, TDM_ERROR_INVALID_PARAMETER); + TDM_RETURN_VAL_IF_FAIL(func_voutput != NULL, TDM_ERROR_INVALID_PARAMETER); assert(private_display->current_module); @@ -126,13 +126,14 @@ tdm_backend_register_func_layer(tdm_display *dpy, tdm_func_layer *func_layer) if (_check_abi_version(module, 1, 1) < 0) return TDM_ERROR_BAD_MODULE; - private_display->current_module->func_layer = *func_layer; + private_display->current_module->func_voutput = *func_voutput; return TDM_ERROR_NONE; } + EXTERN tdm_error -tdm_backend_register_func_hwc_window(tdm_display *dpy, tdm_func_hwc_window *func_hwc_window) +tdm_backend_register_func_layer(tdm_display *dpy, tdm_func_layer *func_layer) { tdm_backend_module *module; @@ -140,21 +141,65 @@ tdm_backend_register_func_hwc_window(tdm_display *dpy, tdm_func_hwc_window *func BACKEND_FUNC_ENTRY(); - TDM_RETURN_VAL_IF_FAIL(func_hwc_window != NULL, TDM_ERROR_INVALID_PARAMETER); + TDM_RETURN_VAL_IF_FAIL(func_layer != NULL, TDM_ERROR_INVALID_PARAMETER); assert(private_display->current_module); + /* the ABI version of backend module should be more than 1.1 */ module = private_display->current_module->module_data; - /* FIX ME: - Temporarily, we set the version of hwc window to 1.1 for the development. - Originally the hwc window version is 2.0. */ if (_check_abi_version(module, 1, 1) < 0) return TDM_ERROR_BAD_MODULE; + private_display->current_module->func_layer = *func_layer; + + return TDM_ERROR_NONE; +} + +/* LCOV_EXCL_START */ +EXTERN tdm_error +tdm_backend_register_func_hwc(tdm_display *dpy, tdm_func_hwc *func_hwc) +{ +// tdm_backend_module *module; + + TDM_RETURN_VAL_IF_FAIL(TDM_MUTEX_IS_LOCKED(), TDM_ERROR_OPERATION_FAILED); + + BACKEND_FUNC_ENTRY(); + + TDM_RETURN_VAL_IF_FAIL(func_hwc != NULL, TDM_ERROR_INVALID_PARAMETER); + + assert(private_display->current_module); +// TODO : temp erase module check for virtual +// module = private_display->current_module->module_data; +// if (_check_abi_version(module, 2, 0) < 0) +// return TDM_ERROR_BAD_MODULE; + + private_display->current_module->func_hwc = *func_hwc; + + return TDM_ERROR_NONE; +} + +EXTERN tdm_error +tdm_backend_register_func_hwc_window(tdm_display *dpy, tdm_func_hwc_window *func_hwc_window) +{ +// tdm_backend_module *module; + + TDM_RETURN_VAL_IF_FAIL(TDM_MUTEX_IS_LOCKED(), TDM_ERROR_OPERATION_FAILED); + + BACKEND_FUNC_ENTRY(); + + TDM_RETURN_VAL_IF_FAIL(func_hwc_window != NULL, TDM_ERROR_INVALID_PARAMETER); + + assert(private_display->current_module); +// TODO : temp erase module check for virtual +// module = private_display->current_module->module_data; +// if (_check_abi_version(module, 2, 0) < 0) +// return TDM_ERROR_BAD_MODULE; + private_display->current_module->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) @@ -203,47 +248,3 @@ tdm_backend_register_func_capture(tdm_display *dpy, return TDM_ERROR_NONE; } - -/* backend operates itself types */ -static tdm_private_output* -_look_for_frontend_hwc_output(tdm_output *backend_output) -{ - tdm_private_output *frontend_output = NULL, *o = NULL; - tdm_private_display *private_display = tdm_display_get(); - tdm_private_module *private_module = NULL; - - LIST_FOR_EACH_ENTRY(private_module, &private_display->module_list, link) { - LIST_FOR_EACH_ENTRY(o, &private_module->output_list, link) { - if (!(o->caps.capabilities & TDM_OUTPUT_CAPABILITY_HWC)) - continue; - - if (o->output_backend == backend_output) { - frontend_output = o; - return frontend_output; - } - } - } - - return NULL; -} - -EXTERN tdm_error -tdm_backend_trigger_need_validate_event(tdm_output *output) -{ - tdm_private_output *private_output; - uint64_t value; - int res; - - private_output = _look_for_frontend_hwc_output(output); - TDM_RETURN_VAL_IF_FAIL(private_output != NULL, TDM_ERROR_INVALID_PARAMETER); - - value = 1; - - /* do not lock the global display lock here */ - - res = write(private_output->need_validate.event_fd, &value, sizeof(value)); - if (res < 0) - return TDM_ERROR_OPERATION_FAILED; - - return TDM_ERROR_NONE; -}