From 92593db55dd1dd710d043236e5c72177e025b8d4 Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Mon, 12 Feb 2018 10:47:51 +0900 Subject: [PATCH] layer: add tdm_layer_commit_internal Change-Id: I9ceeba70ea836953a145dc6f5a049a9311d453b5 --- src/tdm_layer.c | 27 ++++++++++++++++++--------- src/tdm_private.h | 2 ++ 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/tdm_layer.c b/src/tdm_layer.c index b942b8f..ed86c37 100644 --- a/src/tdm_layer.c +++ b/src/tdm_layer.c @@ -943,12 +943,11 @@ commit_failed: return ret; } -EXTERN tdm_error -tdm_layer_commit(tdm_layer *layer, tdm_layer_commit_handler func, void *user_data) +INTERN tdm_error +tdm_layer_commit_internal(tdm_private_layer *private_layer, tdm_layer_commit_handler func, void *user_data) { - LAYER_FUNC_ENTRY(); - - _pthread_mutex_lock(&private_display->lock); + tdm_private_output *private_output = private_layer->private_output; + tdm_error ret = TDM_ERROR_NONE; /* default TDM_ERROR_NONE */ if (private_output->commit_type == TDM_COMMIT_TYPE_NONE) { if (!private_output->commit_per_vblank) @@ -958,22 +957,32 @@ tdm_layer_commit(tdm_layer *layer, tdm_layer_commit_handler func, void *user_dat } if (TDM_OUTPUT_DPMS_VSYNC_IS_OFF(private_output->current_dpms_value)) { - TDM_ERR("layer(%p)'s output(%d) dpms: %s", layer, private_output->pipe, + TDM_ERR("layer(%p)'s output(%d) dpms: %s", private_layer, private_output->pipe, tdm_dpms_str(private_output->current_dpms_value)); - _pthread_mutex_unlock(&private_display->lock); return TDM_ERROR_DPMS_OFF; } /* don't call this inside of _tdm_layer_commit */ ret = tdm_layer_commit_pending_data(private_layer); if (ret != TDM_ERROR_NONE) { - TDM_ERR("layer(%p) committing pending data failed", layer); - _pthread_mutex_unlock(&private_display->lock); + TDM_ERR("layer(%p) committing pending data failed", private_layer); return ret; } ret = _tdm_layer_commit(private_layer, func, user_data); + return ret; +} + +EXTERN tdm_error +tdm_layer_commit(tdm_layer *layer, tdm_layer_commit_handler func, void *user_data) +{ + LAYER_FUNC_ENTRY(); + + _pthread_mutex_lock(&private_display->lock); + + ret = tdm_layer_commit_internal(private_layer, func, user_data); + _pthread_mutex_unlock(&private_display->lock); return ret; diff --git a/src/tdm_private.h b/src/tdm_private.h index d2565ae..c771bb0 100644 --- a/src/tdm_private.h +++ b/src/tdm_private.h @@ -136,6 +136,8 @@ void tdm_layer_remove_commit_handler_internal(tdm_layer *layer, tdm_layer_commit_handler func, void *user_data); tdm_error +tdm_layer_commit_internal(tdm_private_layer *private_layer, tdm_layer_commit_handler func, void *user_data); +tdm_error tdm_layer_commit_pending_data(tdm_private_layer *private_layer); void tdm_layer_committed(tdm_private_layer *private_layer, tdm_private_layer_buffer **committed_buffer); -- 2.7.4