From c376fe11f2465688b944aeb07da9a8ca7443dc14 Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Wed, 15 May 2019 17:41:41 +0900 Subject: [PATCH] layer: check if the HWC cap is enabled 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 | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/src/tdm_layer.c b/src/tdm_layer.c index 3737da1..6e0c1bf 100644 --- a/src/tdm_layer.c +++ b/src/tdm_layer.c @@ -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; -- 2.7.4