switch_assert(conference != NULL);
switch_assert(member != NULL);
-
switch_mutex_lock(conference->mutex);
- switch_mutex_lock(member->audio_in_mutex);
- switch_mutex_lock(member->audio_out_mutex);
- lock_member(member);
- switch_mutex_lock(conference->member_mutex);
if (member->rec) {
conference->recording_members++;
member->join_time = switch_epoch_time_now(NULL);
member->conference = conference;
- member->next = conference->members;
member->energy_level = conference->energy_level;
member->auto_energy_level = conference->auto_energy_level;
member->max_energy_level = conference->max_energy_level;
switch_queue_create(&member->dtmf_queue, 100, member->pool);
- conference->members = member;
conference_utils_member_set_flag_locked(member, MFLAG_INTREE);
- switch_mutex_unlock(conference->member_mutex);
conference_cdr_add(member);
conference_api_set_agc(member, NULL);
}
}
- conference_send_presence(conference);
-
channel = switch_core_session_get_channel(member->session);
if (switch_true(switch_channel_get_variable_dup(member->channel, "video_second_screen", SWITCH_FALSE, -1))) {
}
- unlock_member(member);
- switch_mutex_unlock(member->audio_out_mutex);
- switch_mutex_unlock(member->audio_in_mutex);
-
if (conference->la && member->channel) {
if (!conference_utils_member_test_flag(member, MFLAG_SECOND_SCREEN)) {
cJSON *dvars;
}
+ switch_mutex_lock(conference->member_mutex);
+ member->next = conference->members;
+ conference->members = member;
+ switch_mutex_unlock(conference->member_mutex);
+ switch_mutex_unlock(conference->mutex);
+ status = SWITCH_STATUS_SUCCESS;
+
+
+ conference_send_presence(conference);
+
if (conference_utils_test_flag(conference, CFLAG_POSITIONAL)) {
conference_al_gen_arc(conference, NULL);
conference_event_send_rfc(conference);
conference_event_send_json(conference);
- switch_mutex_unlock(conference->mutex);
- status = SWITCH_STATUS_SUCCESS;
conference_video_find_floor(member, SWITCH_TRUE);