Queueing a song after the queue is finished will restart the playback

This commit is contained in:
Toastie 2024-12-08 15:53:59 +13:00
parent dc9ec2dafe
commit 204db02cd9
Signed by: toastie_t0ast
GPG key ID: 27F3B6855AFD40A4

View file

@ -65,7 +65,17 @@ public sealed class MusicPlayer : IMusicPlayer
_songBuffer = new PoopyBufferImmortalized(_vc.InputLength); _songBuffer = new PoopyBufferImmortalized(_vc.InputLength);
_thread = new(async () => { await PlayLoop(); }); _thread = new(async () =>
{
try
{
await PlayLoop();
}
catch (Exception ex)
{
Log.Error(ex, "Music player thread crashed");
}
});
_thread.Start(); _thread.Start();
} }
@ -402,13 +412,25 @@ public sealed class MusicPlayer : IMusicPlayer
if (song is null) if (song is null)
return default; return default;
int index;
var wasLast = _queue.IsLast();
try
{
int index;
if (asNext) if (asNext)
return (_queue.EnqueueNext(song, queuer, out index), index); return (_queue.EnqueueNext(song, queuer, out index), index);
return (_queue.Enqueue(song, queuer, out index), index); return (_queue.Enqueue(song, queuer, out index), index);
} }
finally
{
// if (wasLast && IsStopped)
// {
// IsStopped = false;
// }
}
}
public async Task EnqueueManyAsync(IEnumerable<(string Query, MusicPlatform Platform)> queries, string queuer) public async Task EnqueueManyAsync(IEnumerable<(string Query, MusicPlatform Platform)> queries, string queuer)
{ {