From fad8f014de1584912a2e2ab022de9e76e937dd24 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Mon, 22 Jul 2024 19:00:11 +0300 Subject: =?UTF-8?q?fixes=20#4560=20(SkypeWeb:=20=D0=B7=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D1=81=D0=B0=D0=BD=D0=B8=D0=B5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- protocols/SkypeWeb/src/request_queue.cpp | 10 ++++++---- protocols/SkypeWeb/src/skype_login.cpp | 3 +-- protocols/SkypeWeb/src/skype_polling.cpp | 2 +- protocols/SkypeWeb/src/skype_proto.cpp | 13 ++++--------- protocols/SkypeWeb/src/skype_proto.h | 7 +------ protocols/SkypeWeb/src/version.h | 2 +- 6 files changed, 14 insertions(+), 23 deletions(-) diff --git a/protocols/SkypeWeb/src/request_queue.cpp b/protocols/SkypeWeb/src/request_queue.cpp index aff9f07521..39dc13b8aa 100644 --- a/protocols/SkypeWeb/src/request_queue.cpp +++ b/protocols/SkypeWeb/src/request_queue.cpp @@ -58,11 +58,13 @@ void CSkypeProto::StartQueue() void CSkypeProto::StopQueue() { - if (m_isTerminated) - return; - m_isTerminated = true; - m_hRequestQueueEvent.Set(); + + if (m_hRequestQueueThread) + m_hRequestQueueEvent.Set(); + + if (m_hPollingThread) + m_hPollingEvent.Set(); } void CSkypeProto::PushRequest(AsyncHttpRequest *request) diff --git a/protocols/SkypeWeb/src/skype_login.cpp b/protocols/SkypeWeb/src/skype_login.cpp index 74641eb5e7..09206e19e6 100644 --- a/protocols/SkypeWeb/src/skype_login.cpp +++ b/protocols/SkypeWeb/src/skype_login.cpp @@ -59,7 +59,7 @@ void CSkypeProto::Login() return; } - m_bHistorySynced = m_bThreadsTerminated = false; + m_bHistorySynced = false; if ((tokenExpires - 1800) > time(0)) OnLoginSuccess(); else @@ -134,7 +134,6 @@ void CSkypeProto::OnLoginSuccess() if (!IsStatusConnecting(m_iStatus)) return; - m_bThreadsTerminated = false; ProtoBroadcastAck(NULL, ACKTYPE_LOGIN, ACKRESULT_SUCCESS, NULL, 0); int oldStatus = m_iStatus; diff --git a/protocols/SkypeWeb/src/skype_polling.cpp b/protocols/SkypeWeb/src/skype_polling.cpp index 5a680dab30..e1d51e49a5 100644 --- a/protocols/SkypeWeb/src/skype_polling.cpp +++ b/protocols/SkypeWeb/src/skype_polling.cpp @@ -23,7 +23,7 @@ void CSkypeProto::PollingThread(void *) while (true) { m_hPollingEvent.Wait(); - if (m_bThreadsTerminated) + if (m_isTerminated) break; int nErrors = 0; diff --git a/protocols/SkypeWeb/src/skype_proto.cpp b/protocols/SkypeWeb/src/skype_proto.cpp index df6ea85f2c..e57ed0c346 100644 --- a/protocols/SkypeWeb/src/skype_proto.cpp +++ b/protocols/SkypeWeb/src/skype_proto.cpp @@ -21,7 +21,6 @@ CSkypeProto::CSkypeProto(const char* protoName, const wchar_t* userName) : PROTO(protoName, userName), m_PopupClasses(1), m_OutMessages(3, PtrKeySortT), - m_bThreadsTerminated(false), m_impl(*this), m_requests(1), bAutoHistorySync(this, "AutoSync", true), @@ -65,8 +64,9 @@ CSkypeProto::CSkypeProto(const char* protoName, const wchar_t* userName) : CSkypeProto::~CSkypeProto() { - StopQueue(); if (m_hRequestQueueThread) { + m_hRequestQueueEvent.Set(); + WaitForSingleObject(m_hRequestQueueThread, INFINITE); m_hRequestQueueThread = nullptr; } @@ -74,6 +74,8 @@ CSkypeProto::~CSkypeProto() UninitPopups(); if (m_hPollingThread) { + m_hPollingEvent.Set(); + WaitForSingleObject(m_hPollingThread, INFINITE); m_hPollingThread = nullptr; } @@ -91,14 +93,7 @@ void CSkypeProto::OnModulesLoaded() void CSkypeProto::OnShutdown() { - debugLogA(__FUNCTION__); - StopQueue(); - - m_bThreadsTerminated = true; - - m_hPollingEvent.Set(); - m_hTrouterEvent.Set(); } INT_PTR CSkypeProto::GetCaps(int type, MCONTACT) diff --git a/protocols/SkypeWeb/src/skype_proto.h b/protocols/SkypeWeb/src/skype_proto.h index a4f9d7850f..488e7db19d 100644 --- a/protocols/SkypeWeb/src/skype_proto.h +++ b/protocols/SkypeWeb/src/skype_proto.h @@ -181,13 +181,8 @@ private: mir_cs messageSyncLock; mir_cs m_StatusLock; - bool m_bThreadsTerminated; - EventHandle m_hPollingEvent; - EventHandle m_hTrouterEvent; - - EventHandle m_hTrouterHealthEvent; - + INT_PTR __cdecl SvcGetAvatarInfo(WPARAM, LPARAM); INT_PTR __cdecl SvcGetAvatarCaps(WPARAM, LPARAM); INT_PTR __cdecl SvcGetMyAvatar(WPARAM, LPARAM); diff --git a/protocols/SkypeWeb/src/version.h b/protocols/SkypeWeb/src/version.h index 89c0b14b1f..5029f2c626 100644 --- a/protocols/SkypeWeb/src/version.h +++ b/protocols/SkypeWeb/src/version.h @@ -1,6 +1,6 @@ #define __MAJOR_VERSION 0 #define __MINOR_VERSION 96 -#define __RELEASE_NUM 3 +#define __RELEASE_NUM 6 #define __BUILD_NUM 1 #include -- cgit v1.2.3