include/xmloff/ProgressBarHelper.hxx | 1 + xmloff/source/core/ProgressBarHelper.cxx | 11 ++++++++--- 2 files changed, 9 insertions(+), 3 deletions(-)
New commits: commit b79cecdb51832e2bc40d45a8bc5155cb44c3ec95 Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Fri May 27 14:00:23 2016 +0200 xmloff: only update the progressbar twice for every percent This restores the state before commit e1b78d36008d1fd188ca8dc154ad069d3476520c (#95181#; call the setValue method of the XStatusIndicator as often as possible to enable reschedule, 2001-11-26), which doesn't seem to be necessary anymore, perhaps due to the current scheduler that has priorities. Change-Id: I7136b20f1c64e267b0b4a35bbe2564e5163d9468 diff --git a/include/xmloff/ProgressBarHelper.hxx b/include/xmloff/ProgressBarHelper.hxx index 7eeed4e..6af3603 100644 --- a/include/xmloff/ProgressBarHelper.hxx +++ b/include/xmloff/ProgressBarHelper.hxx @@ -36,6 +36,7 @@ class XMLOFF_DLLPUBLIC ProgressBarHelper sal_Int32 nRange; sal_Int32 nReference; sal_Int32 nValue; + double fOldPercent; bool bStrict; // #96469#; if the value goes over the Range the progressbar starts again bool bRepeat; diff --git a/xmloff/source/core/ProgressBarHelper.cxx b/xmloff/source/core/ProgressBarHelper.cxx index 719ab80..2419ecf2 100644 --- a/xmloff/source/core/ProgressBarHelper.cxx +++ b/xmloff/source/core/ProgressBarHelper.cxx @@ -25,6 +25,7 @@ using namespace ::com::sun::star; static const sal_Int32 nDefaultProgressBarRange = 1000000; +static const float fProgressStep = 0.5; ProgressBarHelper::ProgressBarHelper(const ::com::sun::star::uno::Reference < ::com::sun::star::task::XStatusIndicator>& xTempStatusIndicator, const bool bTempStrict) @@ -32,6 +33,7 @@ ProgressBarHelper::ProgressBarHelper(const ::com::sun::star::uno::Reference < :: , nRange(nDefaultProgressBarRange) , nReference(100) , nValue(0) +, fOldPercent(0.0) , bStrict(bTempStrict) , bRepeat(true) #ifdef DBG_UTIL @@ -87,9 +89,12 @@ void ProgressBarHelper::SetValue(sal_Int32 nTempValue) double fValue(nValue); double fNewValue ((fValue * nRange) / nReference); - xStatusIndicator->setValue((sal_Int32)fNewValue); - - // #95181# disabled, because we want to call setValue very often to enable a good reschedule + double fPercent((fNewValue * 100) / nRange); + if (fPercent >= (fOldPercent + fProgressStep) || fPercent < fOldPercent) + { + xStatusIndicator->setValue((sal_Int32)fNewValue); + fOldPercent = fPercent; + } } #ifdef DBG_UTIL else if (!bFailure) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits