mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
Implement 'ThreadInServerFrameThread()'
Tier0 export in r2, inline in r5.
This commit is contained in:
parent
514a407e4c
commit
e90d2572b1
@ -40,6 +40,11 @@ bool ThreadInRenderThread()
|
|||||||
return (ThreadGetCurrentId() == g_ThreadRenderThreadID);
|
return (ThreadGetCurrentId() == g_ThreadRenderThreadID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ThreadInServerFrameThread()
|
||||||
|
{
|
||||||
|
return (ThreadGetCurrentId() == (*g_ThreadServerFrameThreadID));
|
||||||
|
}
|
||||||
|
|
||||||
ThreadId_t ThreadGetCurrentId()
|
ThreadId_t ThreadGetCurrentId()
|
||||||
{
|
{
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
@ -55,6 +55,7 @@ inline void ThreadPause()
|
|||||||
|
|
||||||
bool ThreadInMainThread();
|
bool ThreadInMainThread();
|
||||||
bool ThreadInRenderThread();
|
bool ThreadInRenderThread();
|
||||||
|
bool ThreadInServerFrameThread();
|
||||||
ThreadId_t ThreadGetCurrentId();
|
ThreadId_t ThreadGetCurrentId();
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@ -215,6 +216,7 @@ inline auto v_DeclareCurrentThreadIsMainThread = p_DeclareCurrentThreadIsMainThr
|
|||||||
|
|
||||||
inline ThreadId_t* g_ThreadMainThreadID = nullptr;
|
inline ThreadId_t* g_ThreadMainThreadID = nullptr;
|
||||||
inline ThreadId_t g_ThreadRenderThreadID = NULL;
|
inline ThreadId_t g_ThreadRenderThreadID = NULL;
|
||||||
|
inline ThreadId_t* g_ThreadServerFrameThreadID = nullptr;
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
class CThreadFastMutex
|
class CThreadFastMutex
|
||||||
@ -248,6 +250,7 @@ class VThreadTools : public IDetour
|
|||||||
spdlog::debug("| FUN: CThreadFastMutex::ReleaseWaiter : {:#18x} |\n", p_MutexInternal_ReleaseWaiter.GetPtr());
|
spdlog::debug("| FUN: CThreadFastMutex::ReleaseWaiter : {:#18x} |\n", p_MutexInternal_ReleaseWaiter.GetPtr());
|
||||||
spdlog::debug("| FUN: DeclareCurrentThreadIsMainThread : {:#18x} |\n", p_DeclareCurrentThreadIsMainThread.GetPtr());
|
spdlog::debug("| FUN: DeclareCurrentThreadIsMainThread : {:#18x} |\n", p_DeclareCurrentThreadIsMainThread.GetPtr());
|
||||||
spdlog::debug("| VAR: g_ThreadMainThreadID : {:#18x} |\n", reinterpret_cast<uintptr_t>(g_ThreadMainThreadID));
|
spdlog::debug("| VAR: g_ThreadMainThreadID : {:#18x} |\n", reinterpret_cast<uintptr_t>(g_ThreadMainThreadID));
|
||||||
|
spdlog::debug("| VAR: g_ThreadServerFrameThreadID : {:#18x} |\n", reinterpret_cast<uintptr_t>(g_ThreadServerFrameThreadID));
|
||||||
spdlog::debug("+----------------------------------------------------------------+\n");
|
spdlog::debug("+----------------------------------------------------------------+\n");
|
||||||
}
|
}
|
||||||
virtual void GetFun(void) const
|
virtual void GetFun(void) const
|
||||||
@ -262,7 +265,9 @@ class VThreadTools : public IDetour
|
|||||||
}
|
}
|
||||||
virtual void GetVar(void) const
|
virtual void GetVar(void) const
|
||||||
{
|
{
|
||||||
g_ThreadMainThreadID = p_DeclareCurrentThreadIsMainThread.FindPattern("89 05").ResolveRelativeAddressSelf(0x2, 0x6).RCast<DWORD*>();
|
g_ThreadMainThreadID = p_DeclareCurrentThreadIsMainThread.FindPattern("89 05").ResolveRelativeAddressSelf(0x2, 0x6).RCast<ThreadId_t*>();
|
||||||
|
g_ThreadServerFrameThreadID = g_GameDll.FindPatternSIMD(reinterpret_cast<rsig_t>("\x83\x79\x00\x00\x75\x28\x8B"), "xx?xxxx")
|
||||||
|
.FindPatternSelf("8B 05").ResolveRelativeAddressSelf(0x2, 0x6).RCast<ThreadId_t*>();
|
||||||
}
|
}
|
||||||
virtual void GetCon(void) const { }
|
virtual void GetCon(void) const { }
|
||||||
virtual void Attach(void) const { }
|
virtual void Attach(void) const { }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user