Replace `ImGuiResourceCache.BrushCache` with a single `Brush`

This commit is contained in:
YoshiRulz 2024-09-26 08:57:14 +10:00 committed by James Groom
parent fb425c9db6
commit fedd2dbb03
3 changed files with 7 additions and 13 deletions

View File

@ -14,7 +14,8 @@ namespace BizHawk.Bizware.Graphics
internal readonly IPipeline Pipeline;
internal readonly Dictionary<Bitmap, ITexture2D> TextureCache = [ ];
internal readonly Dictionary<Color, SolidBrush> BrushCache = [ ];
internal readonly SolidBrush CachedBrush = new(default);
public ImGuiResourceCache(IGL igl)
{
@ -87,14 +88,8 @@ namespace BizHawk.Bizware.Graphics
{
cachedTex.Dispose();
}
foreach (var cachedBrush in BrushCache.Values)
{
cachedBrush.Dispose();
}
CachedBrush.Dispose();
TextureCache.Clear();
BrushCache.Clear();
Pipeline?.Dispose();
}

View File

@ -9,7 +9,6 @@ using System.Runtime.InteropServices;
using ImGuiNET;
using BizHawk.Common;
using BizHawk.Common.CollectionExtensions;
using SDGraphics = System.Drawing.Graphics;
@ -262,7 +261,8 @@ namespace BizHawk.Bizware.Graphics
case DrawCallbackId.DrawString:
{
var stringArgs = (DrawStringArgs)GCHandle.FromIntPtr(cmd.UserCallbackData).Target!;
var brush = _resourceCache.BrushCache.GetValueOrPutNew1(stringArgs.Color);
var brush = _resourceCache.CachedBrush;
brush.Color = stringArgs.Color;
_stringGraphics.TextRenderingHint = stringArgs.TextRenderingHint;
_stringGraphics.DrawString(stringArgs.Str, stringArgs.Font, brush, stringArgs.X, stringArgs.Y, stringArgs.Format);

View File

@ -3,8 +3,6 @@ using System.Runtime.InteropServices;
using ImGuiNET;
using BizHawk.Common.CollectionExtensions;
using static SDL2.SDL;
#pragma warning disable BHI1007 // target-typed Exception TODO don't
@ -178,7 +176,8 @@ namespace BizHawk.Bizware.Graphics
case DrawCallbackId.DrawString:
{
var stringArgs = (DrawStringArgs)GCHandle.FromIntPtr(cmd.UserCallbackData).Target!;
var brush = _resourceCache.BrushCache.GetValueOrPutNew1(stringArgs.Color);
var brush = _resourceCache.CachedBrush;
brush.Color = stringArgs.Color;
_stringGraphics.TextRenderingHint = stringArgs.TextRenderingHint;
_stringGraphics.DrawString(stringArgs.Str, stringArgs.Font, brush, stringArgs.X, stringArgs.Y, stringArgs.Format);