]> SALOME platform Git repositories - modules/visu.git/commitdiff
Salome HOME
PAL12755: EDF: SALOME frozen with Load Script and a Python Module. Additional fix.
authorjfa <jfa@opencascade.com>
Tue, 15 Aug 2006 09:53:18 +0000 (09:53 +0000)
committerjfa <jfa@opencascade.com>
Tue, 15 Aug 2006 09:53:18 +0000 (09:53 +0000)
src/VISU_SWIG/libVISU_Swig.i

index 280bb30d02d63e97c1224fda00fc3c7820a29056..df984335845ebb6166cd2d5e26007d5f6e384426 100644 (file)
@@ -17,7 +17,7 @@
 //  License along with this library; if not, write to the Free Software 
 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
 // 
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
 %}
 
 
+/*
+  managing C++ exception in the Python API
+*/
+%exception
+{
+  class PyAllowThreadsGuard {
+   public:
+    // Py_BEGIN_ALLOW_THREADS
+    PyAllowThreadsGuard() { _save = PyEval_SaveThread(); }
+    // Py_END_ALLOW_THREADS
+    ~PyAllowThreadsGuard() { PyEval_RestoreThread(_save); }
+   private:
+    PyThreadState *_save;
+  };
+
+  PyAllowThreadsGuard guard;
+
+  try {
+    $action
+  }
+  catch(...) {
+    PyErr_SetString(PyExc_RuntimeError,"Unknown exception caught");
+    return NULL;
+  }
+}
+
 class Convertor{
 public:
   Convertor(){};
@@ -51,4 +77,4 @@ public:
   View3D();
   void Display(ScalarMap* theScalarMap);
   void SetPosition(int theX, int theY);
-};
\ No newline at end of file
+};