[Libreoffice-commits] core.git: Branch 'libreoffice-5-3' - include/svx svx/source
Michael Stahl
mstahl at redhat.com
Thu Jul 20 09:21:14 UTC 2017
include/svx/svdograf.hxx | 1 +
svx/source/svdraw/svdograf.cxx | 30 ++++++++++++++++++++++++++++++
2 files changed, 31 insertions(+)
New commits:
commit 142ab1c3e452109d2e5143d26abc6f13e904d7a7
Author: Michael Stahl <mstahl at redhat.com>
Date: Wed Jul 12 15:14:48 2017 +0200
svx: make SdrGrafObj::mpReplacementGraphic swappable
These GraphicObjects clog up the GraphicManager cache so it's
effectively useless.
Round-tripping the ML bugdoc, this doesn't provide much of a
speed-up by itself, but together with the previous fix it goes from
3:00 to 1:30 (in an optimized build).
Change-Id: If52e176c790b94ffef9984be53376a34345b06e3
(cherry picked from commit c96e3e226fe4eb8f25c54cce4d653d12eda63ce2)
Reviewed-on: https://gerrit.libreoffice.org/39967
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
(cherry picked from commit c60344481a60f77ff86e7e5f1f1e952f7ba76d90)
Reviewed-on: https://gerrit.libreoffice.org/40178
diff --git a/include/svx/svdograf.hxx b/include/svx/svdograf.hxx
index 77183c301de2..6035c584e1c8 100644
--- a/include/svx/svdograf.hxx
+++ b/include/svx/svdograf.hxx
@@ -112,6 +112,7 @@ private:
bool ImpUpdateGraphicLink( bool bAsynchron = true ) const;
void ImpSetLinkedGraphic( const Graphic& rGraphic );
DECL_LINK( ImpSwapHdl, const GraphicObject*, SvStream* );
+ DECL_LINK( ReplacementSwapHdl, const GraphicObject*, SvStream* );
void onGraphicChanged();
public:
diff --git a/svx/source/svdraw/svdograf.cxx b/svx/source/svdraw/svdograf.cxx
index 4ca13f6cedb6..6f00b509ecaa 100644
--- a/svx/source/svdraw/svdograf.cxx
+++ b/svx/source/svdraw/svdograf.cxx
@@ -444,8 +444,15 @@ const GraphicObject* SdrGrafObj::GetReplacementGraphicObject() const
const_cast< SdrGrafObj* >(this)->mpReplacementGraphic = new GraphicObject(rSvgDataPtr->getReplacement());
}
else if (pGraphic->GetGraphic().getPdfData().hasElements())
+ {
// Replacement graphic for metafile + PDF is just the metafile.
const_cast<SdrGrafObj*>(this)->mpReplacementGraphic = new GraphicObject(pGraphic->GetGraphic().GetGDIMetaFile());
+ }
+ if (mpReplacementGraphic)
+ {
+ mpReplacementGraphic->SetSwapStreamHdl(
+ LINK(const_cast<SdrGrafObj*>(this), SdrGrafObj, ReplacementSwapHdl));
+ }
}
return mpReplacementGraphic;
@@ -1273,6 +1280,29 @@ void SdrGrafObj::AdjustToMaxRect( const Rectangle& rMaxRect, bool bShrinkOnly )
}
}
+IMPL_LINK(SdrGrafObj, ReplacementSwapHdl, const GraphicObject*, pO, SvStream*)
+{
+ // replacement image is always swapped
+ if (pO->IsInSwapOut())
+ {
+ SdrSwapGraphicsMode const nSwapMode(pModel->GetSwapGraphicsMode());
+ if (nSwapMode & SdrSwapGraphicsMode::TEMP)
+ {
+ return GRFMGR_AUTOSWAPSTREAM_TEMP;
+ }
+ }
+ else if (pO->IsInSwapIn())
+ {
+ return GRFMGR_AUTOSWAPSTREAM_TEMP;
+ }
+ else
+ {
+ assert(!"why is swap handler being called?");
+ }
+
+ return GRFMGR_AUTOSWAPSTREAM_NONE;
+}
+
IMPL_LINK( SdrGrafObj, ImpSwapHdl, const GraphicObject*, pO, SvStream* )
{
SvStream* pRet = GRFMGR_AUTOSWAPSTREAM_NONE;
More information about the Libreoffice-commits
mailing list