diff --git a/src/mod/applications/mod_conference/conference_video.c b/src/mod/applications/mod_conference/conference_video.c index 640501dc03..03b7866c36 100644 --- a/src/mod/applications/mod_conference/conference_video.c +++ b/src/mod/applications/mod_conference/conference_video.c @@ -711,14 +711,13 @@ void conference_video_layer_set_logo(conference_member_t *member, mcu_layer_t *l { switch_mutex_lock(layer->canvas->mutex); - switch_img_free(&layer->logo_img); switch_img_free(&layer->logo_text_img); + switch_mutex_lock(member->flag_mutex); + if (member->video_logo) { - switch_mutex_lock(member->flag_mutex); switch_img_copy(member->video_logo, &layer->logo_img); - switch_mutex_unlock(member->flag_mutex); if (layer->logo_img) { layer->logo_pos = member->logo_pos; @@ -726,6 +725,8 @@ void conference_video_layer_set_logo(conference_member_t *member, mcu_layer_t *l } } + switch_mutex_unlock(member->flag_mutex); + switch_mutex_unlock(layer->canvas->mutex); } @@ -741,9 +742,10 @@ void conference_member_set_logo(conference_member_t *member, const char *path) switch_mutex_lock(member->flag_mutex); switch_img_free(&member->video_logo); - switch_mutex_unlock(member->flag_mutex); + if (!path || !strcasecmp(path, "clear")) { + switch_mutex_unlock(member->flag_mutex); return; } @@ -809,6 +811,8 @@ void conference_member_set_logo(conference_member_t *member, const char *path) switch_safe_free(dup); + switch_mutex_unlock(member->flag_mutex); + return; }