< prev index next >

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

Print this page

        

@@ -1,7 +1,7 @@
 /*
- * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
+ * 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,18 +102,30 @@
     }
 
 
     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("Mixer " + info.toString()
-                                           + " not supported by this provider.");
+        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 >