Bladeren bron

Z991239-1812 #comment 添加preclose清理

陈良瑜80374463 4 jaren geleden
bovenliggende
commit
20d25051d2
5 gewijzigde bestanden met toevoegingen van 44 en 10 verwijderingen
  1. 17 0
      .idea/deployment.xml
  2. 6 0
      .idea/vcs.xml
  3. 0 2
      Module/mod_chromium/baseEx.cpp
  4. 18 7
      Module/mod_chromium/mod_chromium.cpp
  5. 3 1
      Module/mod_chromium/mod_chromium.h

+ 17 - 0
.idea/deployment.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="PublishConfigData" remoteFilesAllowedToDisappearOnAutoupload="false">
+    <serverData>
+      <paths name="Remote Host (baec29b4-8c50-47bf-9b4c-b10c9f23e570)">
+        <serverdata>
+          <mappings>
+            <mapping deploy="/LR04_TerminalLinux_0125" local="$PROJECT_DIR$" />
+          </mappings>
+          <excludedPaths>
+            <excludedPath local="true" path="$PROJECT_DIR$/cmake-build-debug" />
+          </excludedPaths>
+        </serverdata>
+      </paths>
+    </serverData>
+  </component>
+</project>

+ 6 - 0
.idea/vcs.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$" vcs="Git" />
+  </component>
+</project>

+ 0 - 2
Module/mod_chromium/baseEx.cpp

@@ -21,9 +21,7 @@ void seg_signal_handler(int signum)
 	Dbg("receive signal:%d, seg_signal_handler", signum);
 	auto dumpArr = boost::stacktrace::stacktrace().as_vector();
 	for (auto i = 0; i < dumpArr.size(); i++)
-	{
 		Dbg("SEG[%d]%X---%s(%s-%d)", i, dumpArr[i].address(), dumpArr[i].name().c_str(), dumpArr[i].source_file().c_str(), dumpArr[i].source_line());
-	}
 	signal(signum, SIG_DFL);
 	raise(signum);
 }

+ 18 - 7
Module/mod_chromium/mod_chromium.cpp

@@ -289,15 +289,26 @@ namespace Chromium {
 
 	void CChromiumEntity::OnPreClose(EntityCloseCauseEnum eCloseCause, CSmartPointer<ITransactionContext> pTransactionContext)
 	{
-		CModTools::get_mutable_instance().killAllChromium();
-		if (m_pTimerListener != NULL)
+		exitClean();
+		pTransactionContext->SendAnswer(Error_Succeed);
+	}
+
+	void CChromiumEntity::exitClean()
+	{
+		static bool isExit = false;
+		if (!isExit)
 		{
-			GetFunction()->KillTimer(CHROMIUM_TIMER_ID);
-			delete m_pTimerListener;
-			m_pTimerListener = NULL;
+			isExit = true;
+			CModTools::get_mutable_instance().killAllChromium();
+			delete m_pWsServer;
+			if (m_pTimerListener != NULL)
+			{
+				GetFunction()->KillTimer(CHROMIUM_TIMER_ID);
+				delete m_pTimerListener;
+				m_pTimerListener = NULL;
+			}
+			GetFunction()->UnsubscribeBroadcast("IEBrowser");
 		}
-		GetFunction()->UnsubscribeBroadcast("IEBrowser");
-		pTransactionContext->SendAnswer(Error_Succeed);
 	}
 
 	void CChromiumEntity::OnLog(const CAutoArray<CUUID>& SubIDs, const CUUID nLogID, const LogTypeEnum eLogType, const SeverityLevelEnum eLevel,

+ 3 - 1
Module/mod_chromium/mod_chromium.h

@@ -49,7 +49,7 @@ namespace Chromium {
 		virtual void OnPreStart(CAutoArray<CSimpleStringA> strArgs, CSmartPointer<ITransactionContext> pTransactionContext);
 		virtual void OnPreClose(EntityCloseCauseEnum eCloseCause, CSmartPointer<ITransactionContext> pTransactionContext);
 		void CefClintNotify();
-
+		void exitClean();
         bool HasCustomMainUrl() const { return !m_strCustomMainUrl.IsNullOrEmpty(); }
         const char* GetCustomMainUrl()  const { return m_strCustomMainUrl; }
 
@@ -84,6 +84,8 @@ namespace Chromium {
 
 		void OnBusinessLimitTimerListener(void* pData);//ÿ3600s¼ì²âÒµÎñ½ûÓÃ
 
+		
+
 
 		SP_BEGIN_MSG_DISPATCH_MAP(CChromiumEntity)
 #if (defined _WIN32 || defined _WIN64)