check capture capability 26/99926/2
authorBoram Park <boram1288.park@samsung.com>
Wed, 23 Nov 2016 04:16:44 +0000 (13:16 +0900)
committerSooChan Lim <sc1.lim@samsung.com>
Fri, 25 Nov 2016 07:50:15 +0000 (23:50 -0800)
Change-Id: If3db8bd96f960ddf5ddd8d22f9e9a8ea20ecdc58

src/tdm.c
src/tdm_capture.c

index 4918a22..5d2714c 100644 (file)
--- 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);
index da1a0e5..798f738 100644 (file)
@@ -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)