From 17480f6ea460cc1e8de532c0ce0a989247858606 Mon Sep 17 00:00:00 2001 From: Corey Farrell Date: Sat, 6 Jan 2018 03:17:15 -0500 Subject: res_stasis: Reduce RAII_VAR usage. In addition to being a micro-optimization (RAII_VAR has overhead), this change improves output of REF_DEBUG. Unfortunately when RAII_VAR calls ao2_cleanup it does so from a generated _dtor_varname function. For example this caused _dtor_app to release a reference instead of __stasis_app_unregister. Change-Id: I4ce67120583a446babf9adeec678b71d37fcd9e5 --- res/stasis/command.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'res/stasis/command.c') diff --git a/res/stasis/command.c b/res/stasis/command.c index 534e434ec..024f02b6a 100644 --- a/res/stasis/command.c +++ b/res/stasis/command.c @@ -78,21 +78,26 @@ struct stasis_app_command *command_create( void command_complete(struct stasis_app_command *command, int retval) { - SCOPED_MUTEX(lock, &command->lock); - + ast_mutex_lock(&command->lock); command->is_done = 1; command->retval = retval; ast_cond_signal(&command->condition); + ast_mutex_unlock(&command->lock); } int command_join(struct stasis_app_command *command) { - SCOPED_MUTEX(lock, &command->lock); + int ret; + + ast_mutex_lock(&command->lock); while (!command->is_done) { ast_cond_wait(&command->condition, &command->lock); } - return command->retval; + ret = command->retval; + ast_mutex_unlock(&command->lock); + + return ret; } void command_invoke(struct stasis_app_command *command, -- cgit v1.2.3