Improve viewport leak logging

Shows name

Also fixes erroneous leak logging oops
This commit is contained in:
PJB3005
2025-10-15 01:23:40 +02:00
parent feb9e1db69
commit 6fb9ff7554

View File

@@ -18,7 +18,7 @@ namespace Robust.Client.Graphics.Clyde
private long _nextViewportId = 1;
private readonly ConcurrentQueue<ViewportDisposeData> _viewportDisposeQueue = new();
private readonly ConcurrentQueue<(string? name, ViewportDisposeData data)> _viewportDisposeQueue = new();
private Viewport CreateViewport(Vector2i size, TextureSampleParameters? sampleParameters = default, string? name = null)
{
@@ -66,13 +66,14 @@ namespace Robust.Client.Graphics.Clyde
{
while (_viewportDisposeQueue.TryDequeue(out var data))
{
DisposeViewport(data);
DisposeViewport(data.data, data.name, wasLeaked: true);
}
}
private void DisposeViewport(ViewportDisposeData disposeData)
private void DisposeViewport(ViewportDisposeData disposeData, string? name = null, bool wasLeaked = false)
{
_clydeSawmill.Warning($"Viewport {disposeData.Id} got leaked");
if (wasLeaked)
_clydeSawmill.Warning($"Viewport {disposeData.Id} ({name ?? "null"}) got leaked");
_viewports.Remove(disposeData.Handle);
if (disposeData.ClearEvent is not { } clearEvent)
@@ -211,7 +212,7 @@ namespace Robust.Client.Graphics.Clyde
~Viewport()
{
_clyde._viewportDisposeQueue.Enqueue(DisposeData(referenceSelf: false));
_clyde._viewportDisposeQueue.Enqueue((Name, DisposeData(referenceSelf: false)));
}
public void Dispose()
@@ -224,7 +225,7 @@ namespace Robust.Client.Graphics.Clyde
WallBleedIntermediateRenderTarget1.Dispose();
WallBleedIntermediateRenderTarget2.Dispose();
_clyde.DisposeViewport(DisposeData(referenceSelf: false));
_clyde.DisposeViewport(DisposeData(referenceSelf: false), Name);
}
private ViewportDisposeData DisposeData(bool referenceSelf)