diff options
author | tagezi <lera.goncharuk@gmail.com> | 2017-12-06 21:23:37 +0200 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2017-12-07 11:19:09 +0100 |
commit | 89853de3231e92a17a646acb7f99584220fadad8 (patch) | |
tree | ff4468ff442e6fea24d6cbd4e7f0ae0a8770c5d0 /writerfilter | |
parent | b4e51cdaf859dfffee0561c51a72eb5c73ee23f4 (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>
(cherry picked from commit 58e4b36ace484f2743a3b9919d830c175464b05d)
Reviewed-on: https://gerrit.libreoffice.org/46006
Diffstat (limited to 'writerfilter')
-rw-r--r-- | writerfilter/source/ooxml/OOXMLDocumentImpl.cxx | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/writerfilter/source/ooxml/OOXMLDocumentImpl.cxx b/writerfilter/source/ooxml/OOXMLDocumentImpl.cxx index 44552eee5e5f..b905d8968a15 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() |