< prev index next >

src/java.desktop/share/classes/com/sun/media/sound/PortMixerProvider.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this --- 1,7 ---- /* ! * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this
*** 102,119 **** } public Mixer getMixer(Mixer.Info info) { synchronized (PortMixerProvider.class) { for (int i = 0; i < infos.length; i++) { if (infos[i].equals(info)) { return getDevice(infos[i]); } } } ! throw new IllegalArgumentException("Mixer " + info.toString() ! + " not supported by this provider."); } private static Mixer getDevice(PortMixerInfo info) { int index = info.getIndex(); --- 102,131 ---- } public Mixer getMixer(Mixer.Info info) { synchronized (PortMixerProvider.class) { + // if the default device is asked, we provide the mixer + // with SourceDataLine's + if (info == null) { + for (int i = 0; i < infos.length; i++) { + Mixer mixer = getDevice(infos[i]); + if (mixer.getSourceLineInfo().length > 0) { + return mixer; + } + } + } + // otherwise get the first mixer that matches + // the requested info object for (int i = 0; i < infos.length; i++) { if (infos[i].equals(info)) { return getDevice(infos[i]); } } } ! throw new IllegalArgumentException( ! String.format("Mixer %s not supported by this provider", info)); } private static Mixer getDevice(PortMixerInfo info) { int index = info.getIndex();
< prev index next >