Blob Blame History Raw
From a181b9e9cf669742278668dc66d6296d506962cf Mon Sep 17 00:00:00 2001
From: Andrzej Hunt <andrzej@ahunt.org>
Date: Tue, 10 Nov 2015 19:45:13 +0100
Subject: [PATCH 301/398] sd lok: ccu#1295 force async image swap

This helps ensure that images are swapped in when we actually
render tiles. Previously we'd sometimes have placeholders
instead of the image, which results in either an invalidate
(+rerender of that tile) once the image is swapped in (for
normal tiles) or a permanently missing image in the preview tiles.

Change-Id: I1a16a913faf9fad20e40a5d1aad3de187038c7a2
Reviewed-on: https://gerrit.libreoffice.org/19890
Reviewed-by: Andrzej Hunt <andrzej@ahunt.org>
Tested-by: Andrzej Hunt <andrzej@ahunt.org>
(cherry picked from commit 9125dbaf5db5bfb07f93be2cfedf43452a28ae32)
---
 sd/source/ui/unoidl/unomodel.cxx | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/sd/source/ui/unoidl/unomodel.cxx b/sd/source/ui/unoidl/unomodel.cxx
index d2c6b5e37603..9475ff56c505 100644
--- a/sd/source/ui/unoidl/unomodel.cxx
+++ b/sd/source/ui/unoidl/unomodel.cxx
@@ -2380,14 +2380,21 @@ void SdXImpressDocument::initializeForTiledRendering()
 
     mpDoc->setTiledRendering(true);
 
-    // Disable map mode, so that it's possible to send mouse event coordinates
-    // in logic units.
     if (DrawViewShell* pViewShell = GetViewShell())
     {
+        // Disable map mode, so that it's possible to send mouse event coordinates
+        // in logic units.
         if (sd::Window* pWindow = pViewShell->GetActiveWindow())
         {
             pWindow->EnableMapMode(false);
         }
+
+        // Forces all images to be swapped in synchronously, this
+        // ensures that images are available when paintTile is called
+        // (whereas with async loading images start being loaded after
+        //  we have painted the tile, resulting in an invalidate, followed
+        //  by the tile being rerendered - which is wasteful and ugly).
+        pViewShell->GetDrawView()->SetSwapAsynchron(false);
     }
     // tdf#93154: in tiled rendering LO doesn't always detect changes
     SvtMiscOptions aMiscOpt;
-- 
2.12.0