When we change audio device during a cross-protocol conference call, it is the first call of the group that will trigger the propertyChange to other calls (because every calls share the first call audio media device and if the first call is not the first notified, we will end up with different audio device amongst the calls).

cusax-fix
Sebastien Vincent 14 years ago
parent 70bfb7989d
commit 38a6027d29

@ -1182,6 +1182,13 @@ public void propertyChange(PropertyChangeEvent event)
{
if (MediaService.DEFAULT_DEVICE.equals(event.getPropertyName()))
{
// if we change the device, do it only for the first member
if(getCallGroup() != null &&
this != getCallGroup().getCalls().get(0))
{
return;
}
/*
* XXX We only support changing the default audio device at the time
* of this writing.
@ -1200,6 +1207,7 @@ public void propertyChange(PropertyChangeEvent event)
= ((MediaDeviceWrapper) conferenceAudioMixer)
.getWrappedDevice();
}
/*
* XXX If MediaService#getDefaultDevice(MediaType, MediaUseCase)
* above returns null and its earlier return value was not null, we
@ -1213,6 +1221,25 @@ public void propertyChange(PropertyChangeEvent event)
DEFAULT_DEVICE,
oldValue, newValue);
}
// now the first member of the group is configured so let's
// configure the others
if(getCallGroup() != null)
{
List<Call> calls = getCallGroup().getCalls();
for(Call c : calls)
{
if(c == this)
continue;
MediaAwareCall<?,?,?> call = (MediaAwareCall<?,?,?>)c;
call.conferenceAudioMixer = null;
call.propertyChangeSupport.firePropertyChange(
DEFAULT_DEVICE, oldValue, newValue);
}
}
}
}
}

Loading…
Cancel
Save