exception handlers for video decoder threads

pull/50/head
cosmonaut 2023-06-28 13:20:33 -07:00
parent 5ff7da927a
commit 1adb76d5c7
1 changed files with 12 additions and 4 deletions

View File

@ -174,7 +174,7 @@ namespace MoonWorks.Video
} }
currentFrame = thisFrame; currentFrame = thisFrame;
Task.Run(CurrentStream.ReadNextFrame); Task.Run(CurrentStream.ReadNextFrame).ContinueWith(HandleTaskException);
} }
if (CurrentStream.Ended) if (CurrentStream.Ended)
@ -182,7 +182,7 @@ namespace MoonWorks.Video
timer.Stop(); timer.Stop();
timer.Reset(); timer.Reset();
Task.Run(CurrentStream.Reset); Task.Run(CurrentStream.Reset).ContinueWith(HandleTaskException);
if (Loop) if (Loop)
{ {
@ -260,13 +260,21 @@ namespace MoonWorks.Video
private void InitializeDav1dStream() private void InitializeDav1dStream()
{ {
Task.Run(Video.StreamA.Reset); Task.Run(Video.StreamA.Reset).ContinueWith(HandleTaskException);
Task.Run(Video.StreamB.Reset); Task.Run(Video.StreamB.Reset).ContinueWith(HandleTaskException);
CurrentStream = Video.StreamA; CurrentStream = Video.StreamA;
currentFrame = -1; currentFrame = -1;
} }
private static void HandleTaskException(Task task)
{
if (task.Exception != null)
{
Logger.LogError(task.Exception.ToString());
}
}
protected virtual void Dispose(bool disposing) protected virtual void Dispose(bool disposing)
{ {
if (!disposed) if (!disposed)