layer: check if the HWC cap is enabled 29/206229/7
authorSooChan Lim <sc1.lim@samsung.com>
Wed, 15 May 2019 08:41:41 +0000 (17:41 +0900)
committerSooChan Lim <sc1.lim@samsung.com>
Wed, 11 Mar 2020 01:21:49 +0000 (01:21 +0000)
The layer api MUST not be used when the HWC capability is enabled.
When the HWC capability is set by tdm backends, it means that they
does not support the layer objects.

Change-Id: Ibf9210ea4abf8870e18caa23b5f0f5de2c24eb00

src/tdm_layer.c

index 3737da1..6e0c1bf 100644 (file)
@@ -110,6 +110,8 @@ tdm_layer_get_output(tdm_layer *layer, tdm_error *error)
 
        _pthread_mutex_lock(&private_display->lock);
 
+       OUTPUT_HWC_CAP_CHECK_ERROR();
+
        if (error)
                *error = TDM_ERROR_NONE;
 
@@ -129,6 +131,8 @@ tdm_layer_get_index(tdm_layer *layer, int *index)
 
        _pthread_mutex_lock(&private_display->lock);
 
+       OUTPUT_HWC_CAP_CHECK();
+
        *index = private_layer->index;
 
        _pthread_mutex_unlock(&private_display->lock);
@@ -145,6 +149,8 @@ tdm_layer_get_capabilities(tdm_layer *layer, tdm_layer_capability *capabilities)
 
        _pthread_mutex_lock(&private_display->lock);
 
+       OUTPUT_HWC_CAP_CHECK();
+
        *capabilities = private_layer->caps.capabilities;
 
        _pthread_mutex_unlock(&private_display->lock);
@@ -162,6 +168,8 @@ tdm_layer_get_available_formats(tdm_layer *layer, const tbm_format **formats, in
 
        _pthread_mutex_lock(&private_display->lock);
 
+       OUTPUT_HWC_CAP_CHECK();
+
        *formats = (const tbm_format *)private_layer->caps.formats;
        *count = private_layer->caps.format_count;
 
@@ -180,6 +188,8 @@ tdm_layer_get_available_properties(tdm_layer *layer, const tdm_prop **props, int
 
        _pthread_mutex_lock(&private_display->lock);
 
+       OUTPUT_HWC_CAP_CHECK();
+
        *props = (const tdm_prop *)private_layer->caps.props;
        *count = private_layer->caps.prop_count;
 
@@ -197,6 +207,8 @@ tdm_layer_get_zpos(tdm_layer *layer, int *zpos)
 
        _pthread_mutex_lock(&private_display->lock);
 
+       OUTPUT_HWC_CAP_CHECK();
+
        *zpos = private_layer->caps.zpos;
 
        _pthread_mutex_unlock(&private_display->lock);
@@ -213,6 +225,8 @@ tdm_layer_set_property(tdm_layer *layer, unsigned int id, tdm_value value)
 
        _pthread_mutex_lock(&private_display->lock);
 
+       OUTPUT_HWC_CAP_CHECK();
+
        private_module = private_layer->private_module;
        func_layer = &private_module->func_layer;
 
@@ -247,6 +261,8 @@ tdm_layer_get_property(tdm_layer *layer, unsigned int id, tdm_value *value)
 
        _pthread_mutex_lock(&private_display->lock);
 
+       OUTPUT_HWC_CAP_CHECK();
+
        private_module = private_layer->private_module;
        func_layer = &private_module->func_layer;
 
@@ -317,6 +333,8 @@ tdm_layer_set_info(tdm_layer *layer, tdm_info_layer *info)
 
        _pthread_mutex_lock(&private_display->lock);
 
+       OUTPUT_HWC_CAP_CHECK();
+
        ret = tdm_layer_set_info_internal(private_layer, info);
 
        _pthread_mutex_unlock(&private_display->lock);
@@ -335,6 +353,8 @@ tdm_layer_get_info(tdm_layer *layer, tdm_info_layer *info)
 
        _pthread_mutex_lock(&private_display->lock);
 
+       OUTPUT_HWC_CAP_CHECK();
+
        private_module = private_layer->private_module;
        func_layer = &private_module->func_layer;
 
@@ -562,6 +582,8 @@ tdm_layer_set_buffer(tdm_layer *layer, tbm_surface_h buffer)
 
        _pthread_mutex_lock(&private_display->lock);
 
+       OUTPUT_HWC_CAP_CHECK();
+
        ret = tdm_layer_set_buffer_internal(private_layer, buffer);
 
        _pthread_mutex_unlock(&private_display->lock);
@@ -606,6 +628,8 @@ tdm_layer_unset_buffer(tdm_layer *layer)
 
        _pthread_mutex_lock(&private_display->lock);
 
+       OUTPUT_HWC_CAP_CHECK();
+
        ret = tdm_layer_unset_buffer_internal(private_layer);
        TDM_WARNING_IF_FAIL(ret == TDM_ERROR_NONE);
 
@@ -1088,6 +1112,8 @@ tdm_layer_commit(tdm_layer *layer, tdm_layer_commit_handler func, void *user_dat
 
        _pthread_mutex_lock(&private_display->lock);
 
+       OUTPUT_HWC_CAP_CHECK();
+
        ret = tdm_layer_commit_internal(private_layer, func, user_data);
 
        _pthread_mutex_unlock(&private_display->lock);
@@ -1104,6 +1130,8 @@ tdm_layer_is_committing(tdm_layer *layer, unsigned int *committing)
 
        _pthread_mutex_lock(&private_display->lock);
 
+       OUTPUT_HWC_CAP_CHECK();
+
        *committing = private_layer->committing;
 
        _pthread_mutex_unlock(&private_display->lock);
@@ -1152,6 +1180,8 @@ tdm_layer_remove_commit_handler(tdm_layer *layer, tdm_layer_commit_handler func,
 
        _pthread_mutex_lock(&private_display->lock);
 
+       OUTPUT_HWC_CAP_CHECK();
+
        tdm_layer_remove_commit_handler_internal(layer, func, user_data);
 
        _pthread_mutex_unlock(&private_display->lock);
@@ -1167,6 +1197,8 @@ tdm_layer_get_displaying_buffer(tdm_layer *layer, tdm_error *error)
 
        _pthread_mutex_lock(&private_display->lock);
 
+       OUTPUT_HWC_CAP_CHECK_ERROR();
+
        if (error)
                *error = TDM_ERROR_NONE;
 
@@ -1259,6 +1291,8 @@ tdm_layer_set_buffer_queue(tdm_layer *layer, tbm_surface_queue_h buffer_queue)
 
        _pthread_mutex_lock(&private_display->lock);
 
+       OUTPUT_HWC_CAP_CHECK();
+
        private_module = private_layer->private_module;
        func_layer = &private_module->func_layer;
 
@@ -1316,6 +1350,8 @@ tdm_layer_is_usable(tdm_layer *layer, unsigned int *usable)
 
        _pthread_mutex_lock(&private_display->lock);
 
+       OUTPUT_HWC_CAP_CHECK();
+
        *usable = private_layer->usable;
 
        _pthread_mutex_unlock(&private_display->lock);
@@ -1332,6 +1368,8 @@ tdm_layer_set_video_pos(tdm_layer *layer, int zpos)
 
        _pthread_mutex_lock(&private_display->lock);
 
+       OUTPUT_HWC_CAP_CHECK();
+
        private_module = private_layer->private_module;
        func_layer = &private_module->func_layer;
 
@@ -1365,6 +1403,8 @@ tdm_layer_create_capture(tdm_layer *layer, tdm_error *error)
 
        _pthread_mutex_lock(&private_display->lock);
 
+       OUTPUT_HWC_CAP_CHECK_ERROR();
+
        capture = (tdm_capture *)tdm_capture_create_layer_internal(private_layer, error);
 
        _pthread_mutex_unlock(&private_display->lock);
@@ -1382,6 +1422,8 @@ tdm_layer_get_buffer_flags(tdm_layer *layer, unsigned int *flags)
 
        _pthread_mutex_lock(&private_display->lock);
 
+       OUTPUT_HWC_CAP_CHECK();
+
        private_module = private_layer->private_module;
        func_layer = &private_module->func_layer;