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-02 10:58:46 +0200
commit08c6d3b1805e06165a85b7861c61a0c662cc8c31 (patch)
tree1819ef784a8806f75e06d74d8c464b41fac7ad79 /svx
parentbe8bf4b6cb6288161be0d2f63207711b002a36e5 (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.cxx4
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();