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);
_thread = new(async () => { await PlayLoop(); });
_thread = new(async () =>
{
try
{
await PlayLoop();
}
catch (Exception ex)
{
Log.Error(ex, "Music player thread crashed");
}
});
_thread.Start();
}
@ -402,12 +412,24 @@ public sealed class MusicPlayer : IMusicPlayer
if (song is null)
return default;
int index;
if (asNext)
return (_queue.EnqueueNext(song, queuer, out index), index);
var wasLast = _queue.IsLast();
return (_queue.Enqueue(song, queuer, out index), index);
try
{
int index;
if (asNext)
return (_queue.EnqueueNext(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)