Blob Blame History Raw
From fcd5bf6aa0ab30c9b969de573ef53559f976e3a4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Mon, 29 Jun 2015 11:26:41 +0100
Subject: [PATCH] Resolves: tdf#92275 impress grinds to a halt constant
 swapping images

This reverts commit 6c84442f99de109b585d3ba8964deb8dcf261c0f.
"tdf#87820 Images not displayed properly in Calc"

and replaces it with an alternative solution

Change-Id: Iecb560d43767f0e41e442a307eefcdcecb7589ef
---
 .../sdr/contact/viewobjectcontactofgraphic.cxx      | 21 +++++++++++++--------
 1 file changed, 13 insertions(+), 8 deletions(-)

diff --git a/svx/source/sdr/contact/viewobjectcontactofgraphic.cxx b/svx/source/sdr/contact/viewobjectcontactofgraphic.cxx
index 53fc85d..ebca769 100644
--- a/svx/source/sdr/contact/viewobjectcontactofgraphic.cxx
+++ b/svx/source/sdr/contact/viewobjectcontactofgraphic.cxx
@@ -134,22 +134,30 @@ namespace sdr
                             rGrafObj.mbInsidePaint = false;
                         }
 
-                        // Invalidate paint areas.
-                        GetViewContact().ActionChanged();
-
                         bRetval = true;
                     }
                 }
             }
             else
             {
-                // it is not swapped out, somehow it was loaded. In that case, forget
+                // it is not swapped out, somehow[1] it was loaded. In that case, forget
                 // about an existing triggered event
-                if(mpAsynchLoadEvent)
+                if (mpAsynchLoadEvent)
                 {
                     // just delete it, this will remove it from the EventHandler and
                     // will trigger forgetAsynchGraphicLoadingEvent from the destructor
                     delete mpAsynchLoadEvent;
+
+                    // Invalidate paint areas.
+                    // [1] If a calc document with graphics is loaded then OnLoad will
+                    // be emitted before the graphic are due to be swapped in asynchronously
+                    // In sfx2 we generate a preview on receiving onload, which forces
+                    // the graphics to be swapped in to generate the preview. When
+                    // the timer triggers it find the graphics already swapped in. So
+                    // we should still invalidate the paint area on finding the graphic
+                    // swapped in seeing as we're still waiting in calc to draw the
+                    // graphics on receipt of their contents.
+                    GetViewContact().ActionChanged();
                 }
             }
 
@@ -189,9 +197,6 @@ namespace sdr
                         rGrafObj.mbInsidePaint = false;
                     }
 
-                    // Invalidate paint areas.
-                    GetViewContact().ActionChanged();
-
                     bRetval = true;
                 }
             }
-- 
2.4.0