From bfb9e96f845d3739f027db0c53b4cb30e0b50669 Mon Sep 17 00:00:00 2001 From: Anthony Minessale <anthm@freeswitch.org> Date: Wed, 17 Aug 2016 18:22:11 -0500 Subject: [PATCH] FS-9437 #resolve [Delete avatar if video is enabled mid-call] --- src/mod/applications/mod_conference/conference_loop.c | 1 + src/mod/applications/mod_conference/conference_video.c | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/src/mod/applications/mod_conference/conference_loop.c b/src/mod/applications/mod_conference/conference_loop.c index ed2d54bf12..a25c4319b0 100644 --- a/src/mod/applications/mod_conference/conference_loop.c +++ b/src/mod/applications/mod_conference/conference_loop.c @@ -707,6 +707,7 @@ void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, void *ob if (switch_channel_test_flag(channel, CF_VIDEO) && !conference_utils_member_test_flag(member, MFLAG_ACK_VIDEO)) { conference_utils_member_set_flag_locked(member, MFLAG_ACK_VIDEO); + switch_img_free(&member->avatar_png_img); conference_video_check_avatar(member, SWITCH_FALSE); switch_core_session_video_reinit(member->session); conference_video_set_floor_holder(member->conference, member, SWITCH_FALSE); diff --git a/src/mod/applications/mod_conference/conference_video.c b/src/mod/applications/mod_conference/conference_video.c index 060f769f66..252e149f6c 100644 --- a/src/mod/applications/mod_conference/conference_video.c +++ b/src/mod/applications/mod_conference/conference_video.c @@ -1930,6 +1930,10 @@ void conference_video_pop_next_image(conference_member_t *member, switch_image_t int size = 0; void *pop; + if (member->avatar_png_img && switch_channel_test_flag(member->channel, CF_VIDEO_READY) && conference_utils_member_test_flag(member, MFLAG_ACK_VIDEO)) { + switch_img_free(&member->avatar_png_img); + } + if (!member->avatar_png_img && switch_channel_test_flag(member->channel, CF_VIDEO_READY)) { do { if (switch_queue_trypop(member->video_queue, &pop) == SWITCH_STATUS_SUCCESS && pop) { @@ -3863,6 +3867,7 @@ switch_status_t conference_video_thread_callback(switch_core_session_t *session, if (switch_queue_trypush(member->video_queue, img_copy) != SWITCH_STATUS_SUCCESS) { switch_img_free(&img_copy); } + } switch_thread_rwlock_unlock(member->conference->rwlock);