]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
update
authorAnthony Minessale <anthm@freeswitch.org>
Wed, 28 Oct 2015 21:35:06 +0000 (16:35 -0500)
committerAnthony Minessale <anthm@freeswitch.org>
Mon, 9 Nov 2015 21:13:19 +0000 (15:13 -0600)
src/mod/applications/mod_conference/conference_video.c

index e3e952f84b94449a389a1cf7f8fffe9ebfab25e3..166b07b9b13a804639c80de7accfe561925804e2 100644 (file)
@@ -1515,15 +1515,19 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_write_thread_run(switch_thread_
                        if (member->video_layer_id > -1 && member->canvas_id > -1) {
                                canvas = member->conference->canvases[member->canvas_id];
                                layer = &canvas->layers[member->video_layer_id];
+
+                               if (!layer->need_patch || switch_thread_rwlock_tryrdlock(canvas->video_rwlock) != SWITCH_STATUS_SUCCESS) {
+                                       canvas = NULL;
+                                       layer = NULL;
+                               }
                        }
+                       switch_mutex_unlock(member->conference->canvas_mutex);
 
                        if (canvas && layer && layer->need_patch) {
-                               switch_thread_rwlock_rdlock(canvas->video_rwlock);
                                conference_video_scale_and_patch(layer, NULL, SWITCH_FALSE);
                                layer->need_patch = 0;
                                switch_thread_rwlock_unlock(canvas->video_rwlock);
                        }
-                       switch_mutex_unlock(member->conference->canvas_mutex);
                }
        }