diff --git a/easylogger/inc/elog.h b/easylogger/inc/elog.h index 719f4fbdbcf1c4854c5eaf76bf22ddbeb888400e..91c075627e0906bf1b1ff5e15de76a337b200f6e 100755 --- a/easylogger/inc/elog.h +++ b/easylogger/inc/elog.h @@ -163,6 +163,7 @@ typedef struct { bool output_lock_enabled; bool output_is_locked_before_enable; bool output_is_locked_before_disable; + bool output_is_locked; #ifdef ELOG_COLOR_ENABLE bool text_color_enabled; diff --git a/easylogger/src/elog.c b/easylogger/src/elog.c index 4b8fd5ad147322360e99febe58879ba921103183..29c336298f49f2c15e9ba67616fafe51da561f32 100755 --- a/easylogger/src/elog.c +++ b/easylogger/src/elog.c @@ -367,7 +367,10 @@ void elog_set_filter_kw(const char *keyword) { */ void elog_output_lock(void) { if (elog.output_lock_enabled) { - elog_port_output_lock(); + if (0 == elog.output_is_locked) { + elog_port_output_lock(); + elog.output_is_locked = 1; + } elog.output_is_locked_before_disable = true; } else { elog.output_is_locked_before_enable = true; @@ -380,6 +383,7 @@ void elog_output_lock(void) { void elog_output_unlock(void) { if (elog.output_lock_enabled) { elog_port_output_unlock(); + elog.output_is_locked = 0; elog.output_is_locked_before_disable = false; } else { elog.output_is_locked_before_enable = false;