diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2015-07-01 10:55:37 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2015-07-02 10:58:46 +0200 |
commit | 08c6d3b1805e06165a85b7861c61a0c662cc8c31 (patch) | |
tree | 1819ef784a8806f75e06d74d8c464b41fac7ad79 /svx | |
parent | be8bf4b6cb6288161be0d2f63207711b002a36e5 (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(); |