Salome HOME
Merge branch 'omu/py2yacsgui'
[modules/yacs.git] / src / evalyfx / YACSEvalSession.cxx
index 250202fa4f8635c558ceca03c2e31e73e83ed5e6..d08aa9c49db0d7846cfd9ce12a87a721468b7ce4 100644 (file)
@@ -34,22 +34,17 @@ const char YACSEvalSession::CORBA_CONFIG_ENV_VAR_NAME[]="OMNIORB_CONFIG";
 
 const char YACSEvalSession::NSPORT_VAR_NAME[]="NSPORT";
 
-YACSEvalSession::YACSEvalSession():_isAttached(false),_isLaunched(false),_port(-1),_salomeInstanceModule(0),_salomeInstance(0),_internal(new YACSEvalSessionInternal)
+YACSEvalSession::YACSEvalSession():_isAttached(false),_isLaunched(false),_isForcedPyThreadSaved(false),_port(-1),_salomeInstanceModule(0),_salomeInstance(0),_internal(new YACSEvalSessionInternal)
 {
-  if(!Py_IsInitialized())
-    Py_Initialize();
-  //
-  {
-    YACS::ENGINE::AutoGIL gal;
-    _salomeInstanceModule=PyImport_ImportModule(const_cast<char *>("salome_instance"));
-  }
+  YACS::ENGINE::AutoGIL gal;
+  _salomeInstanceModule=PyImport_ImportModule(const_cast<char *>("salome_instance"));
 }
 
 YACSEvalSession::~YACSEvalSession()
 {
   delete _internal;
   YACS::ENGINE::AutoGIL gal;
-  if(isLaunched())
+  if(isLaunched() && !isAttached())
     {
       YACS::ENGINE::AutoPyRef terminateSession(PyObject_GetAttrString(_salomeInstance,const_cast<char *>("stop")));//new
       YACS::ENGINE::AutoPyRef res(PyObject_CallObject(terminateSession,0));
@@ -85,6 +80,12 @@ void YACSEvalSession::launchUsingCurrentSession()
     return ;
   YACS::ENGINE::AutoGIL gal;
   _corbaConfigFileName=GetConfigAndPort(_port);
+  _isAttached=true; _isLaunched=true;
+}
+
+bool YACSEvalSession::isAlreadyPyThreadSaved() const
+{
+  return _isForcedPyThreadSaved;
 }
 
 void YACSEvalSession::checkLaunched() const