]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-9437 #resolve [Delete avatar if video is enabled mid-call]
authorAnthony Minessale <anthm@freeswitch.org>
Wed, 17 Aug 2016 23:22:11 +0000 (18:22 -0500)
committerAnthony Minessale <anthm@freeswitch.org>
Wed, 17 Aug 2016 23:22:20 +0000 (18:22 -0500)
src/mod/applications/mod_conference/conference_loop.c
src/mod/applications/mod_conference/conference_video.c

index ed2d54bf12e09a2d666512098ca1397003bcd036..a25c4319b035310912341d2d3060df53c71f7aa3 100644 (file)
@@ -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);
index 060f769f662ed878600aed65e336f51e947e9af4..252e149f6c6aa90d090b0cf153362df4d027e3a9 100644 (file)
@@ -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);