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-01 11:22:40 +0200 |
commit | 25ade7450ce41a46094d63123eabdf32bd68c918 (patch) | |
tree | d8cab0f6df9ed38a9d5db1273cb4f93a33bf4c15 /svx | |
parent | 7df3879d3f6222b840724ae748bdf8bf6a7af9f1 (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
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 b735127bf4c5..c583558b8aa6 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(); |