]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-10754: [mod_conference] Conference Improvements #resolve
authorAnthony Minessale <anthm@freeswitch.org>
Tue, 24 Oct 2017 19:00:35 +0000 (14:00 -0500)
committerAnthony Minessale <anthm@freeswitch.org>
Wed, 25 Oct 2017 17:27:20 +0000 (12:27 -0500)
src/mod/applications/mod_conference/conference_video.c
src/mod/applications/mod_conference/mod_conference.h

index 2485ef73aeb0a6f9de3cff2c319ce397a22443f3..ba2b6566b8841459a2f2d2a6160fdacce4116d85 100644 (file)
@@ -2081,11 +2081,8 @@ void *SWITCH_THREAD_FUNC conference_video_layer_thread_run(switch_thread_t *thre
                mcu_layer_t *layer = NULL;
                mcu_canvas_t *canvas = NULL;
                
-               if (!member->layer_thread_wake_up) {
-                       switch_thread_cond_wait(member->layer_cond, member->layer_cond_mutex);
-               }
 
-               member->layer_thread_wake_up = 0;
+               switch_thread_cond_wait(member->layer_cond, member->layer_cond_mutex);
 
                if (!conference_utils_member_test_flag(member, MFLAG_RUNNING)) {
                        break;
@@ -2117,10 +2114,9 @@ void *SWITCH_THREAD_FUNC conference_video_layer_thread_run(switch_thread_t *thre
 void conference_video_wake_layer_thread(conference_member_t *member)
 {
        if (member->layer_cond) {
-               if (!member->layer_thread_wake_up && switch_mutex_trylock(member->layer_cond_mutex) == SWITCH_STATUS_SUCCESS) {
+               if (switch_mutex_trylock(member->layer_cond_mutex) == SWITCH_STATUS_SUCCESS) {
                        switch_thread_cond_signal(member->layer_cond);
                        switch_mutex_unlock(member->layer_cond_mutex);
-                       member->layer_thread_wake_up = 1;
                }
                
        }
@@ -3807,7 +3803,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
                                                }
 
                                                if (layer->cur_img) {
-                                                       if (layer->member && switch_core_cpu_count() > 200) {
+                                                       if (layer->member && switch_core_cpu_count() > 2) {
                                                                layer->need_patch = 1;
                                                                conference_video_wake_layer_thread(layer->member);
                                                        } else {
index c521e430880c3107dc25e4fe8ca171e3c72b385b..c7ae4bf3cca3710b8bc95339259295ad71b4a08d 100644 (file)
@@ -847,7 +847,6 @@ struct conference_member {
        switch_thread_t *input_thread;
        switch_thread_cond_t *layer_cond;
        switch_mutex_t *layer_cond_mutex;
-       int layer_thread_wake_up;
        cJSON *json;
        cJSON *status_field;
        uint8_t loop_loop;