mirror of
https://github.com/babalae/better-genshin-impact.git
synced 2026-05-21 09:45:48 +08:00
静态化SharpDX.Direct3D11.Device的实例、恢复GraphicsCapture.cs的Stop方法中被注释的清理frame的代码,以期降低WGC反复启停的时观察到的内存泄漏;WGC方法传入的截图似乎是4通道的,paddle吃不进,故做4转3处理 (#1386)
This commit is contained in:
@@ -312,18 +312,18 @@ public class GraphicsCapture : IGameCapture
|
||||
IsCapturing = false;
|
||||
|
||||
// 释放最新帧
|
||||
// _frameAccessLock.EnterWriteLock();
|
||||
// try
|
||||
// {
|
||||
// _latestFrame?.Dispose();
|
||||
// _latestFrame = null;
|
||||
// }
|
||||
// finally
|
||||
// {
|
||||
// _frameAccessLock.ExitWriteLock();
|
||||
// }
|
||||
//
|
||||
// _frameAccessLock.Dispose();
|
||||
_frameAccessLock.EnterWriteLock();
|
||||
try
|
||||
{
|
||||
_latestFrame?.Dispose();
|
||||
_latestFrame = null;
|
||||
}
|
||||
finally
|
||||
{
|
||||
_frameAccessLock.ExitWriteLock();
|
||||
}
|
||||
|
||||
_frameAccessLock.Dispose();
|
||||
}
|
||||
|
||||
private void CaptureItemOnClosed(GraphicsCaptureItem sender, object args)
|
||||
|
||||
@@ -46,9 +46,11 @@ public static class Direct3D11Helper
|
||||
return CreateDevice(false);
|
||||
}
|
||||
|
||||
private static SharpDX.Direct3D11.Device? d3dDevice;
|
||||
|
||||
public static IDirect3DDevice CreateDevice(bool useWARP)
|
||||
{
|
||||
var d3dDevice = new SharpDX.Direct3D11.Device(
|
||||
d3dDevice ??= new SharpDX.Direct3D11.Device(
|
||||
useWARP ? SharpDX.Direct3D.DriverType.Software : SharpDX.Direct3D.DriverType.Hardware,
|
||||
SharpDX.Direct3D11.DeviceCreationFlags.BgraSupport);
|
||||
var device = CreateDirect3DDeviceFromSharpDXDevice(d3dDevice);
|
||||
|
||||
Reference in New Issue
Block a user