--- old/src/java.desktop/share/classes/com/sun/media/sound/SoftSynthesizer.java 2016-08-12 17:02:57.000000000 +0300 +++ new/src/java.desktop/share/classes/com/sun/media/sound/SoftSynthesizer.java 2016-08-12 17:02:57.000000000 +0300 @@ -78,16 +78,17 @@ public SourceDataLine sourceDataLine = null; public volatile long silent_samples = 0; private int framesize = 0; - private WeakReference weak_stream_link; - private AudioFloatConverter converter; + private final WeakReference weak_stream_link; + private final AudioFloatConverter converter; private float[] silentbuffer = null; - private int samplesize; + private final int samplesize; public void setInputStream(AudioInputStream stream) { this.stream = stream; } + @Override public int available() throws IOException { AudioInputStream local_stream = stream; if(local_stream != null) @@ -95,6 +96,7 @@ return 0; } + @Override public int read() throws IOException { byte[] b = new byte[1]; if (read(b) == -1) @@ -102,6 +104,7 @@ return b[0] & 0xFF; } + @Override public int read(byte[] b, int off, int len) throws IOException { AudioInputStream local_stream = stream; if(local_stream != null) @@ -123,6 +126,7 @@ SoftAudioPusher _pusher = pusher; AudioInputStream _jitter_stream = jitter_stream; SourceDataLine _sourceDataLine = sourceDataLine; + @Override public void run() { _pusher.stop(); @@ -147,7 +151,7 @@ public WeakAudioStream(AudioInputStream stream) { this.stream = stream; - weak_stream_link = new WeakReference(stream); + weak_stream_link = new WeakReference<>(stream); converter = AudioFloatConverter.getConverter(stream.getFormat()); samplesize = stream.getFormat().getFrameSize() / stream.getFormat().getChannels(); framesize = stream.getFormat().getFrameSize(); @@ -158,6 +162,7 @@ return new AudioInputStream(this, stream.getFormat(), AudioSystem.NOT_SPECIFIED); } + @Override public void close() throws IOException { AudioInputStream astream = weak_stream_link.get(); @@ -233,14 +238,10 @@ private SoftMainMixer mainmixer; private SoftVoice[] voices; - private Map tunings - = new HashMap(); - private Map inslist - = new HashMap(); - private Map loadedlist - = new HashMap(); - - private ArrayList recvslist = new ArrayList(); + private final Map tunings = new HashMap<>(); + private final Map inslist = new HashMap<>(); + private final Map loadedlist = new HashMap<>(); + private final ArrayList recvslist = new ArrayList<>(); private void getBuffers(ModelInstrument instrument, List buffers) { @@ -264,7 +265,7 @@ private boolean loadSamples(List instruments) { if (largemode) return true; - List buffers = new ArrayList(); + List buffers = new ArrayList<>(); for (ModelInstrument instrument : instruments) getBuffers(instrument, buffers); try { @@ -485,24 +486,28 @@ return tuning; } + @Override public long getLatency() { synchronized (control_mutex) { return latency; } } + @Override public AudioFormat getFormat() { synchronized (control_mutex) { return format; } } + @Override public int getMaxPolyphony() { synchronized (control_mutex) { return maxpoly; } } + @Override public MidiChannel[] getChannels() { synchronized (control_mutex) { @@ -525,6 +530,7 @@ } } + @Override public VoiceStatus[] getVoiceStatus() { if (!isOpen()) { VoiceStatus[] tempVoiceStatusArray @@ -559,6 +565,7 @@ } } + @Override public boolean isSoundbankSupported(Soundbank soundbank) { for (Instrument ins: soundbank.getInstruments()) if (!(ins instanceof ModelInstrument)) @@ -566,16 +573,18 @@ return true; } + @Override public boolean loadInstrument(Instrument instrument) { if (instrument == null || (!(instrument instanceof ModelInstrument))) { throw new IllegalArgumentException("Unsupported instrument: " + instrument); } - List instruments = new ArrayList(); + List instruments = new ArrayList<>(); instruments.add((ModelInstrument)instrument); return loadInstruments(instruments); } + @Override public void unloadInstrument(Instrument instrument) { if (instrument == null || (!(instrument instanceof ModelInstrument))) { throw new IllegalArgumentException("Unsupported instrument: " + @@ -596,6 +605,7 @@ } } + @Override public boolean remapInstrument(Instrument from, Instrument to) { if (from == null) @@ -623,15 +633,16 @@ } } + @Override public Soundbank getDefaultSoundbank() { synchronized (SoftSynthesizer.class) { if (defaultSoundBank != null) return defaultSoundBank; - List> actions = - new ArrayList>(); + List> actions = new ArrayList<>(); actions.add(new PrivilegedAction() { + @Override public InputStream run() { File javahome = new File(System.getProperties() .getProperty("java.home")); @@ -667,6 +678,7 @@ }); actions.add(new PrivilegedAction() { + @Override public InputStream run() { if (System.getProperties().getProperty("os.name") .startsWith("Linux")) { @@ -701,6 +713,7 @@ }); actions.add(new PrivilegedAction() { + @Override public InputStream run() { if (System.getProperties().getProperty("os.name") .startsWith("Windows")) { @@ -718,6 +731,7 @@ }); actions.add(new PrivilegedAction() { + @Override public InputStream run() { /* * Try to load saved generated soundbank @@ -798,6 +812,7 @@ return defaultSoundBank; } + @Override public Instrument[] getAvailableInstruments() { Soundbank defsbk = getDefaultSoundbank(); if (defsbk == null) @@ -807,6 +822,7 @@ return inslist_array; } + @Override public Instrument[] getLoadedInstruments() { if (!isOpen()) return new Instrument[0]; @@ -820,8 +836,9 @@ } } + @Override public boolean loadAllInstruments(Soundbank soundbank) { - List instruments = new ArrayList(); + List instruments = new ArrayList<>(); for (Instrument ins: soundbank.getInstruments()) { if (ins == null || !(ins instanceof ModelInstrument)) { throw new IllegalArgumentException( @@ -832,6 +849,7 @@ return loadInstruments(instruments); } + @Override public void unloadAllInstruments(Soundbank soundbank) { if (soundbank == null || !isSoundbankSupported(soundbank)) throw new IllegalArgumentException("Unsupported soundbank: " + soundbank); @@ -846,8 +864,9 @@ } } + @Override public boolean loadInstruments(Soundbank soundbank, Patch[] patchList) { - List instruments = new ArrayList(); + List instruments = new ArrayList<>(); for (Patch patch: patchList) { Instrument ins = soundbank.getInstrument(patch); if (ins == null || !(ins instanceof ModelInstrument)) { @@ -859,6 +878,7 @@ return loadInstruments(instruments); } + @Override public void unloadInstruments(Soundbank soundbank, Patch[] patchList) { if (soundbank == null || !isSoundbankSupported(soundbank)) throw new IllegalArgumentException("Unsupported soundbank: " + soundbank); @@ -874,6 +894,7 @@ } } + @Override public MidiDevice.Info getDeviceInfo() { return info; } @@ -901,9 +922,9 @@ }); } + @Override public AudioSynthesizerPropertyInfo[] getPropertyInfo(Map info) { - List list = - new ArrayList(); + List list = new ArrayList<>(); AudioSynthesizerPropertyInfo item; @@ -1058,6 +1079,7 @@ return items; } + @Override public void open() throws MidiUnavailableException { if (isOpen()) { synchronized (control_mutex) { @@ -1068,6 +1090,7 @@ open(null, null); } + @Override public void open(SourceDataLine line, Map info) throws MidiUnavailableException { if (isOpen()) { synchronized (control_mutex) { @@ -1162,8 +1185,9 @@ } } + @Override public AudioInputStream openStream(AudioFormat targetFormat, - Map info) throws MidiUnavailableException { + Map info) throws MidiUnavailableException { if (isOpen()) throw new MidiUnavailableException("Synthesizer is already open"); @@ -1243,6 +1267,7 @@ } } + @Override public void close() { if (!isOpen()) @@ -1301,12 +1326,14 @@ } } + @Override public boolean isOpen() { synchronized (control_mutex) { return open; } } + @Override public long getMicrosecondPosition() { if (!isOpen()) @@ -1317,14 +1344,17 @@ } } + @Override public int getMaxReceivers() { return -1; } + @Override public int getMaxTransmitters() { return 0; } + @Override public Receiver getReceiver() throws MidiUnavailableException { synchronized (control_mutex) { @@ -1335,25 +1365,29 @@ } } + @Override public List getReceivers() { synchronized (control_mutex) { - ArrayList recvs = new ArrayList(); + ArrayList recvs = new ArrayList<>(); recvs.addAll(recvslist); return recvs; } } + @Override public Transmitter getTransmitter() throws MidiUnavailableException { throw new MidiUnavailableException("No transmitter available"); } + @Override public List getTransmitters() { - return new ArrayList(); + return new ArrayList<>(); } + @Override public Receiver getReceiverReferenceCounting() throws MidiUnavailableException { @@ -1367,6 +1401,7 @@ return getReceiver(); } + @Override public Transmitter getTransmitterReferenceCounting() throws MidiUnavailableException {