]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-7869: [mod_conference] fix deadlock on shutdown after playing video file that...
authorBrian West <brian@freeswitch.org>
Tue, 21 Jul 2015 23:41:49 +0000 (18:41 -0500)
committerBrian West <brian@freeswitch.org>
Tue, 21 Jul 2015 23:41:49 +0000 (18:41 -0500)
conf/testing/autoload_configs/conference.conf.xml
src/mod/applications/mod_conference/conference_video.c

index 6891466f7150ec2bae469445cce0582c5d03a2e6..212237c461e30bc83a66f8be591867af6044a0e5 100644 (file)
       <param name="muted-sound" value="conference/conf-muted.wav"/>
       <param name="unmuted-sound" value="conference/conf-unmuted.wav"/>
       <param name="alone-sound" value="conference/conf-alone.wav"/>
-      <!--<param name="moh-sound" value="local_stream://video"/> -->
+      <param name="moh-sound" value="local_stream://video"/>
       <param name="enter-sound" value="tone_stream://%(200,0,500,600,700)"/>
       <param name="exit-sound" value="tone_stream://%(500,0,300,200,100,50,25)"/>
       <param name="kicked-sound" value="conference/conf-kicked.wav"/>
index 956c2df3fdec21e9b49f4f3262a40f6b1e9fd86b..8b0a6b69ea2f514fb54899ea7128dd83c88dd3eb 100644 (file)
@@ -1525,6 +1525,13 @@ void conference_video_fnode_check(conference_file_node_t *fnode) {
                        canvas->conference->playing_video_file = 1;
                } else {
                        conference_video_canvas_set_fnode_layer(canvas, fnode, -1);
+
+                       if (fnode->layer_id == -1) {
+                               switch_frame_t file_frame = { 0 };
+
+                               switch_core_file_read_video(&fnode->fh, &file_frame, SVR_FLUSH);
+                               switch_img_free(&file_frame.img);
+                       }
                }
        }
 }
@@ -2231,7 +2238,6 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
                        switch_mutex_unlock(conference->member_mutex);
                } else {
 
-
                        if (conference->async_fnode && conference->async_fnode->canvas_id == canvas->canvas_id) {
                                if (conference->async_fnode->layer_id > -1) {
                                        conference_video_patch_fnode(canvas, conference->async_fnode);