Description: Workaround OpenJDK's Pulse Audio implementation
 The pulse audio implementation in OpenJDK claims to support gain when you
 call isControlSupported, but then throws an exception anyway. So put a try
 catch around isControlSupported calls to avoid problems, please refer to:
 http://stackoverflow.com/questions/1914216/master-gain-not-supported-in-openjdk
--- a/src/javazoom/jlgui/basicplayer/BasicPlayer.java
+++ b/src/javazoom/jlgui/basicplayer/BasicPlayer.java
@@ -454,17 +454,23 @@
                 log.debug("Controls : " + c[p].toString());
             }
             /*-- Is Gain Control supported ? --*/
-            if (m_line.isControlSupported(FloatControl.Type.MASTER_GAIN))
-            {
-                m_gainControl = (FloatControl) m_line.getControl(FloatControl.Type.MASTER_GAIN);
-                log.info("Master Gain Control : [" + m_gainControl.getMinimum() + "," + m_gainControl.getMaximum() + "] " + m_gainControl.getPrecision());
+            try {
+              if (m_line.isControlSupported(FloatControl.Type.MASTER_GAIN))
+              {
+                  m_gainControl = (FloatControl) m_line.getControl(FloatControl.Type.MASTER_GAIN);
+                  log.info("Master Gain Control : [" + m_gainControl.getMinimum() + "," + m_gainControl.getMaximum() + "] " + m_gainControl.getPrecision());
+              }
             }
+            catch (IllegalArgumentException e) { }
             /*-- Is Pan control supported ? --*/
-            if (m_line.isControlSupported(FloatControl.Type.PAN))
-            {
-                m_panControl = (FloatControl) m_line.getControl(FloatControl.Type.PAN);
-                log.info("Pan Control : [" + m_panControl.getMinimum() + "," + m_panControl.getMaximum() + "] " + m_panControl.getPrecision());
+            try {
+              if (m_line.isControlSupported(FloatControl.Type.PAN))
+              {
+                  m_panControl = (FloatControl) m_line.getControl(FloatControl.Type.PAN);
+                  log.info("Pan Control : [" + m_panControl.getMinimum() + "," + m_panControl.getMaximum() + "] " + m_panControl.getPrecision());
+              }
             }
+            catch (IllegalArgumentException e) { }
         }
     }
 
@@ -795,7 +801,10 @@
         if (m_gainControl == null)
         {
             // Try to get Gain control again (to support J2SE 1.5)
-            if ( (m_line != null) && (m_line.isControlSupported(FloatControl.Type.MASTER_GAIN))) m_gainControl = (FloatControl) m_line.getControl(FloatControl.Type.MASTER_GAIN);
+            try {
+              if ( (m_line != null) && (m_line.isControlSupported(FloatControl.Type.MASTER_GAIN))) m_gainControl = (FloatControl) m_line.getControl(FloatControl.Type.MASTER_GAIN);
+            }
+            catch (IllegalArgumentException e) { }
         }
         return m_gainControl != null;
     }
@@ -853,7 +862,10 @@
         if (m_panControl == null)
         {
             // Try to get Pan control again (to support J2SE 1.5)
-            if ((m_line != null)&& (m_line.isControlSupported(FloatControl.Type.PAN))) m_panControl = (FloatControl) m_line.getControl(FloatControl.Type.PAN);
+            try {
+              if ((m_line != null)&& (m_line.isControlSupported(FloatControl.Type.PAN))) m_panControl = (FloatControl) m_line.getControl(FloatControl.Type.PAN);
+            }
+            catch (IllegalArgumentException e) { }
         }
         return m_panControl != null;
     }
