Browse Source

!1 fix the problem that close common page

chenliangyu 1 year ago
parent
commit
e13d1346ff

+ 2 - 2
Module/mod_chromium/baseEx.cpp

@@ -914,9 +914,9 @@ std::vector<int> getUosBrowserPIDs(int UseUOSBrowser)
 	std::vector<int> pids;
 	FILE* fp = nullptr;
 	if(UseUOSBrowser == 1)
-		popen("ps -ef | grep uosbrowser | grep -v grep | awk '{print $2}'", "r");
+		fp = popen("ps -ef | grep uosbrowser | grep -v grep | awk '{print $2}'", "r");
 	else if(UseUOSBrowser == 2)
-		popen("ps -ef | grep browser | grep -v grep | awk '{print $2}'", "r");
+		fp = popen("ps -ef | grep browser | grep -v grep | awk '{print $2}'", "r");
 	if (fp) {
 		char buffer[256];
 		while (fgets(buffer, sizeof(buffer), fp) != NULL) {

+ 7 - 1
Module/mod_chromium/mod_chromium.cpp

@@ -162,6 +162,7 @@ namespace Chromium {
 	{
 		auto openCommonPageThread = [this](SpReqAnsContext<ChromiumSrv_OpenCommonPage_Req, ChromiumSrv_OpenCommonPage_Ans>::Pointer ctx)
 		{
+			LOG_FUNCTION();
 			boost::unique_lock<boost::mutex> commonPageLock(m_commonPageLock);
 			std::string strTitle = ctx->Req.title.GetData();
 			std::string strUrl = ctx->Req.url.GetData();
@@ -175,6 +176,7 @@ namespace Chromium {
 #else
 			auto srcPids = getUosBrowserPIDs(CModTools::get_mutable_instance().getUosBrowser());
 			auto ret = CModTools::get_mutable_instance().startCommonPage(strTitle, strUrl, width, height, point_x, point_y, strTop);
+
 			std::this_thread::sleep_for(std::chrono::seconds(2));
 			auto dstPids = getUosBrowserPIDs(CModTools::get_mutable_instance().getUosBrowser());
 
@@ -186,12 +188,15 @@ namespace Chromium {
 			std::vector<int> difference;
 			// 使用 std::set_difference 查找差值
 			std::set_difference(dstPids.begin(), dstPids.end(), srcPids.begin(), srcPids.end(), std::back_inserter(difference));
+			for (auto it : srcPids)
+				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("srcPids %d", it);
+			for (auto it : dstPids)
+				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("dstPids %d", it);
 			for (auto it : difference)
 			{
 				DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("open commonPage %d", it);
 				m_commonPageArr[strTitle].push_back(it);
 			}
-
 #endif
 			ctx->Answer(ret.first, ret.first);
 		};
@@ -202,6 +207,7 @@ namespace Chromium {
 	{
 		auto closePage = [this](SpReqAnsContext<ChromiumSrv_CloseCommonPage_Req, ChromiumSrv_CloseCommonPage_Ans>::Pointer ctx)
 		{
+			LOG_FUNCTION();
 			boost::unique_lock<boost::mutex> commonPageLock(m_commonPageLock);
 			std::string strName = ctx->Req.title.GetData();
 #ifdef RVC_OS_WIN

+ 4 - 2
Module/mod_guiconsole/mod_guiconsole.cpp

@@ -170,9 +170,11 @@ std::pair<DWORD, std::string> CGUIConsoleEntity::closeLogSender()
 
 std::pair<DWORD, std::string> CGUIConsoleEntity::openEntityMonitor(SpReqAnsContext<GUIConsoleService_OpenEntityMonitor_Req, GUIConsoleService_OpenEntityMonitor_Ans>::Pointer ctx)
 {
-	if(m_isOpenEntityMonitor && thread_entityMonitor != NULL)
+	if (m_isOpenEntityMonitor && thread_entityMonitor != NULL)
+	{
+		m_entityMonitor_shouldwork = true;//broadcast entity arr immediately 
 		return std::make_pair(ErrorCodeEnum::Error_Succeed, "");//should not open again
-
+	}
 
 	m_isOpenEntityMonitor = true;
 	if (ctx->Req.longestFrequence <= 1)