Bläddra i källkod

Z991239-1954 #comment fix: 解决 localplayer存在启动lost问题

陈礼鹏80274480 4 år sedan
förälder
incheckning
78210d8c2b

+ 10 - 15
Module/mod_localmediaplay/mod_localmediaplay.cpp

@@ -44,17 +44,10 @@ void* queryMedia(void* param)
 	CLocalMediaPlayEntity* curEntity = (CLocalMediaPlayEntity*)param;
 	sleep(3);
 
-	while (true)
+	while (false == curEntity->GetScanExitFlag())
 	{
 		curEntity->m_mediaManage.InitResourceListByLocal();
-		{
-			struct timespec ts;
-			clock_gettime(CLOCK_REALTIME, &ts);
-			ts.tv_sec += 3600;
-			if (0 == sem_timedwait(&curEntity->m_scanexit_sem, &ts)) {
-				break;
-			}
-		}
+		sleep(3600);
 	}
 
 	return 0;
@@ -98,11 +91,10 @@ CLocalMediaPlayEntity::~CLocalMediaPlayEntity()
 		m_scanThread = NULL;
 	}
 #else
-	sem_post(&m_scanexit_sem);
-	if (0 == pthread_join(m_scanThreadId, NULL)){
+	m_scanexitflag = true;
+	if (0 == pthread_join(m_scanThreadId, NULL)) {
 		Dbg("pthread join scanThreadId success.");
 	}
-	sem_destroy(&m_scanexit_sem);
 #endif // RVC_OS_WIN
 }
 
@@ -479,6 +471,12 @@ bool CLocalMediaPlayEntity::GetPlayFlag()
 	return m_badplayflag;
 }
 
+
+bool CLocalMediaPlayEntity::GetScanExitFlag()
+{
+	return m_scanexitflag;
+}
+
 int CLocalMediaPlayEntity::GetPlayerIcoPath(char* strPath, size_t uLen)
 {
 	int iRet = -1;
@@ -575,9 +573,6 @@ ErrorCodeEnum CLocalMediaPlayEntity::__OnStart(ErrorCodeEnum preOperationError)
 	else{
 		Dbg("create queryMedia thread failed.");
 	}
-	if (0 != sem_init(&m_scanexit_sem, 0, 0)) {
-		Dbg("create m_scanexit_sem sem failed.");
-	}
 	
 #endif // RVC_OS_WIN
 

+ 2 - 2
Module/mod_localmediaplay/mod_localmediaplay.h

@@ -79,6 +79,7 @@ public:
 	virtual int GetMediaPlayerIcoPath(char* strPath, size_t uLen);
 	virtual int GetPicPlayerIcoPath(char* strPath, size_t uLen);
 	bool GetPlayFlag();
+	bool GetScanExitFlag();
 	
 #endif // _WIN32
 
@@ -184,7 +185,7 @@ private:
 	vector<CPicPlayConfig> m_defaultPic;
 	pthread_t m_uMediaPlayThreadId;
 	bool m_badplayflag;
-	sem_t m_scanexit_sem;
+	bool m_scanexitflag;
 #endif // RVC_OS_WIN
 };
 
@@ -218,7 +219,6 @@ public:
 
 	virtual void Handle_SetLocalAudioVolume(SpReqAnsContext<PlayService_SetLocalAudioVolume_Req, PlayService_SetLocalAudioVolume_Ans>::Pointer ctx);
 
-
 private:
 	int m_id;
 	CLocalMediaPlayEntity* m_pEntity;