From 7c5dc4f0064a89253fd770f896adca7ef49767a8 Mon Sep 17 00:00:00 2001 From: eap Date: Fri, 20 Jul 2012 16:11:12 +0000 Subject: [PATCH 1/1] Generalize "Cancel Compute" mechanism to be able to report "Computation canceled" instead of "Algorithm failed" as failure reason + volatile bool _computeCanceled; //!< is set to True while computing to stop it --- src/SMESH/SMESH_Algo.cxx | 12 ++++++++++-- src/SMESH/SMESH_Algo.hxx | 8 ++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/SMESH/SMESH_Algo.cxx b/src/SMESH/SMESH_Algo.cxx index 98e8af469..b92726fb1 100644 --- a/src/SMESH/SMESH_Algo.cxx +++ b/src/SMESH/SMESH_Algo.cxx @@ -682,11 +682,17 @@ bool SMESH_Algo::Compute(SMESH_Mesh & /*aMesh*/, SMESH_MesherHelper* /*aHelper*/ return error( COMPERR_BAD_INPUT_MESH, "Mesh built on shape expected"); } -#ifdef WITH_SMESH_CANCEL_COMPUTE +//======================================================================= +//function : CancelCompute +//purpose : Sets _computeCanceled to true. It's usage depends on +// * implementation of a particular mesher. +//======================================================================= + void SMESH_Algo::CancelCompute() { + _computeCanceled = true; + _error = COMPERR_CANCELED; } -#endif //================================================================================ /*! @@ -748,6 +754,8 @@ void SMESH_Algo::InitComputeError() if ( (*elem)->GetID() < 1 ) delete *elem; _badInputElements.clear(); + + _computeCanceled = false; } //================================================================================ diff --git a/src/SMESH/SMESH_Algo.hxx b/src/SMESH/SMESH_Algo.hxx index ff0ab73b2..580445b48 100644 --- a/src/SMESH/SMESH_Algo.hxx +++ b/src/SMESH/SMESH_Algo.hxx @@ -134,9 +134,11 @@ public: */ virtual bool Compute(SMESH_Mesh & aMesh, SMESH_MesherHelper* aHelper); -#ifdef WITH_SMESH_CANCEL_COMPUTE + /*! + * \brief Sets _computeCanceled to true. It's usage depends on + * implementation of a particular mesher. + */ virtual void CancelCompute(); -#endif /*! * \brief evaluates size of prospective mesh on a shape @@ -378,6 +380,8 @@ protected: int _error; //!< SMESH_ComputeErrorName or anything algo specific std::string _comment; //!< any text explaining what is wrong in Compute() std::list _badInputElements; //!< to explain COMPERR_BAD_INPUT_MESH + + volatile bool _computeCanceled; //!< is set to True while computing to stop it }; #endif -- 2.30.2