<Sound Dev> com.sun.media.sound.SoftMainMixer.processAudioBuffers stoppedMixers-handling-bug?

Lothar Kimmeringer job at kimmeringer.de
Wed Jan 29 18:10:17 UTC 2020


Hi,

for completely sound-unrelated reasons I've downloaded the sources of JDK 1.8
and created an Eclipse-project with it. I get a compile error in class
com.sun.media.sound.SoftMainMixer.processAudioBuffers and when checking the
source I have to agree with Eclipse that it's an issue:

Description	Resource	Path	Location	Type
Unlikely argument type SoftMainMixer.SoftChannelMixerContainer for contains(Object) on a Collection<ModelChannelMixer>	SoftMainMixer.java	/JDK1_8/src/share/classes/com/sun/media/sound	line 632	Java Problem

Disclaimer: I've configured Eclipse to regard this programming mistake as error,
while the default is just a warning.

The offending lines (threre are two) is:

     if (stoppedMixers.contains(cmixer)) {
         stoppedMixers.remove(cmixer);
         cmixer.mixer.stop();
     }

stoppedMixer is a a Collection<ModelChannelMixer> while cmixer is of
type SoftChannelMixerContainer, so contains() will never return true.
I assume it should have been

     if (stoppedMixers.contains(cmixer.mixer)) {
         stoppedMixers.remove(cmixer.mixer);
         cmixer.mixer.stop();
     }

instead. I've checked the sources of Java 13 and it's still there in
this way so it doesn't seem to be something that has already been found
and fixed but not been backported to Java 1.8.

WMState and KeepAliveCache have similar issues but I suppose that's
for other mail lists to report ;-)


Thanks and best regards,

Lothar Kimmeringer


More information about the sound-dev mailing list