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);