Merge branch 'master' into imgui-bindings

This commit is contained in:
Kaz Wolfe 2025-07-03 19:02:35 -07:00
commit f63ee5cb76
No known key found for this signature in database
GPG key ID: 258813F53A16EBB4
27 changed files with 399 additions and 290 deletions

View file

@ -65,7 +65,7 @@ internal sealed class DelegateFontHandle : FontHandle
var key = new DelegateFontHandle(this, buildStepDelegate);
lock (this.syncRoot)
this.handles.Add(key);
this.RebuildRecommend?.Invoke();
this.RebuildRecommend.InvokeSafely();
return key;
}

View file

@ -384,7 +384,7 @@ internal sealed partial class FontAtlasFactory
if (this.disposed)
return;
this.BeforeDispose?.InvokeSafely(this);
this.BeforeDispose.InvokeSafely(this);
try
{
@ -398,25 +398,11 @@ internal sealed partial class FontAtlasFactory
this.disposables.Dispose();
}
try
{
this.AfterDispose?.Invoke(this, null);
}
catch
{
// ignore
}
this.AfterDispose.InvokeSafely(this, null);
}
catch (Exception e)
{
try
{
this.AfterDispose?.Invoke(this, e);
}
catch
{
// ignore
}
this.AfterDispose.InvokeSafely(this, e);
}
GC.SuppressFinalize(this);
@ -826,7 +812,7 @@ internal sealed partial class FontAtlasFactory
this.factory.Framework.RunOnFrameworkThread(
() =>
{
this.RebuildRecommend?.InvokeSafely();
this.RebuildRecommend.InvokeSafely();
switch (this.AutoRebuildMode)
{

View file

@ -77,13 +77,16 @@ internal abstract class FontHandle : IFontHandle
/// <param name="font">The font, locked during the call of <see cref="ImFontChanged"/>.</param>
public void InvokeImFontChanged(ILockedImFont font)
{
try
foreach (var d in Delegate.EnumerateInvocationList(this.ImFontChanged))
{
this.ImFontChanged?.Invoke(this, font);
}
catch (Exception e)
{
Log.Error(e, $"{nameof(this.InvokeImFontChanged)}: error");
try
{
d(this, font);
}
catch (Exception e)
{
Log.Error(e, $"{nameof(this.InvokeImFontChanged)}: error calling {d.Method.Name}");
}
}
}

View file

@ -149,7 +149,7 @@ internal class GamePrebakedFontHandle : FontHandle
}
if (suggestRebuild)
this.RebuildRecommend?.Invoke();
this.RebuildRecommend.InvokeSafely();
return handle;
}