From: Anthony Minessale Date: Wed, 17 Aug 2016 23:22:11 +0000 (-0500) Subject: FS-9437 #resolve [Delete avatar if video is enabled mid-call] X-Git-Tag: v1.6.10~1^2~20 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bfb9e96f845d3739f027db0c53b4cb30e0b50669;p=thirdparty%2Ffreeswitch.git FS-9437 #resolve [Delete avatar if video is enabled mid-call] --- 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);