Skip to content

Commit 1d9cd49

Browse files
committed
Addendum #2 to 37d8d4e
1 parent 5710bd2 commit 1d9cd49

File tree

6 files changed

+109
-58
lines changed

6 files changed

+109
-58
lines changed

Client/core/CAdditionalVertexStreamManager.cpp

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include "StdInc.h"
1313
#include "CAdditionalVertexStreamManager.h"
1414
#include <limits>
15+
#include <mutex>
1516

1617
CAdditionalVertexStreamManager* CAdditionalVertexStreamManager::ms_Singleton = nullptr;
1718

@@ -75,6 +76,8 @@ namespace
7576
STriKey key = {a, b, c};
7677
return key;
7778
}
79+
80+
std::mutex g_singletonMutex;
7881
} // namespace
7982

8083
///////////////////////////////////////////////////////////////
@@ -119,23 +122,26 @@ CAdditionalVertexStreamManager::~CAdditionalVertexStreamManager()
119122
///////////////////////////////////////////////////////////////
120123
CAdditionalVertexStreamManager* CAdditionalVertexStreamManager::GetSingleton()
121124
{
125+
std::lock_guard<std::mutex> guard(g_singletonMutex);
122126
if (!ms_Singleton)
123127
ms_Singleton = new CAdditionalVertexStreamManager();
124128
return ms_Singleton;
125129
}
126130

127-
CAdditionalVertexStreamManager* CAdditionalVertexStreamManager::GetExistingSingleton() noexcept
131+
CAdditionalVertexStreamManager* CAdditionalVertexStreamManager::GetExistingSingleton()
128132
{
133+
std::lock_guard<std::mutex> guard(g_singletonMutex);
129134
return ms_Singleton;
130135
}
131136

132137
void CAdditionalVertexStreamManager::DestroySingleton()
133138
{
134-
if (ms_Singleton)
135-
{
136-
delete ms_Singleton;
137-
ms_Singleton = nullptr;
138-
}
139+
std::lock_guard<std::mutex> guard(g_singletonMutex);
140+
if (!ms_Singleton)
141+
return;
142+
143+
delete ms_Singleton;
144+
ms_Singleton = nullptr;
139145
}
140146

141147
///////////////////////////////////////////////////////////////

Client/core/CAdditionalVertexStreamManager.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ class CAdditionalVertexStreamManager
8484
void OnVertexBufferRangeInvalidated(IDirect3DVertexBuffer9* pStreamData, uint Offset, uint Size);
8585

8686
static CAdditionalVertexStreamManager* GetSingleton();
87-
static CAdditionalVertexStreamManager* GetExistingSingleton() noexcept;
87+
static CAdditionalVertexStreamManager* GetExistingSingleton();
8888
static void DestroySingleton();
8989

9090
protected:

0 commit comments

Comments
 (0)