sc/inc/document.hxx | 4 - sc/source/core/inc/interpre.hxx | 2 sc/source/ui/optdlg/calcoptionsdlg.cxx | 75 ++++++++++++++++++--------------- sw/source/uibase/wrtsh/wrtsh2.cxx | 2 4 files changed, 46 insertions(+), 37 deletions(-)
New commits: commit 063105b4af5518fd8306246ea49326958e435e1a Author: Tor Lillqvist <t...@collabora.com> Date: Wed Jan 28 20:58:43 2015 +0200 Disable the 'Test OpenCL' button once pressed Change-Id: I6678502472f646ae770be4d17d85f2a02fba8f4b diff --git a/sc/source/ui/optdlg/calcoptionsdlg.cxx b/sc/source/ui/optdlg/calcoptionsdlg.cxx index 12b071f..0eada39 100644 --- a/sc/source/ui/optdlg/calcoptionsdlg.cxx +++ b/sc/source/ui/optdlg/calcoptionsdlg.cxx @@ -655,8 +655,10 @@ struct Reduction : Op } -IMPL_LINK( ScCalcOptionsDialog, TestClickHdl, PushButton*, ) +IMPL_LINK( ScCalcOptionsDialog, TestClickHdl, PushButton*, pButton) { + pButton->Disable(); + // Automatically test the current implementation of OpenCL. If it // seems good, whitelist it. If it seems bad, blacklist it. commit e6a1f33e500c4fb5e38e7d6de7ddb55af8fa8650 Author: Tor Lillqvist <t...@collabora.com> Date: Wed Jan 28 20:29:23 2015 +0200 WaE: overriding destructor declaration not explicitly marked 'virtual' Change-Id: I4f155f8a28afa6a16b1859b254a339d8374a769b diff --git a/sw/source/uibase/wrtsh/wrtsh2.cxx b/sw/source/uibase/wrtsh/wrtsh2.cxx index a11dda2..0bb3850 100644 --- a/sw/source/uibase/wrtsh/wrtsh2.cxx +++ b/sw/source/uibase/wrtsh/wrtsh2.cxx @@ -195,7 +195,7 @@ class FieldDeletionModify : public SwModify mpFmtFld->Add(this); } - ~FieldDeletionModify() + virtual ~FieldDeletionModify() { if (mpFmtFld) { commit c8818044e6e0cbcca0dcbd4aada7b260f88e8818 Author: Tor Lillqvist <t...@collabora.com> Date: Wed Jan 28 20:00:29 2015 +0200 Make the OpenCL test document construction and calculation a bit faster Turn off AutoCalc while constructing it and then calculate it when ready. Use a smaller number for the minimum formula group size required for OpenCL to be used while calculating it. Use less hardcoded magic numbers in the code. Change-Id: I6f2c3b1035947a542776d6087bd229cb9c2892fb diff --git a/sc/source/ui/optdlg/calcoptionsdlg.cxx b/sc/source/ui/optdlg/calcoptionsdlg.cxx index a460f54..12b071f 100644 --- a/sc/source/ui/optdlg/calcoptionsdlg.cxx +++ b/sc/source/ui/optdlg/calcoptionsdlg.cxx @@ -231,7 +231,7 @@ struct Area OUString msTitle; int mnRows; - Area(const OUString& rTitle, int nRows = ScInterpreter::GetGlobalConfig().mnOpenCLMinimumFormulaGroupSize + 1) : + Area(const OUString& rTitle, int nRows = ScInterpreter::GetGlobalConfig().mnOpenCLMinimumFormulaGroupSize + 2) : msTitle(rTitle), mnRows(nRows) { @@ -253,6 +253,8 @@ struct OpenCLTester int mnTestAreas; ScDocShell* mpDocShell; ScDocument *mpDoc; + bool mbOldAutoCalc; + ScCalcConfig maOldCalcConfig; OpenCLTester() : mnTestAreas(0) @@ -269,13 +271,18 @@ struct OpenCLTester mpDoc = &mpDocShell->GetDocument(); + mbOldAutoCalc = mpDoc->GetAutoCalc(); + mpDoc->SetAutoCalc(false); + maOldCalcConfig = ScInterpreter::GetGlobalConfig(); + ScCalcConfig aConfig(maOldCalcConfig); + aConfig.mnOpenCLMinimumFormulaGroupSize = 20; + ScInterpreter::SetGlobalConfig(aConfig); + mpDoc->SetString(ScAddress(0,0,0), "Result:"); } void addTest(const Area &rArea) { - sc::AutoCalcSwitch aACSwitch(*mpDoc, true); - mnTestAreas++; (void) mpDocShell->GetDocFunc().InsertTable(mnTestAreas, rArea.msTitle, false, true); @@ -570,21 +577,18 @@ struct Normdist : Area struct Reduction : Op { - int mnNum; double mnAccumInitial; - double (*mpFun)(double nAccum, double nArg); + double (*mpFun)(double nAccum, double nArg, const Reduction& rReduction); bool (*mpFilterOut)(double nArg); Reduction(const OUString& rTitle, const OUString& rOp, - int nNum, double nAccumInitial, double nRangeLo, double nRangeHi, double nEpsilon, - double (*pFun)(double nAccum, double nArg), + double (*pFun)(double nAccum, double nArg, const Reduction& rReduction), bool (*pFilterOut)(double nArg) = nullptr) : Op(rTitle, rOp, nRangeLo, nRangeHi, nEpsilon), - mnNum(nNum), mnAccumInitial(nAccumInitial), mpFun(pFun), mpFilterOut(pFilterOut) @@ -612,30 +616,30 @@ struct Reduction : Op pDoc->SetValue(ScAddress(0,1+nRow,nTab), nArg); - if (nRow >= mnNum-1) + if (nRow >= mnRows/2-1) { - pDoc->SetString(ScAddress(1,1+nRow-mnNum+1,nTab), + pDoc->SetString(ScAddress(1,1+nRow-mnRows/2+1,nTab), "=" + msOp + "(" + - ScRange(ScAddress(0,1+nRow-mnNum+1,nTab), + ScRange(ScAddress(0,1+nRow-mnRows/2+1,nTab), ScAddress(0,1+nRow,nTab)).Format(SCA_VALID|SCA_TAB_3D|SCA_VALID_COL|SCA_VALID_ROW) + ")"); double nAccum(mnAccumInitial); - for (int i = 0; i < mnNum; i++) - nAccum = mpFun(nAccum, pDoc->GetValue(ScAddress(0,1+nRow-mnNum+i+1,nTab))); + for (int i = 0; i < mnRows/2; i++) + nAccum = mpFun(nAccum, pDoc->GetValue(ScAddress(0,1+nRow-mnRows/2+i+1,nTab)), *this); - pDoc->SetValue(ScAddress(2,1+nRow-mnNum+1,nTab), nAccum); + pDoc->SetValue(ScAddress(2,1+nRow-mnRows/2+1,nTab), nAccum); if (mnEpsilon != 0) - pDoc->SetString(ScAddress(3,1+nRow-mnNum+1,nTab), - "=IF(ABS(" + ScAddress(1,1+nRow-mnNum+1,nTab).Format(SCA_VALID_COL|SCA_VALID_ROW) + - "-" + ScAddress(2,1+nRow-mnNum+1,nTab).Format(SCA_VALID_COL|SCA_VALID_ROW) + + pDoc->SetString(ScAddress(3,1+nRow-mnRows/2+1,nTab), + "=IF(ABS(" + ScAddress(1,1+nRow-mnRows/2+1,nTab).Format(SCA_VALID_COL|SCA_VALID_ROW) + + "-" + ScAddress(2,1+nRow-mnRows/2+1,nTab).Format(SCA_VALID_COL|SCA_VALID_ROW) + ")<=" + OUString::number(mnEpsilon) + ",0,1)"); else - pDoc->SetString(ScAddress(3,1+nRow-mnNum+1,nTab), - "=IF(" + ScAddress(1,1+nRow-mnNum+1,nTab).Format(SCA_VALID_COL|SCA_VALID_ROW) + - "=" + ScAddress(2,1+nRow-mnNum+1,nTab).Format(SCA_VALID_COL|SCA_VALID_ROW) + + pDoc->SetString(ScAddress(3,1+nRow-mnRows/2+1,nTab), + "=IF(" + ScAddress(1,1+nRow-mnRows/2+1,nTab).Format(SCA_VALID_COL|SCA_VALID_ROW) + + "=" + ScAddress(2,1+nRow-mnRows/2+1,nTab).Format(SCA_VALID_COL|SCA_VALID_ROW) + ",0,1)"); } } @@ -644,7 +648,7 @@ struct Reduction : Op { return "=SUM(" + ScRange(ScAddress(3,1+0,nTab), - ScAddress(3,1+mnRows-mnNum-1,nTab)).Format(SCA_VALID|SCA_TAB_3D|SCA_VALID_COL|SCA_VALID_ROW|SCA_VALID_TAB, pDoc) + + ScAddress(3,1+mnRows-mnRows/2-1,nTab)).Format(SCA_VALID|SCA_TAB_3D|SCA_VALID_COL|SCA_VALID_ROW|SCA_VALID_TAB, pDoc) + ")"; } }; @@ -746,36 +750,39 @@ IMPL_LINK( ScCalcOptionsDialog, TestClickHdl, PushButton*, ) xTestDocument->addTest(Normdist()); - xTestDocument->addTest(Reduction("Sum", "SUM", 100, 0, -1000, 1000, 3e-10, - [] (double nAccum, double nArg) + xTestDocument->addTest(Reduction("Sum", "SUM", 0, -1000, 1000, 3e-10, + [] (double nAccum, double nArg, const Reduction&) { return (nAccum + nArg); })); - xTestDocument->addTest(Reduction("Average", "AVERAGE", 100, 0, -1000, 1000, 3e-10, - [] (double nAccum, double nArg) + xTestDocument->addTest(Reduction("Average", "AVERAGE", 0, -1000, 1000, 3e-10, + [] (double nAccum, double nArg, const Reduction& rReduction) { - return (nAccum + nArg/100.); + return (nAccum + nArg/(rReduction.mnRows/2)); })); - xTestDocument->addTest(Reduction("Product", "PRODUCT", 100, 1, 0.1, 2.5, 3e-10, - [] (double nAccum, double nArg) + xTestDocument->addTest(Reduction("Product", "PRODUCT", 1, 0.1, 2.5, 3e-10, + [] (double nAccum, double nArg, const Reduction&) { return (nAccum * nArg); })); - xTestDocument->addTest(Reduction("Min", "MIN", 100, DBL_MAX, -1000, 1000, 0, - [] (double nAccum, double nArg) + xTestDocument->addTest(Reduction("Min", "MIN", DBL_MAX, -1000, 1000, 0, + [] (double nAccum, double nArg, const Reduction&) { return std::min(nAccum, nArg); })); - xTestDocument->addTest(Reduction("Max", "MAX", 100, -DBL_MAX, -1000, 1000, 0, - [] (double nAccum, double nArg) + xTestDocument->addTest(Reduction("Max", "MAX", -DBL_MAX, -1000, 1000, 0, + [] (double nAccum, double nArg, const Reduction&) { return std::max(nAccum, nArg); })); + xTestDocument->mpDoc->CalcAll(); + ScInterpreter::SetGlobalConfig(xTestDocument->maOldCalcConfig); + return 0; } commit 1224bca6b7815760f106116b0dd1a895563c019b Author: Tor Lillqvist <t...@collabora.com> Date: Wed Jan 28 20:00:10 2015 +0200 Make SetGlobalConfig() public Change-Id: Ia4ac90c369a8e33ddefc6a87f877b98491efcede diff --git a/sc/source/core/inc/interpre.hxx b/sc/source/core/inc/interpre.hxx index 094292a..0b669ec 100644 --- a/sc/source/core/inc/interpre.hxx +++ b/sc/source/core/inc/interpre.hxx @@ -118,7 +118,7 @@ class ScInterpreter public: DECL_FIXEDMEMPOOL_NEWDEL( ScInterpreter ) - static void SetGlobalConfig(const ScCalcConfig& rConfig); + static SC_DLLPUBLIC void SetGlobalConfig(const ScCalcConfig& rConfig); static SC_DLLPUBLIC const ScCalcConfig& GetGlobalConfig(); static void GlobalExit(); // called by ScGlobal::Clear() commit c65e51d70747e4664c37a8226dbe2b12399d7146 Author: Tor Lillqvist <t...@collabora.com> Date: Wed Jan 28 19:59:35 2015 +0200 Make GetAutoCalc() and SetAutoCalc() public Change-Id: I25d681b4b1e35af49b6631b2c3de2ccc296b9b42 diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx index dd5175a..d3fe564 100644 --- a/sc/inc/document.hxx +++ b/sc/inc/document.hxx @@ -1060,8 +1060,8 @@ public: void ClearLookupCaches(); // calculate automatically - void SetAutoCalc( bool bNewAutoCalc ); - bool GetAutoCalc() const { return bAutoCalc; } + SC_DLLPUBLIC void SetAutoCalc( bool bNewAutoCalc ); + SC_DLLPUBLIC bool GetAutoCalc() const { return bAutoCalc; } // calculate automatically in/from/for ScDocShell disabled void SetAutoCalcShellDisabled( bool bNew ) { bAutoCalcShellDisabled = bNew; } bool IsAutoCalcShellDisabled() const { return bAutoCalcShellDisabled; } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits