summaryrefslogtreecommitdiff
path: root/svx
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2015-07-01 10:55:37 +0200
committerMiklos Vajna <vmiklos@collabora.co.uk>2015-07-01 11:22:40 +0200
commit25ade7450ce41a46094d63123eabdf32bd68c918 (patch)
treed8cab0f6df9ed38a9d5db1273cb4f93a33bf4c15 /svx
parent7df3879d3f6222b840724ae748bdf8bf6a7af9f1 (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.cxx4
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();