]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-10270: [mod_conference] Regression in personal canvas -- from: f1d8685566bab20beab...
authorAnthony Minessale <anthm@freeswitch.org>
Wed, 26 Apr 2017 20:25:04 +0000 (15:25 -0500)
committerMike Jerris <mike@jerris.com>
Thu, 1 Jun 2017 19:56:11 +0000 (15:56 -0400)
src/mod/applications/mod_conference/conference_api.c
src/mod/applications/mod_conference/conference_video.c

index f13784bfbddae0d05aee1660a5e723d5fb4722a3..2df7aeaafc67ffcfc35599dc593069609c16b1d9 100644 (file)
@@ -1094,6 +1094,8 @@ switch_status_t conference_api_sub_vid_personal(conference_obj_t *conference, sw
                on = switch_true(argv[2]);
                if (on) {
                        conference_utils_set_flag(conference, CFLAG_PERSONAL_CANVAS);
+                       conference->video_layout_group = "grid";
+                       conference_utils_set_flag(conference, CFLAG_REFRESH_LAYOUT);
                } else {
                        conference_utils_clear_flag(conference, CFLAG_PERSONAL_CANVAS);
                }
index 605f9f9f9c3722dafa20c7de220c7066783c9663..c8691c84298602a2e2cd086b61e6f3543a251227 100644 (file)
@@ -698,7 +698,9 @@ void conference_video_layer_set_logo(conference_member_t *member, mcu_layer_t *l
        switch_img_free(&layer->logo_text_img);
 
        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;
@@ -719,7 +721,9 @@ void conference_member_set_logo(conference_member_t *member, const char *path)
        switch_img_position_t pos = POS_LEFT_TOP;
        switch_img_fit_t fit = SWITCH_FIT_SIZE;
 
+       switch_mutex_lock(member->flag_mutex);
        switch_img_free(&member->video_logo);
+       switch_mutex_unlock(member->flag_mutex);
 
        if (!path || !strcasecmp(path, "clear")) {
                return;
@@ -3967,8 +3971,9 @@ switch_status_t conference_video_thread_callback(switch_core_session_t *session,
 
        if (conference_utils_test_flag(member->conference, CFLAG_VIDEO_MUXING)) {
                switch_image_t *img_copy = NULL;
+               int canvas_id = member->canvas_id;
 
-               if (frame->img && (member->video_layer_id > -1 || member->canvas) && 
+               if (frame->img && (((member->video_layer_id > -1) && canvas_id > -1) || member->canvas) &&
                        conference_utils_member_test_flag(member, MFLAG_CAN_BE_SEEN) &&
                        switch_queue_size(member->video_queue) < member->conference->video_fps.fps * 2 &&
                        !member->conference->playing_video_file) {