[Libreoffice-commits] core.git: Branch 'feature/tiled-editing' - svx/source
Miklos Vajna
vmiklos at collabora.co.uk
Wed Apr 1 05:38:53 PDT 2015
svx/source/svdraw/svdpntv.cxx | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
New commits:
commit ff6c8114e3f0ddde8985be836e1e92c9b8e516d9
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Wed Apr 1 14:33:16 2015 +0200
SdrPaintView tiled rendering: ignore visual area
With this, a number of so far missing images properly show up in Draw
and Impress.
Images are loaded asynchronously, and the AsynchGraphicLoadingEvent is
registered in the SdrPageWindow. This means that in case the event is
registered in the temporary page window that's created by
SdrPageView::CompleteRedraw(), invoked by paintTile() call, then
chances are high that the page window will be destructed earlier than
the scheduler would execute the async event. This leads to missing
images.
Fix the problem by not ignororing Invalidate() calls depending on what
core thinks is a visible area: then the view that is an sd::Window will
also try to do the async image loading, and that will be actually
executed properly.
Change-Id: Icf5fd772b66c31d3876bf3673ba5e283c7e08083
diff --git a/svx/source/svdraw/svdpntv.cxx b/svx/source/svdraw/svdpntv.cxx
index 5c7de98..c50ba58 100644
--- a/svx/source/svdraw/svdpntv.cxx
+++ b/svx/source/svdraw/svdpntv.cxx
@@ -957,7 +957,8 @@ void SdrPaintView::InvalidateAllWin(const Rectangle& rRect, bool bPlus1Pix)
aOrg.X()=-aOrg.X(); aOrg.Y()=-aOrg.Y();
Rectangle aOutRect(aOrg, rOutDev.GetOutputSize());
- if (aRect.IsOver(aOutRect))
+ // In case of tiled rendering we want to get all invalidations, so visual area is not interesting.
+ if (aRect.IsOver(aOutRect) || GetModel()->isTiledRendering())
{
InvalidateOneWin(static_cast<vcl::Window&>(rOutDev), aRect);
}
More information about the Libreoffice-commits
mailing list