Queueing a song after the queue is finished will restart the playback
This commit is contained in:
parent
dc9ec2dafe
commit
204db02cd9
1 changed files with 27 additions and 5 deletions
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue