float x, z;
float div = 3.14159f / 180;
conference_member_t *member;
+ uint32_t count = 0;
if (!conference->count) {
return;
}
switch_mutex_lock(conference->member_mutex);
+ for (member = conference->members; member; member = member->next) {
+ if (member->channel && switch_test_flag(member, MFLAG_CAN_SPEAK) && !switch_test_flag(member, MFLAG_NO_POSITIONAL)) {
+ count++;
+ }
+ }
- if (conference->count < 3) {
+ if (count < 3) {
for (member = conference->members; member; member = member->next) {
- if (member->al) {
+ if (member->channel && !switch_test_flag(member, MFLAG_NO_POSITIONAL) && member->al) {
member->al->pos_x = 0;
member->al->pos_y = 0;
member->al->pos_z = 0;
goto end;
}
- offset = 180 / (conference->count - 1);
+ offset = 180 / (count - 1);
- radius = 2.0f;//3.0f; //(float)conference->count / 2.0f; //3.0f;
+ radius = 2.0f;//3.0f; //(float)count / 2.0f; //3.0f;
pos = -90.0f;// + (offset / 2.0f);
for (member = conference->members; member; member = member->next) {
- if (!member->channel || switch_test_flag(member, MFLAG_NO_POSITIONAL)) {
+ if (!member->channel || switch_test_flag(member, MFLAG_NO_POSITIONAL) || !switch_test_flag(member, MFLAG_CAN_SPEAK)) {
continue;
}
switch_event_fire(&event);
}
+ if (switch_test_flag(member->conference, CFLAG_POSITIONAL)) {
+ gen_arc(member->conference, NULL);
+ }
+
member_update_status_field(member);
return SWITCH_STATUS_SUCCESS;
switch_event_fire(&event);
}
+ if (switch_test_flag(member->conference, CFLAG_POSITIONAL)) {
+ gen_arc(member->conference, NULL);
+ }
+
member_update_status_field(member);
return SWITCH_STATUS_SUCCESS;
switch_event_fire(&event);
}
+ if (switch_test_flag(member->conference, CFLAG_POSITIONAL)) {
+ gen_arc(member->conference, NULL);
+ }
+
return SWITCH_STATUS_SUCCESS;
}
switch_event_fire(&event);
}
+ if (switch_test_flag(member->conference, CFLAG_POSITIONAL)) {
+ gen_arc(member->conference, NULL);
+ }
+
return SWITCH_STATUS_SUCCESS;
}