aboutsummaryrefslogtreecommitdiffhomepage
path: root/win32
diff options
context:
space:
mode:
authorNeil <nyamatongwe@gmail.com>2013-11-11 10:25:01 +1100
committerNeil <nyamatongwe@gmail.com>2013-11-11 10:25:01 +1100
commitf0ff36d2c8880120da098a9d58bd7c9077233a82 (patch)
treeb233f8670440ee7a7c37760b266bffdccebeb107 /win32
parentc6a3241048c9dd55a61eea2227b77161892f87d6 (diff)
downloadscintilla-mirror-f0ff36d2c8880120da098a9d58bd7c9077233a82.tar.gz
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.
Diffstat (limited to 'win32')
-rw-r--r--win32/ScintillaWin.cxx23
1 files changed, 10 insertions, 13 deletions
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