From 03f62dcb9ef8c12cd9dd68791a473a68a665b492 Mon Sep 17 00:00:00 2001 From: Tropical <42101043+tropicaaal@users.noreply.github.com> Date: Wed, 25 Mar 2026 12:59:15 -0500 Subject: [PATCH] refactor: `FireworksRecipe` thread-local storage --- Minecraft.Client/Rendering/Tesselator.cpp | 6 ++--- Minecraft.Client/Rendering/Tesselator.h | 2 +- Minecraft.World/Recipes/FireworksRecipe.cpp | 27 +++++++++++---------- Minecraft.World/Recipes/FireworksRecipe.h | 4 +-- 4 files changed, 20 insertions(+), 19 deletions(-) diff --git a/Minecraft.Client/Rendering/Tesselator.cpp b/Minecraft.Client/Rendering/Tesselator.cpp index 25d9014b2..aac70dfaf 100644 --- a/Minecraft.Client/Rendering/Tesselator.cpp +++ b/Minecraft.Client/Rendering/Tesselator.cpp @@ -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 diff --git a/Minecraft.Client/Rendering/Tesselator.h b/Minecraft.Client/Rendering/Tesselator.h index bd9edecc2..ac3103b7d 100644 --- a/Minecraft.Client/Rendering/Tesselator.h +++ b/Minecraft.Client/Rendering/Tesselator.h @@ -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(); diff --git a/Minecraft.World/Recipes/FireworksRecipe.cpp b/Minecraft.World/Recipes/FireworksRecipe.cpp index 60ec92d9b..21a4d8a8a 100644 --- a/Minecraft.World/Recipes/FireworksRecipe.cpp +++ b/Minecraft.World/Recipes/FireworksRecipe.cpp @@ -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 item) { - ThreadStorage* tls = (ThreadStorage*)TlsGetValue(tlsIdx); - tls->resultItem = item; + m_threadStorage->resultItem = item; } FireworksRecipe::FireworksRecipe() { diff --git a/Minecraft.World/Recipes/FireworksRecipe.h b/Minecraft.World/Recipes/FireworksRecipe.h index a371a8360..34998fd68 100644 --- a/Minecraft.World/Recipes/FireworksRecipe.h +++ b/Minecraft.World/Recipes/FireworksRecipe.h @@ -13,8 +13,8 @@ private: std::shared_ptr resultItem; ThreadStorage(); }; - static DWORD tlsIdx; - static ThreadStorage* tlsDefault; + static thread_local ThreadStorage* m_threadStorage; + static ThreadStorage* m_defaultThreadStorage; void setResultItem(std::shared_ptr item);