diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2015-07-01 10:55:37 +0200 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2015-08-06 12:52:53 +0200 |
commit | 2d4c9d0d23d17d89686852d026abfc91e26a4159 (patch) | |
tree | 3460d3f3705817b1b58ee0657b601c18f82ecf2d /svx | |
parent | 84f4d6aad770a5bfe0c21aa6c5a0180aa59ec740 (diff) |
SdrPaintWindow: no own buffer for rendercontext-enabled vcl::Windows
The buffered overlay manager paints using a timer, which is problematic
if the given vcl::Window already supports double-buffering itself, so
always use direct (to the rendercontext) painting in that case.
Change-Id: I93144c02814fd511f333224ab058374c7da369f0
(cherry picked from commit 25ade7450ce41a46094d63123eabdf32bd68c918)
Diffstat (limited to 'svx')
-rw-r--r-- | svx/source/svdraw/sdrpaintwindow.cxx | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/svx/source/svdraw/sdrpaintwindow.cxx b/svx/source/svdraw/sdrpaintwindow.cxx index e75acd8655ea..d8f0c03efacf 100644 --- a/svx/source/svdraw/sdrpaintwindow.cxx +++ b/svx/source/svdraw/sdrpaintwindow.cxx @@ -201,8 +201,9 @@ void SdrPaintWindow::impCreateOverlayManager() // is it a window? if(OUTDEV_WINDOW == GetOutputDevice().GetOutDevType()) { + vcl::Window* pWindow = dynamic_cast<vcl::Window*>(&GetOutputDevice()); // decide which OverlayManager to use - if(GetPaintView().IsBufferedOverlayAllowed() && mbUseBuffer) + if(GetPaintView().IsBufferedOverlayAllowed() && mbUseBuffer && !pWindow->SupportsDoubleBuffering()) { // buffered OverlayManager, buffers its background and refreshes from there // for pure overlay changes (no system redraw). The 3rd parameter specifies @@ -225,7 +226,6 @@ void SdrPaintWindow::impCreateOverlayManager() // Request a repaint so that the buffered overlay manager fills // its buffer properly. This is a workaround for missing buffer // updates. - vcl::Window* pWindow = dynamic_cast<vcl::Window*>(&GetOutputDevice()); if (pWindow != NULL) pWindow->Invalidate(); |