void ResetDevice(GLControlWrapper_SlimDX9 control) { SuspendRenderTargets(); FreeControlSwapChain(control); for (; ;) { var result = dev.TestCooperativeLevel(); if (result.IsSuccess) { break; } if (result.Code == D3DERR_DEVICENOTRESET) { try { var pp = MakePresentParameters(); dev.Reset(pp); break; } catch { } } System.Threading.Thread.Sleep(100); } RefreshControlSwapChain(control); ResumeRenderTargets(); }
public void BeginControl(GLControlWrapper_SlimDX9 control) { _CurrentControl = control; //don't dispose this backbuffer reference, even though it's tempting to. //it results in weird flashes of corruption when changing the vsync setting (unproven; it's another similar code sequence that broke it) dev.SetRenderTarget(0, _CurrentControl.SwapChain.GetBackBuffer(0)); }
public void RefreshControlSwapChain(GLControlWrapper_SlimDX9 control) { if (control.SwapChain != null) { control.SwapChain.Dispose(); control.SwapChain = null; } ResetHandlers.Remove(control, "SwapChain"); var pp = new PresentParameters { BackBufferWidth = Math.Max(8, control.ClientSize.Width), BackBufferHeight = Math.Max(8, control.ClientSize.Height), BackBufferCount = 1, BackBufferFormat = Format.X8R8G8B8, DeviceWindowHandle = control.Handle, Windowed = true, PresentationInterval = control.Vsync ? PresentInterval.One : PresentInterval.Immediate }; control.SwapChain = new SwapChain(dev, pp); ResetHandlers.Add(control, "SwapChain", () => { control.SwapChain.Dispose(); control.SwapChain = null; }, () => RefreshControlSwapChain(control)); }
public IGraphicsControl Internal_CreateGraphicsControl() { var ret = new GLControlWrapper_SlimDX9(this); RefreshControlSwapChain(ret); return(ret); }
public void BeginControl(GLControlWrapper_SlimDX9 control) { _CurrentControl = control; var bb = control.SwapChain.GetBackBuffer(0); dev.SetRenderTarget(0, bb); bb.Dispose(); }
public void FreeControlSwapChain(GLControlWrapper_SlimDX9 control) { if (control.SwapChain != null) { control.SwapChain.Dispose(); control.SwapChain = null; } }
public void EndControl(GLControlWrapper_SlimDX9 control) { if (control != _CurrentControl) { throw new InvalidOperationException(); } _CurrentControl = null; }
public void BeginControl(GLControlWrapper_SlimDX9 control) { _CurrentControl = control; //this dispose isnt strictly needed but it seems benign var surface = _CurrentControl.SwapChain.GetBackBuffer(0); dev.SetRenderTarget(0, surface); surface.Dispose(); }
public void EndControl(GLControlWrapper_SlimDX9 control) { if (control != _CurrentControl) { throw new InvalidOperationException(); } dev.SetRenderTarget(0, devBB); _CurrentControl = null; }
public void EndControl(GLControlWrapper_SlimDX9 control) { if (control != _CurrentControl) { throw new InvalidOperationException(); } //don't dispose this backbuffer reference, even though it's tempting to. //it results in weird flashes of corruption when changing the vsync setting (unproven; it's another similar code sequence that broke it) dev.SetRenderTarget(0, dev.GetBackBuffer(0, 0)); _CurrentControl = null; }
public void EndControl(GLControlWrapper_SlimDX9 control) { if (control != _CurrentControl) { throw new InvalidOperationException(); } var surface = _CurrentControl.SwapChain.GetBackBuffer(0); dev.SetRenderTarget(0, surface); surface.Dispose(); _CurrentControl = null; }
public void EndControl(GLControlWrapper_SlimDX9 control) { if (control != _CurrentControl) { throw new InvalidOperationException(); } var bb = dev.GetBackBuffer(0, 0); dev.SetRenderTarget(0, bb); bb.Dispose(); _CurrentControl = null; }
public void SwapControl(GLControlWrapper_SlimDX9 control) { EndControl(control); try { var result = control.SwapChain.Present(Present.None); } catch (d3d9.Direct3D9Exception ex) { if (ex.ResultCode.Name == "D3DERR_DEVICELOST") { ResetDevice(); } } }
public void SwapControl(GLControlWrapper_SlimDX9 control) { EndControl(control); try { var result = control.SwapChain.Present(Present.None); //var rs = dev.GetRasterStatus(0); } catch (d3d9.Direct3D9Exception ex) { if (ex.ResultCode.Code == D3DERR_DEVICELOST) { ResetDevice(control); } } }
public void RefreshControlSwapChain(GLControlWrapper_SlimDX9 control) { FreeControlSwapChain(control); var pp = new PresentParameters { BackBufferWidth = Math.Max(8, control.ClientSize.Width), BackBufferHeight = Math.Max(8, control.ClientSize.Height), BackBufferCount = 1, BackBufferFormat = Format.X8R8G8B8, DeviceWindowHandle = control.Handle, Windowed = true, PresentationInterval = control.Vsync ? PresentInterval.One : PresentInterval.Immediate }; control.SwapChain = new SwapChain(dev, pp); }
public void BeginControl(GLControlWrapper_SlimDX9 control) { _CurrentControl = control; dev.SetRenderTarget(0, control.SwapChain.GetBackBuffer(0)); }
public void BeginControl(GLControlWrapper_SlimDX9 control) { }
public void EndControl(GLControlWrapper_SlimDX9 control) { }
public void SwapControl(GLControlWrapper_SlimDX9 control) { }
public IGraphicsControl Internal_CreateGraphicsControl() { var ret = new GLControlWrapper_SlimDX9(this); RefreshControlSwapChain(ret); return ret; }
public void EndControl(GLControlWrapper_SlimDX9 control) { if (control != _CurrentControl) throw new InvalidOperationException(); var bb = dev.GetBackBuffer(0,0); dev.SetRenderTarget(0,bb); bb.Dispose(); _CurrentControl = null; }
public void SwapControl(GLControlWrapper_SlimDX9 control) { EndControl(control); try { var result = control.SwapChain.Present(Present.None); } catch(d3d9.Direct3D9Exception ex) { if (ex.ResultCode.Name == "D3DERR_DEVICELOST") ResetDevice(); } }
public void SwapControl(GLControlWrapper_SlimDX9 control) { control.SwapChain.Present(Present.None); }
public void EndControl(GLControlWrapper_SlimDX9 control) { if (control != _CurrentControl) throw new InvalidOperationException(); _CurrentControl = null; }
public void EndControl(GLControlWrapper_SlimDX9 control) { if (control != _CurrentControl) throw new InvalidOperationException(); dev.SetRenderTarget(0, devBB); _CurrentControl = null; }
public void RefreshControlSwapChain(GLControlWrapper_SlimDX9 control) { if (control.SwapChain != null) { control.SwapChain.Dispose(); control.SwapChain = null; } ResetHandlers.Remove(control, "SwapChain"); var pp = new PresentParameters { BackBufferWidth = Math.Max(8,control.ClientSize.Width), BackBufferHeight = Math.Max(8, control.ClientSize.Height), BackBufferCount = 2, BackBufferFormat = Format.X8R8G8B8, DeviceWindowHandle = control.Handle, Windowed = true, PresentationInterval = control.Vsync ? PresentInterval.One : PresentInterval.Immediate }; control.SwapChain = new SwapChain(dev, pp); ResetHandlers.Add(control, "SwapChain", () => { control.SwapChain.Dispose(); control.SwapChain = null; }, () => RefreshControlSwapChain(control)); }