GameUI: use cached module handle to retrieve resources

Use the one we cache during the initialization of the SDK, which is faster than looking for it again.
This commit is contained in:
Kawe Mazidjatari 2025-02-03 12:52:30 +01:00
parent b8550c9f32
commit 456a68af05
4 changed files with 16 additions and 22 deletions

View File

@ -48,6 +48,7 @@ CBrowser::CBrowser(void)
: m_reclaimFocusOnTokenField(false) : m_reclaimFocusOnTokenField(false)
, m_queryNewListNonRecursive(false) , m_queryNewListNonRecursive(false)
, m_queryGlobalBanList(true) , m_queryGlobalBanList(true)
, m_lockedIconShaderResource(nullptr)
, m_hostMessageColor(1.00f, 1.00f, 1.00f, 1.00f) , m_hostMessageColor(1.00f, 1.00f, 1.00f, 1.00f)
, m_hiddenServerMessageColor(0.00f, 1.00f, 0.00f, 1.00f) , m_hiddenServerMessageColor(0.00f, 1.00f, 0.00f, 1.00f)
{ {
@ -57,8 +58,6 @@ CBrowser::CBrowser(void)
memset(m_serverAddressTextBuf, '\0', sizeof(m_serverAddressTextBuf)); memset(m_serverAddressTextBuf, '\0', sizeof(m_serverAddressTextBuf));
memset(m_serverNetKeyTextBuf, '\0', sizeof(m_serverNetKeyTextBuf)); memset(m_serverNetKeyTextBuf, '\0', sizeof(m_serverNetKeyTextBuf));
m_lockedIconDataResource = GetModuleResource(IDB_PNG2);
m_levelName = "mp_lobby"; m_levelName = "mp_lobby";
m_gameMode = "dev_default"; m_gameMode = "dev_default";
} }
@ -78,7 +77,10 @@ bool CBrowser::Init(void)
{ {
SetStyleVar(927.f, 524.f, -500.f, 50.f); SetStyleVar(927.f, 524.f, -500.f, 50.f);
bool ret = LoadTextureBuffer(reinterpret_cast<unsigned char*>(m_lockedIconDataResource.m_pData), int(m_lockedIconDataResource.m_nSize), HMODULE sdkModule = reinterpret_cast<HMODULE>(g_SDKDll.GetModuleBase());
m_lockedIconDataResource = GetModuleResource(sdkModule, IDB_PNG2);
const bool ret = LoadTextureBuffer(reinterpret_cast<unsigned char*>(m_lockedIconDataResource.m_pData), int(m_lockedIconDataResource.m_nSize),
&m_lockedIconShaderResource, &m_lockedIconDataResource.m_nWidth, &m_lockedIconDataResource.m_nHeight); &m_lockedIconShaderResource, &m_lockedIconDataResource.m_nWidth, &m_lockedIconDataResource.m_nHeight);
IM_ASSERT(ret && m_lockedIconShaderResource); IM_ASSERT(ret && m_lockedIconShaderResource);

View File

@ -912,22 +912,19 @@ void CConsole::DetermineAutoCompleteWindowRect(void)
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
bool CConsole::LoadFlagIcons(void) bool CConsole::LoadFlagIcons(void)
{ {
HMODULE sdkModule = reinterpret_cast<HMODULE>(g_SDKDll.GetModuleBase());
bool ret = false; bool ret = false;
// Get all flag image resources for displaying flags. // Get all flag image resources for displaying flags.
for (int i = IDB_PNG3, k = NULL; i <= IDB_PNG32; i++, k++) for (int i = IDB_PNG3, k = NULL; i <= IDB_PNG32; i++, k++)
{ {
m_vecFlagIcons.push_back(MODULERESOURCE(GetModuleResource(i))); m_vecFlagIcons.push_back(MODULERESOURCE(GetModuleResource(sdkModule, i)));
MODULERESOURCE& rFlagIcon = m_vecFlagIcons[k]; MODULERESOURCE& rFlagIcon = m_vecFlagIcons[k];
ret = LoadTextureBuffer(reinterpret_cast<unsigned char*>(rFlagIcon.m_pData), // !TODO: Fall-back texture. ret = LoadTextureBuffer(reinterpret_cast<unsigned char*>(rFlagIcon.m_pData), // !TODO: Fall-back texture.
static_cast<int>(rFlagIcon.m_nSize), &rFlagIcon.m_idIcon, &rFlagIcon.m_nWidth, &rFlagIcon.m_nHeight); static_cast<int>(rFlagIcon.m_nSize), &rFlagIcon.m_idIcon, &rFlagIcon.m_nWidth, &rFlagIcon.m_nHeight);
if (!ret) Assert(ret, "Texture flags load failed for %i", i);
{
Assert(0, "Texture flags load failed for %i", i);
break;
}
} }
m_autoCompleteTexturesLoaded = ret; m_autoCompleteTexturesLoaded = ret;

View File

@ -9,27 +9,22 @@
//############################################################################# //#############################################################################
// //
//############################################################################# //#############################################################################
MODULERESOURCE GetModuleResource(int iResource) MODULERESOURCE GetModuleResource(HMODULE hModule, const int iResource)
{ {
static HGLOBAL rcData = NULL; const HRSRC rc = FindResource(hModule, MAKEINTRESOURCE(iResource), MAKEINTRESOURCE(PNG));
HMODULE handle;
GetModuleHandleExA(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS |
GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT, (LPCSTR)"unnamed", &handle);
HRSRC rc = FindResource(handle, MAKEINTRESOURCE(iResource), MAKEINTRESOURCE(PNG));
if (!rc) if (!rc)
{ {
assert(rc == NULL); assert(0);
return MODULERESOURCE(); return MODULERESOURCE();
} }
rcData = LoadResource(handle, rc); const HGLOBAL rcData = LoadResource(hModule, rc);
if (!rcData) if (!rcData)
{ {
assert(rcData == NULL); assert(0);
return MODULERESOURCE(); return MODULERESOURCE();
} }
return (MODULERESOURCE(LockResource(rcData), SizeofResource(handle, rc)));
return (MODULERESOURCE(LockResource(rcData), SizeofResource(hModule, rc)));
} }
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////

View File

@ -26,4 +26,4 @@ struct MODULERESOURCE
int m_nHeight; int m_nHeight;
}; };
MODULERESOURCE GetModuleResource(int iResource); MODULERESOURCE GetModuleResource(HMODULE hModule, const int iResource);