private void RenderDDSurface() { if (useDirectX && directXAvailable) { surfRect = displaySurface.LockRectangle(screenRect, LockFlags.None); lock (ziggyWin.zx) { surfRect.Data.WriteRange <int>(ziggyWin.zx.ScreenBuffer, 0, (ScreenWidth) * (ScreenHeight)); } displaySurface.UnlockRectangle(); dxDevice.BeginScene(); sprite.Begin(SpriteFlags.None); dxDisplay.FilterTexture(0, Filter.None); sprite.Draw(dxDisplay, displayRect, System.Drawing.Color.White); sprite.End(); if (showScanlines) { interlaceSprite.Begin(SpriteFlags.AlphaBlend); dxDevice.SetSamplerState(0, SamplerState.AddressU, TextureAddress.Wrap); dxDevice.SetSamplerState(0, SamplerState.AddressV, TextureAddress.Wrap); interlaceSprite.Draw(interlaceOverlay2, displayRect, System.Drawing.Color.White); interlaceSprite.End(); } dxDevice.EndScene(); SlimDX.Result deviceState = dxDevice.TestCooperativeLevel(); if (deviceState == ResultCode.DeviceLost) { System.Threading.Thread.Sleep(1); return; } else if (deviceState == ResultCode.DeviceNotReset) { SetSize(Width, Height); return; } dxDevice.Present(); } isRendering = false; }