From 954bff7eca6dc25684bd830c128cfe8fe24de96b Mon Sep 17 00:00:00 2001 From: Boram Park Date: Wed, 23 Nov 2016 13:16:44 +0900 Subject: [PATCH] check capture capability Change-Id: If3db8bd96f960ddf5ddd8d22f9e9a8ea20ecdc58 --- src/tdm.c | 6 ++++-- src/tdm_capture.c | 14 ++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/tdm.c b/src/tdm.c index 4918a22..5d2714c 100644 --- a/src/tdm.c +++ b/src/tdm.c @@ -726,8 +726,10 @@ _tdm_display_check_backend_functions(tdm_private_display *private_display) if (private_display->capabilities & TDM_DISPLAY_CAPABILITY_CAPTURE) { tdm_func_capture *func_capture = &private_display->func_capture; TDM_RETURN_VAL_IF_FAIL(func_display->display_get_capture_capability, TDM_ERROR_BAD_MODULE); - TDM_RETURN_VAL_IF_FAIL(func_output->output_create_capture, TDM_ERROR_BAD_MODULE); - TDM_RETURN_VAL_IF_FAIL(func_layer->layer_create_capture, TDM_ERROR_BAD_MODULE); + if (private_display->caps_capture.capabilities & TDM_CAPTURE_CAPABILITY_OUTPUT) + TDM_RETURN_VAL_IF_FAIL(func_output->output_create_capture, TDM_ERROR_BAD_MODULE); + if (private_display->caps_capture.capabilities & TDM_CAPTURE_CAPABILITY_LAYER) + TDM_RETURN_VAL_IF_FAIL(func_layer->layer_create_capture, TDM_ERROR_BAD_MODULE); TDM_RETURN_VAL_IF_FAIL(func_capture->capture_destroy, TDM_ERROR_BAD_MODULE); TDM_RETURN_VAL_IF_FAIL(func_capture->capture_commit, TDM_ERROR_BAD_MODULE); TDM_RETURN_VAL_IF_FAIL(func_capture->capture_set_done_handler, TDM_ERROR_BAD_MODULE); diff --git a/src/tdm_capture.c b/src/tdm_capture.c index da1a0e5..798f738 100644 --- a/src/tdm_capture.c +++ b/src/tdm_capture.c @@ -164,6 +164,13 @@ tdm_capture_create_output_internal(tdm_private_output *private_output, return NULL; } + if (!(private_display->caps_capture.capabilities & TDM_CAPTURE_CAPABILITY_OUTPUT)) { + TDM_ERR("no output capture capability"); + if (error) + *error = TDM_ERROR_NO_CAPABILITY; + return NULL; + } + capture_backend = func_output->output_create_capture( private_output->output_backend, &ret); if (ret != TDM_ERROR_NONE) { @@ -235,6 +242,13 @@ tdm_capture_create_layer_internal(tdm_private_layer *private_layer, return NULL; } + if (!(private_display->caps_capture.capabilities & TDM_CAPTURE_CAPABILITY_LAYER)) { + TDM_ERR("no layer capture capability"); + if (error) + *error = TDM_ERROR_NO_CAPABILITY; + return NULL; + } + capture_backend = func_layer->layer_create_capture(private_layer->layer_backend, &ret); if (ret != TDM_ERROR_NONE) -- 2.7.4