diff options
author | George Hazan <george.hazan@gmail.com> | 2013-12-01 20:53:56 +0000 |
---|---|---|
committer | George Hazan <george.hazan@gmail.com> | 2013-12-01 20:53:56 +0000 |
commit | 495f6ebc90d4adbd351cb965d7fa856f4a97447a (patch) | |
tree | 3ad9b13c7d1794157bad351f86ff1e2f10f5c84b /protocols | |
parent | c78567f150e79befc0ccf85b555802e58696ac30 (diff) |
one another brake removed from MRA
git-svn-id: http://svn.miranda-ng.org/main/trunk@7025 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'protocols')
-rw-r--r-- | protocols/MRA/src/MraAvatars.cpp | 13 | ||||
-rw-r--r-- | protocols/MRA/src/MraProto.cpp | 3 | ||||
-rw-r--r-- | protocols/MRA/src/MraProto.h | 1 |
3 files changed, 10 insertions, 7 deletions
diff --git a/protocols/MRA/src/MraAvatars.cpp b/protocols/MRA/src/MraAvatars.cpp index 33907a5da0..344b754391 100644 --- a/protocols/MRA/src/MraAvatars.cpp +++ b/protocols/MRA/src/MraAvatars.cpp @@ -109,18 +109,19 @@ void CMraProto::MraAvatarsQueueClear(HANDLE hAvatarsQueueHandle) }
}
-void CMraProto::MraAvatarsQueueDestroy(HANDLE hAvatarsQueueHandle)
+void CMraProto::MraAvatarsQueueSuspend(HANDLE hAvatarsQueueHandle)
{
- if ( !hAvatarsQueueHandle)
- return;
-
MRA_AVATARS_QUEUE *pmraaqAvatarsQueue = (MRA_AVATARS_QUEUE*)hAvatarsQueueHandle;
-
InterlockedExchange((volatile LONG*)&pmraaqAvatarsQueue->bIsRunning, FALSE);
SetEvent(pmraaqAvatarsQueue->hThreadEvent);
+}
- WaitForMultipleObjects(pmraaqAvatarsQueue->iThreadsCount, (HANDLE*)&pmraaqAvatarsQueue->hThread[0], TRUE, (WAIT_FOR_THREAD_TIMEOUT*1000));
+void CMraProto::MraAvatarsQueueDestroy(HANDLE hAvatarsQueueHandle)
+{
+ if ( !hAvatarsQueueHandle)
+ return;
+ MRA_AVATARS_QUEUE *pmraaqAvatarsQueue = (MRA_AVATARS_QUEUE*)hAvatarsQueueHandle;
if (InterlockedExchangeAdd((volatile LONG*)&pmraaqAvatarsQueue->lThreadsRunningCount, 0))
while (InterlockedExchangeAdd((volatile LONG*)&pmraaqAvatarsQueue->lThreadsRunningCount, 0))
SleepEx(100, TRUE);
diff --git a/protocols/MRA/src/MraProto.cpp b/protocols/MRA/src/MraProto.cpp index 79349466bf..e050882e99 100644 --- a/protocols/MRA/src/MraProto.cpp +++ b/protocols/MRA/src/MraProto.cpp @@ -71,6 +71,7 @@ CMraProto::~CMraProto() if (m_heNudgeReceived)
DestroyHookableEvent(m_heNudgeReceived);
+ MraAvatarsQueueDestroy(hAvatarsQueueHandle);
MraMPopSessionQueueDestroy(hMPopSessionQueue);
MraFilesQueueDestroy(hFilesQueueHandle);
MraSendQueueDestroy(hSendQueueHandle);
@@ -123,7 +124,7 @@ int CMraProto::OnModulesLoaded(WPARAM, LPARAM) int CMraProto::OnPreShutdown(WPARAM, LPARAM)
{
SetStatus(ID_STATUS_OFFLINE);
- MraAvatarsQueueDestroy(hAvatarsQueueHandle); hAvatarsQueueHandle = NULL;
+ MraAvatarsQueueSuspend(hAvatarsQueueHandle);
return 0;
}
diff --git a/protocols/MRA/src/MraProto.h b/protocols/MRA/src/MraProto.h index 8ed9b1696b..4e364ccc2f 100644 --- a/protocols/MRA/src/MraProto.h +++ b/protocols/MRA/src/MraProto.h @@ -332,6 +332,7 @@ struct CMraProto : public PROTO<CMraProto> DWORD MraAvatarsQueueInitialize(HANDLE *phAvatarsQueueHandle);
void MraAvatarsQueueClear(HANDLE hAvatarsQueueHandle);
+ void MraAvatarsQueueSuspend(HANDLE hAvatarsQueueHandle);
void MraAvatarsQueueDestroy(HANDLE hAvatarsQueueHandle);
DWORD MraAvatarsQueueAdd(HANDLE hAvatarsQueueHandle, DWORD dwFlags, HANDLE hContact, DWORD *pdwAvatarsQueueID);
bool MraAvatarsGetContactTime (HANDLE hContact, LPSTR lpszValueName, SYSTEMTIME *pstTime);
|