From f0ff36d2c8880120da098a9d58bd7c9077233a82 Mon Sep 17 00:00:00 2001 From: Neil Date: Mon, 11 Nov 2013 10:25:01 +1100 Subject: When Direct2D returns D2DERR_RECREATE_TARGET handle by complete redraw instead of trying to redraw just the initially required area. Reported to eliminate black window contents after system Lock and similar actions. --- win32/ScintillaWin.cxx | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) (limited to 'win32') diff --git a/win32/ScintillaWin.cxx b/win32/ScintillaWin.cxx index 2ddc3944f..7bc05eec8 100644 --- a/win32/ScintillaWin.cxx +++ b/win32/ScintillaWin.cxx @@ -600,19 +600,16 @@ LRESULT ScintillaWin::WndPaint(uptr_t wParam) { } } else { #if defined(USE_D2D) - for (int attempt=0;attempt<2;attempt++) { - EnsureRenderTarget(); - AutoSurface surfaceWindow(pRenderTarget, this); - if (surfaceWindow) { - pRenderTarget->BeginDraw(); - Paint(surfaceWindow, rcPaint); - surfaceWindow->Release(); - HRESULT hr = pRenderTarget->EndDraw(); - if (hr == D2DERR_RECREATE_TARGET) { - DropRenderTarget(); - } else { - break; - } + EnsureRenderTarget(); + AutoSurface surfaceWindow(pRenderTarget, this); + if (surfaceWindow) { + pRenderTarget->BeginDraw(); + Paint(surfaceWindow, rcPaint); + surfaceWindow->Release(); + HRESULT hr = pRenderTarget->EndDraw(); + if (hr == D2DERR_RECREATE_TARGET) { + DropRenderTarget(); + paintState = paintAbandoned; } } #endif -- cgit v1.2.3