mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-04-29 13:43:07 +00:00
FS-7513: fix overlap
This commit is contained in:
parent
e919592905
commit
a6dbc2c6f8
@ -1122,13 +1122,20 @@ static void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread
|
|||||||
|
|
||||||
remaining += switch_queue_size(imember->video_queue);
|
remaining += switch_queue_size(imember->video_queue);
|
||||||
|
|
||||||
|
switch_mutex_lock(conference->canvas->mutex);
|
||||||
|
|
||||||
if (imember->video_layer_id > -1) {
|
if (imember->video_layer_id > -1) {
|
||||||
|
if (imember->video_layer_id >= conference->canvas->total_layers) {
|
||||||
|
conference->canvas->layers[imember->video_layer_id].member_id = 0;
|
||||||
|
imember->video_layer_id = -1;
|
||||||
|
conference->canvas->layers_used--;
|
||||||
|
} else {
|
||||||
layer = &conference->canvas->layers[imember->video_layer_id];
|
layer = &conference->canvas->layers[imember->video_layer_id];
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!layer) {
|
if (!layer && conference->canvas->layers_used < conference->canvas->total_layers) {
|
||||||
/* find an empty layer */
|
/* find an empty layer */
|
||||||
switch_mutex_lock(conference->canvas->mutex);
|
|
||||||
for (i = 0; i < conference->canvas->total_layers; i++) {
|
for (i = 0; i < conference->canvas->total_layers; i++) {
|
||||||
layer = &conference->canvas->layers[i];
|
layer = &conference->canvas->layers[i];
|
||||||
if (!layer->member_id) {
|
if (!layer->member_id) {
|
||||||
@ -1138,8 +1145,8 @@ static void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
switch_mutex_unlock(conference->canvas->mutex);
|
|
||||||
}
|
}
|
||||||
|
switch_mutex_unlock(conference->canvas->mutex);
|
||||||
|
|
||||||
if (layer) {
|
if (layer) {
|
||||||
scale_and_patch(conference->canvas->img, img, layer);
|
scale_and_patch(conference->canvas->img, img, layer);
|
||||||
@ -1153,6 +1160,9 @@ static void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (remaining) goto top;
|
||||||
|
|
||||||
|
|
||||||
for (imember = conference->members; imember; imember = imember->next) {
|
for (imember = conference->members; imember; imember = imember->next) {
|
||||||
switch_channel_t *ichannel = switch_core_session_get_channel(imember->session);
|
switch_channel_t *ichannel = switch_core_session_get_channel(imember->session);
|
||||||
|
|
||||||
@ -1176,8 +1186,6 @@ static void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (remaining) goto top;
|
|
||||||
|
|
||||||
switch_mutex_unlock(conference->member_mutex);
|
switch_mutex_unlock(conference->member_mutex);
|
||||||
|
|
||||||
switch_mutex_lock(conference->canvas->cond2_mutex);
|
switch_mutex_lock(conference->canvas->cond2_mutex);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user