summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--protocols/Steam/src/steam_proto.cpp4
-rw-r--r--protocols/Steam/src/steam_proto.h1
2 files changed, 5 insertions, 0 deletions
diff --git a/protocols/Steam/src/steam_proto.cpp b/protocols/Steam/src/steam_proto.cpp
index 1cd0193702..2cb802c9fd 100644
--- a/protocols/Steam/src/steam_proto.cpp
+++ b/protocols/Steam/src/steam_proto.cpp
@@ -9,6 +9,7 @@ CSteamProto::CSteamProto(const char* protoName, const TCHAR* userName) :
CreateProtoService(PS_CREATEACCMGRUI, &CSteamProto::OnAccountManagerInit);
InitializeCriticalSection(&this->contact_search_lock);
+ InitializeCriticalSection(&this->set_status_lock);
InitQueue();
@@ -69,6 +70,7 @@ CSteamProto::~CSteamProto()
UninitQueue();
DeleteCriticalSection(&this->contact_search_lock);
+ DeleteCriticalSection(&this->set_status_lock);
}
MCONTACT __cdecl CSteamProto::AddToList(int flags, PROTOSEARCHRESULT* psr)
@@ -350,6 +352,8 @@ int __cdecl CSteamProto::SetApparentMode(MCONTACT hContact, int mode) { return 0
int CSteamProto::SetStatus(int new_status)
{
+ mir_cslock lock(set_status_lock);
+
// Routing statuses not supported by Steam
switch (new_status)
{
diff --git a/protocols/Steam/src/steam_proto.h b/protocols/Steam/src/steam_proto.h
index 47fe830eef..d3c5b65b0a 100644
--- a/protocols/Steam/src/steam_proto.h
+++ b/protocols/Steam/src/steam_proto.h
@@ -153,6 +153,7 @@ protected:
ULONG hMessageProcess;
CRITICAL_SECTION contact_search_lock;
CRITICAL_SECTION requests_queue_lock;
+ CRITICAL_SECTION set_status_lock;
LIST<QueueItem> requestsQueue;
// instances