{
conference_member_t *member = (conference_member_t *) obj;
void *pop;
- int loops = 0;
+ int loops = 0, done = 0;
while(conference_utils_member_test_flag(member, MFLAG_RUNNING) || switch_queue_size(member->mux_out_queue)) {
switch_frame_t *frame;
- if (conference_utils_member_test_flag(member, MFLAG_RUNNING)) {
+ if (conference_utils_member_test_flag(member, MFLAG_RUNNING) && !done) {
if (switch_queue_pop(member->mux_out_queue, &pop) == SWITCH_STATUS_SUCCESS) {
- if (!pop) continue;
+ if (!pop) {
+ done = 1;
+ continue;
+ }
if (loops == 0 || loops == 50) {
switch_core_media_gen_key_frame(member->session);
frame = (switch_frame_t *) pop;
switch_frame_buffer_free(member->fb, &frame);
}
+ } else {
+ if (done) break;
}
}
}