From c8ec463ef955cd2c24324520378100117d25605f Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 10 Mar 2017 21:20:24 -0600 Subject: [PATCH] FS-10107 --- .../mod_conference/conference_video.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/mod/applications/mod_conference/conference_video.c b/src/mod/applications/mod_conference/conference_video.c index ea79596d23..9702013388 100644 --- a/src/mod/applications/mod_conference/conference_video.c +++ b/src/mod/applications/mod_conference/conference_video.c @@ -2577,6 +2577,13 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr continue; } + //VIDFLOOR + if (conference->video_mode == CONF_VIDEO_MODE_MUX && + conference->canvas_count == 1 && canvas->layout_floor_id > -1 && imember->id == conference->video_floor_holder && + imember->video_layer_id != canvas->layout_floor_id) { + conference_video_attach_video_layer(imember, canvas, canvas->layout_floor_id); + } + if (conference->playing_video_file) { switch_img_free(&img); switch_core_session_rwunlock(imember->session); @@ -3677,6 +3684,17 @@ void conference_video_set_floor_holder(conference_obj_t *conference, conference_ conference->last_video_floor_holder = conference->video_floor_holder; } + if (conference->video_mode == CONF_VIDEO_MODE_MUX && + conference->last_video_floor_holder && (imember = conference_member_get(conference, conference->last_video_floor_holder))) { + switch_core_session_request_video_refresh(imember->session); + conference_video_clear_managed_kps(imember); + if (conference_utils_member_test_flag(imember, MFLAG_VIDEO_BRIDGE)) { + conference_utils_set_flag(conference, CFLAG_VID_FLOOR_LOCK); + } + switch_thread_rwlock_unlock(imember->rwlock); + imember = NULL; + } + old_member = conference->video_floor_holder; switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "Dropping video floor %d\n", old_member); }