summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortagezi <lera.goncharuk@gmail.com>2017-12-06 21:23:37 +0200
committerMike Kaganski <mike.kaganski@collabora.com>2017-12-07 08:26:49 +0100
commit58e4b36ace484f2743a3b9919d830c175464b05d (patch)
tree82411be8f430dafb2b3bf5f060ad47b167104469
parent8169a0e5a10defde3e0f53137734fd06ffca85d7 (diff)
tdf#104650 Creating guard to reset status indicator
Change-Id: Ic1e79badedc031a588c0b07958002ad7c558ba82 Reviewed-on: https://gerrit.libreoffice.org/45987 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
-rw-r--r--writerfilter/source/ooxml/OOXMLDocumentImpl.cxx25
1 files changed, 22 insertions, 3 deletions
diff --git a/writerfilter/source/ooxml/OOXMLDocumentImpl.cxx b/writerfilter/source/ooxml/OOXMLDocumentImpl.cxx
index 2223b2a6c61c..c23aa86b464a 100644
--- a/writerfilter/source/ooxml/OOXMLDocumentImpl.cxx
+++ b/writerfilter/source/ooxml/OOXMLDocumentImpl.cxx
@@ -417,8 +417,30 @@ void OOXMLDocumentImpl::resolveFooter(Stream & rStream,
}
}
+namespace {
+// Ensures that the indicator is reset after exiting OOXMLDocumentImpl::resolve
+class StatusIndicatorGuard{
+public:
+ explicit StatusIndicatorGuard(css::uno::Reference<css::task::XStatusIndicator>& xStatusIndicator)
+ :mxStatusIndicator(xStatusIndicator)
+ {
+ }
+
+ ~StatusIndicatorGuard()
+ {
+ if (mxStatusIndicator.is())
+ mxStatusIndicator->end();
+ }
+
+private:
+ css::uno::Reference<css::task::XStatusIndicator> mxStatusIndicator;
+};
+}
+
void OOXMLDocumentImpl::resolve(Stream & rStream)
{
+ StatusIndicatorGuard aStatusIndicatorGuard(mxStatusIndicator);
+
if (utl::MediaDescriptor(maMediaDescriptor).getUnpackedValueOrDefault("ReadGlossaries", false))
{
resolveFastSubStream(rStream, OOXMLStream::GLOSSARY);
@@ -515,9 +537,6 @@ void OOXMLDocumentImpl::resolve(Stream & rStream)
"OOXMLDocumentImpl::resolve(): non-UNO exception");
}
}
-
- if (mxStatusIndicator.is())
- mxStatusIndicator->end();
}
void OOXMLDocumentImpl::incrementProgress()