d3d display method: fix 2nd ctrl alt del

This commit is contained in:
zeromus 2016-12-19 21:22:39 -06:00
parent 138f7b140d
commit a0495b5090
1 changed files with 21 additions and 12 deletions

View File

@ -874,21 +874,30 @@ namespace BizHawk.Bizware.BizwareGL.Drivers.SlimDX
var tw = new TextureWrapper() { Texture = d3dtex };
var tex = new Texture2d(this, tw, w, h);
RenderTarget rt = new RenderTarget(this, tw, tex);
ResetHandlers.Add(rt, "RenderTarget",
() =>
{
d3dtex.Dispose();
tw.Texture = null;
},
() =>
{
d3dtex = new d3d9.Texture(dev, w, h, 1, d3d9.Usage.RenderTarget, d3d9.Format.A8R8G8B8, d3d9.Pool.Default);
tw.Texture = d3dtex;
}
);
ResetHandlers.Add(rt, "RenderTarget", () => ResetRenderTarget(rt), () => RestoreRenderTarget(rt));
return rt;
}
void ResetRenderTarget(RenderTarget rt)
{
var tw = rt.Texture2d.Opaque as TextureWrapper;
tw.Texture.Dispose();
tw.Texture = null;
}
void RestoreRenderTarget(RenderTarget rt)
{
var tw = rt.Texture2d.Opaque as TextureWrapper;
int w = rt.Texture2d.IntWidth;
int h = rt.Texture2d.IntHeight;
var d3dtex = new d3d9.Texture(dev, w, h, 1, d3d9.Usage.RenderTarget, d3d9.Format.A8R8G8B8, d3d9.Pool.Default);
tw.Texture = d3dtex;
//i know it's weird, we have to re-add ourselves to the list
//bad design..
ResetHandlers.Add(rt, "RenderTarget", () => ResetRenderTarget(rt), () => RestoreRenderTarget(rt));
}
public void BindRenderTarget(RenderTarget rt)
{
_CurrRenderTarget = rt;