mirror of
https://github.com/4jcraft/4jcraft.git
synced 2026-07-13 01:17:12 +00:00
refactor: FireworksRecipe thread-local storage
This commit is contained in:
parent
a82d76ca46
commit
03f62dcb9e
|
|
@ -24,14 +24,14 @@ int normal;
|
|||
|
||||
|
||||
*/
|
||||
thread_local Tesselator* Tesselator::m_thread_instance = nullptr;
|
||||
thread_local Tesselator* Tesselator::m_threadInstance = nullptr;
|
||||
|
||||
Tesselator* Tesselator::getInstance() {
|
||||
return m_thread_instance;
|
||||
return m_threadinstance;
|
||||
}
|
||||
|
||||
void Tesselator::CreateNewThreadStorage(int bytes) {
|
||||
Tesselator::m_thread_instance = new Tesselator(bytes / 4);
|
||||
Tesselator::m_threadinstance = new Tesselator(bytes / 4);
|
||||
}
|
||||
|
||||
// she tessalate my vertices till i render
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ public:
|
|||
static void CreateNewThreadStorage(int bytes);
|
||||
|
||||
private:
|
||||
static thread_local Tesselator* m_thread_instance;
|
||||
static thread_local Tesselator* m_threadInstance;
|
||||
|
||||
public:
|
||||
static Tesselator* getInstance();
|
||||
|
|
|
|||
|
|
@ -2,34 +2,35 @@
|
|||
#include "../Headers/net.minecraft.world.item.h"
|
||||
#include "FireworksRecipe.h"
|
||||
|
||||
DWORD FireworksRecipe::tlsIdx = 0;
|
||||
FireworksRecipe::ThreadStorage* FireworksRecipe::tlsDefault = NULL;
|
||||
thread_local FireworksRecipe::ThreadStorage* FireworksRecipe::m_threadStorage =
|
||||
nullptr;
|
||||
FireworksRecipe::ThreadStorage* FireworksRecipe::m_defaultThreadStorage =
|
||||
nullptr;
|
||||
|
||||
FireworksRecipe::ThreadStorage::ThreadStorage() { resultItem = nullptr; }
|
||||
|
||||
void FireworksRecipe::CreateNewThreadStorage() {
|
||||
ThreadStorage* tls = new ThreadStorage();
|
||||
if (tlsDefault == NULL) {
|
||||
tlsIdx = TlsAlloc();
|
||||
tlsDefault = tls;
|
||||
|
||||
if (m_defaultThreadStorage == nullptr) {
|
||||
m_defaultThreadStorage = tls;
|
||||
}
|
||||
TlsSetValue(tlsIdx, tls);
|
||||
|
||||
m_threadStorage = tls;
|
||||
}
|
||||
|
||||
void FireworksRecipe::UseDefaultThreadStorage() {
|
||||
TlsSetValue(tlsIdx, tlsDefault);
|
||||
m_threadStorage = m_defaultThreadStorage;
|
||||
}
|
||||
|
||||
void FireworksRecipe::ReleaseThreadStorage() {
|
||||
ThreadStorage* tls = (ThreadStorage*)TlsGetValue(tlsIdx);
|
||||
if (tls == tlsDefault) return;
|
||||
|
||||
delete tls;
|
||||
if (m_threadStorage != m_defaultThreadStorage) {
|
||||
delete m_threadStorage;
|
||||
}
|
||||
}
|
||||
|
||||
void FireworksRecipe::setResultItem(std::shared_ptr<ItemInstance> item) {
|
||||
ThreadStorage* tls = (ThreadStorage*)TlsGetValue(tlsIdx);
|
||||
tls->resultItem = item;
|
||||
m_threadStorage->resultItem = item;
|
||||
}
|
||||
|
||||
FireworksRecipe::FireworksRecipe() {
|
||||
|
|
|
|||
|
|
@ -13,8 +13,8 @@ private:
|
|||
std::shared_ptr<ItemInstance> resultItem;
|
||||
ThreadStorage();
|
||||
};
|
||||
static DWORD tlsIdx;
|
||||
static ThreadStorage* tlsDefault;
|
||||
static thread_local ThreadStorage* m_threadStorage;
|
||||
static ThreadStorage* m_defaultThreadStorage;
|
||||
|
||||
void setResultItem(std::shared_ptr<ItemInstance> item);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue