Make MusicHandler track ending behaviour more constistent.
This commit is contained in:
parent
5ec62d4d43
commit
3da1c95453
|
@ -38,7 +38,7 @@ public class MusicHandler implements AudioSendHandler, Closeable, Consumer<Track
|
|||
this.nowPlayingConsumer = nowPlayingConsumer;
|
||||
}
|
||||
|
||||
private Track currentTrack;
|
||||
// private Track currentTrack;
|
||||
// private TrackPlayer player;
|
||||
private final List<TrackPlayer> playingTracks = new ArrayList<>();
|
||||
|
||||
|
@ -61,6 +61,16 @@ public class MusicHandler implements AudioSendHandler, Closeable, Consumer<Track
|
|||
|
||||
public void playOver(Track track)
|
||||
{
|
||||
if (!isPlaying())
|
||||
play(track);
|
||||
try
|
||||
{
|
||||
TrackPlayer player = new TrackPlayer(track);
|
||||
playingTracks.add(player);
|
||||
} catch (UnsupportedAudioFileException | IOException ex)
|
||||
{
|
||||
Logger.getLogger(Chords.class.getName()).log(Level.SEVERE, null, ex);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -71,7 +81,9 @@ public class MusicHandler implements AudioSendHandler, Closeable, Consumer<Track
|
|||
|
||||
public boolean play(Track track, boolean immediate)
|
||||
{
|
||||
if (track == currentTrack)
|
||||
if (playingTracks.stream().anyMatch((t) -> t.getTrack() == track))
|
||||
return false;
|
||||
if (track == null)
|
||||
return false;
|
||||
|
||||
if (immediate)
|
||||
|
@ -82,30 +94,19 @@ public class MusicHandler implements AudioSendHandler, Closeable, Consumer<Track
|
|||
|
||||
try
|
||||
{
|
||||
if (currentTrack != null)
|
||||
{
|
||||
if (!currentTrack.isKept())
|
||||
currentTrack.delete();
|
||||
currentTrack = null;
|
||||
}
|
||||
currentTrack = track;
|
||||
if (nowPlayingConsumer != null)
|
||||
nowPlayingConsumer.accept(currentTrack);
|
||||
if (currentTrack == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
nowPlayingConsumer.accept(track);
|
||||
|
||||
// System.out.println("Playing track " + currentTrack.getLocation().getAbsolutePath());
|
||||
arrayErr = false;
|
||||
byteCount = 3840;
|
||||
TrackPlayer player = new TrackPlayer(currentTrack);
|
||||
TrackPlayer player = new TrackPlayer(track);
|
||||
playingTracks.add(player);
|
||||
// System.out.println("Queue filled to " + audioBuffer.getCurrentNumberOfBytes());
|
||||
return true;
|
||||
} catch (UnsupportedAudioFileException | IOException ex)
|
||||
{
|
||||
Logger.getLogger(Chords.class.getName()).log(Level.SEVERE, null, ex);
|
||||
currentTrack = null;
|
||||
requestTrack();
|
||||
} finally
|
||||
{
|
||||
|
@ -179,6 +180,12 @@ public class MusicHandler implements AudioSendHandler, Closeable, Consumer<Track
|
|||
// outOfInput = true;
|
||||
}
|
||||
}
|
||||
for (TrackPlayer emptyPlayer : emptyPlayers)
|
||||
{
|
||||
if (!emptyPlayer.getTrack().isKept())
|
||||
emptyPlayer.getTrack().delete();
|
||||
emptyPlayer.getTrack().clearInputStream();
|
||||
}
|
||||
playingTracks.removeAll(emptyPlayers);
|
||||
ret.put(mixBuffers(mixes));
|
||||
if (outOfInput)
|
||||
|
@ -198,7 +205,9 @@ public class MusicHandler implements AudioSendHandler, Closeable, Consumer<Track
|
|||
|
||||
public Track getCurrentTrack()
|
||||
{
|
||||
return currentTrack;
|
||||
if (playingTracks.isEmpty())
|
||||
return null;
|
||||
return playingTracks.get(0).getTrack();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -251,7 +260,6 @@ public class MusicHandler implements AudioSendHandler, Closeable, Consumer<Track
|
|||
if (!isPlaying())
|
||||
return false;
|
||||
playingTracks.clear();
|
||||
currentTrack = null;
|
||||
requestTrack();
|
||||
return true;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue