From 7077d9b1485f622fb2369febb7ad793396d26b87 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 8 May 2015 10:46:43 -0500 Subject: [PATCH] FS-7513 move some locking around --- src/mod/applications/mod_conference/mod_conference.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c index bab55413cd..ac218a7c27 100644 --- a/src/mod/applications/mod_conference/mod_conference.c +++ b/src/mod/applications/mod_conference/mod_conference.c @@ -4339,14 +4339,16 @@ static void conference_set_video_floor_holder(conference_obj_t *conference, conf } } - switch_mutex_lock(conference->mutex); + if (!member) { + switch_mutex_lock(conference->member_mutex); for (imember = conference->members; imember; imember = imember->next) { if (imember->id != conference->video_floor_holder && imember->channel && switch_channel_test_flag(imember->channel, CF_VIDEO)) { member = imember; break; } } + switch_mutex_unlock(conference->member_mutex); } if (member && conference->canvas && conference->canvas->layout_floor_id > -1) { @@ -4375,6 +4377,7 @@ static void conference_set_video_floor_holder(conference_obj_t *conference, conf } } + switch_mutex_lock(conference->member_mutex); for (imember = conference->members; imember; imember = imember->next) { if (!imember->channel || !switch_channel_test_flag(imember->channel, CF_VIDEO)) { continue; @@ -4384,9 +4387,9 @@ static void conference_set_video_floor_holder(conference_obj_t *conference, conf switch_core_session_kill_channel(imember->session, SWITCH_SIG_BREAK); switch_core_session_video_reinit(imember->session); } + switch_mutex_unlock(conference->member_mutex); switch_set_flag(conference, CFLAG_FLOOR_CHANGE); - switch_mutex_unlock(conference->mutex); if (test_eflag(conference, EFLAG_FLOOR_CHANGE)) { switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT);