From: eap Date: Fri, 20 Jul 2012 16:11:12 +0000 (+0000) Subject: Generalize "Cancel Compute" mechanism to be able to report X-Git-Tag: V6_6_0a1~231 X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=commitdiff_plain;h=7c5dc4f0064a89253fd770f896adca7ef49767a8 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 --- 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