~gryle-devel/gryle/trunk-deleted

« back to all changes in this revision

Viewing changes to src/javazoom/jl/player/JavaSoundAudioDeviceFactory.java

  • Committer: Chris Lamb
  • Date: 2007-01-13 22:14:47 UTC
  • mfrom: (1.2.4 gryle)
  • mto: (1.2.6 gryle)
  • mto: This revision was merged to the branch mainline in revision 9.
  • Revision ID: csueaj@viglab-29-20070113221447-9rl7yytjuzuibi1g
 

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * 11/19/04             1.0 moved to LGPL.
 
3
 * 29/01/00             Initial version. mdm@techie.com
 
4
 *-----------------------------------------------------------------------
 
5
 *   This program is free software; you can redistribute it and/or modify
 
6
 *   it under the terms of the GNU Library General Public License as published
 
7
 *   by the Free Software Foundation; either version 2 of the License, or
 
8
 *   (at your option) any later version.
 
9
 *
 
10
 *   This program is distributed in the hope that it will be useful,
 
11
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 
12
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
13
 *   GNU Library General Public License for more details.
 
14
 *
 
15
 *   You should have received a copy of the GNU Library General Public
 
16
 *   License along with this program; if not, write to the Free Software
 
17
 *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
18
 *----------------------------------------------------------------------
 
19
 */
 
20
 
 
21
package javazoom.jl.player;
 
22
 
 
23
import javazoom.jl.decoder.JavaLayerException;
 
24
 
 
25
/**
 
26
 * This class is responsible for creating instances of the JavaSoundAudioDevice.
 
27
 * The audio device implementation is loaded and tested dynamically as not all
 
28
 * systems will have support for JavaSound, or they may have the incorrect
 
29
 * version.
 
30
 */
 
31
public class JavaSoundAudioDeviceFactory extends AudioDeviceFactory {
 
32
        private boolean tested = false;
 
33
 
 
34
        static private final String DEVICE_CLASS_NAME = "javazoom.jl.player.JavaSoundAudioDevice";
 
35
 
 
36
        public synchronized AudioDevice createAudioDevice()
 
37
                        throws JavaLayerException {
 
38
                if (!tested) {
 
39
                        testAudioDevice();
 
40
                        tested = true;
 
41
                }
 
42
 
 
43
                try {
 
44
                        return createAudioDeviceImpl();
 
45
                } catch (Exception ex) {
 
46
                        throw new JavaLayerException("unable to create JavaSound device: "
 
47
                                        + ex);
 
48
                } catch (LinkageError ex) {
 
49
                        throw new JavaLayerException("unable to create JavaSound device: "
 
50
                                        + ex);
 
51
                }
 
52
        }
 
53
 
 
54
        protected JavaSoundAudioDevice createAudioDeviceImpl()
 
55
                        throws JavaLayerException {
 
56
                ClassLoader loader = getClass().getClassLoader();
 
57
                try {
 
58
                        JavaSoundAudioDevice dev = (JavaSoundAudioDevice) instantiate(
 
59
                                        loader, DEVICE_CLASS_NAME);
 
60
                        return dev;
 
61
                } catch (Exception ex) {
 
62
                        throw new JavaLayerException("Cannot create JavaSound device", ex);
 
63
                } catch (LinkageError ex) {
 
64
                        throw new JavaLayerException("Cannot create JavaSound device", ex);
 
65
                }
 
66
 
 
67
        }
 
68
 
 
69
        public void testAudioDevice() throws JavaLayerException {
 
70
                JavaSoundAudioDevice dev = createAudioDeviceImpl();
 
71
                dev.test();
 
72
        }
 
73
}