From a195a4eb8fd1bb70e3ff123b6a4c54b77283858e Mon Sep 17 00:00:00 2001 From: Anthony Geay Date: Wed, 24 Feb 2021 17:05:37 +0100 Subject: [PATCH] Make the visualisation work with SSL gui mode --- src/SMESHClient/CMakeLists.txt | 1 + src/SMESHClient/SMESH_Client.cxx | 36 +++++++++++++++-------- src/SMESH_I/SMESH_Component_Generator.cxx | 5 ++++ src/SMESH_I/SMESH_Component_Generator.hxx | 1 + 4 files changed, 30 insertions(+), 13 deletions(-) diff --git a/src/SMESHClient/CMakeLists.txt b/src/SMESHClient/CMakeLists.txt index 1e67b6624..6712177e9 100644 --- a/src/SMESHClient/CMakeLists.txt +++ b/src/SMESHClient/CMakeLists.txt @@ -36,6 +36,7 @@ INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR}/src/SMESHDS ${PROJECT_SOURCE_DIR}/src/SMESH ${PROJECT_SOURCE_DIR}/src/SMESHUtils + ${PROJECT_SOURCE_DIR}/src/SMESH_I ${PROJECT_BINARY_DIR}/idl ) diff --git a/src/SMESHClient/SMESH_Client.cxx b/src/SMESHClient/SMESH_Client.cxx index 0c1b1aeab..66d071a07 100644 --- a/src/SMESHClient/SMESH_Client.cxx +++ b/src/SMESHClient/SMESH_Client.cxx @@ -28,6 +28,7 @@ #include "SMESHDS_Mesh.hxx" #include "SMESHDS_Script.hxx" #include "SMESH_Mesh.hxx" +#include "SMESH_Component_Generator.hxx" #include "SALOME_NamingService.hxx" #include "SALOME_LifeCycleCORBA.hxx" @@ -783,26 +784,35 @@ SMESH_Client::GetSMESHGen(CORBA::ORB_ptr theORB, { static SMESH::SMESH_Gen_var aMeshGen; - if(CORBA::is_nil(aMeshGen.in())){ + if(CORBA::is_nil(aMeshGen.in())) + { + Engines::EngineComponent_var isCompoInSSLMode = GetSMESHInstanceHasThis(); + if( CORBA::is_nil(isCompoInSSLMode) ) + { #ifdef WIN32 - long aClientPID = (long)_getpid(); + long aClientPID = (long)_getpid(); #else - long aClientPID = (long)getpid(); + long aClientPID = (long)getpid(); #endif - SALOME_NamingService aNamingService(theORB); - SALOME_LifeCycleCORBA aLifeCycleCORBA(&aNamingService); - Engines::EngineComponent_var aComponent = aLifeCycleCORBA.FindOrLoad_Component("FactoryServer","SMESH"); - aMeshGen = SMESH::SMESH_Gen::_narrow(aComponent); + SALOME_NamingService aNamingService(theORB); + SALOME_LifeCycleCORBA aLifeCycleCORBA(&aNamingService); + Engines::EngineComponent_var aComponent = aLifeCycleCORBA.FindOrLoad_Component("FactoryServer","SMESH"); + aMeshGen = SMESH::SMESH_Gen::_narrow(aComponent); - std::string aClientHostName = Kernel_Utils::GetHostname(); - Engines::Container_var aServerContainer = aMeshGen->GetContainerRef(); - CORBA::String_var aServerHostName = aServerContainer->getHostName(); - CORBA::Long aServerPID = aServerContainer->getPID(); - aMeshGen->SetEmbeddedMode((aClientPID == aServerPID) && (aClientHostName == aServerHostName.in())); + std::string aClientHostName = Kernel_Utils::GetHostname(); + Engines::Container_var aServerContainer = aMeshGen->GetContainerRef(); + CORBA::String_var aServerHostName = aServerContainer->getHostName(); + CORBA::Long aServerPID = aServerContainer->getPID(); + aMeshGen->SetEmbeddedMode((aClientPID == aServerPID) && (aClientHostName == aServerHostName.in())); + } + else + { + aMeshGen = SMESH::SMESH_Gen::_narrow(isCompoInSSLMode); + } + } theIsEmbeddedMode = aMeshGen->IsEmbeddedMode(); - return aMeshGen; } diff --git a/src/SMESH_I/SMESH_Component_Generator.cxx b/src/SMESH_I/SMESH_Component_Generator.cxx index d4d6a747a..a1819c5e1 100644 --- a/src/SMESH_I/SMESH_Component_Generator.cxx +++ b/src/SMESH_I/SMESH_Component_Generator.cxx @@ -53,3 +53,8 @@ Engines::EngineComponent_var RetrieveSMESHInstance() } return _unique_compo; } + +Engines::EngineComponent_var GetSMESHInstanceHasThis() +{ + return _unique_compo; +} diff --git a/src/SMESH_I/SMESH_Component_Generator.hxx b/src/SMESH_I/SMESH_Component_Generator.hxx index afd48fff9..db796a531 100644 --- a/src/SMESH_I/SMESH_Component_Generator.hxx +++ b/src/SMESH_I/SMESH_Component_Generator.hxx @@ -26,3 +26,4 @@ #include CORBA_SERVER_HEADER(SMESH_Gen) SMESH_I_EXPORT Engines::EngineComponent_var RetrieveSMESHInstance(); +SMESH_I_EXPORT Engines::EngineComponent_var GetSMESHInstanceHasThis(); -- 2.39.2