mirror of
https://github.com/narzoul/DDrawCompat
synced 2024-12-30 08:55:36 +01:00
Reduced release binary size
Some unnecessary debug related stuff is removed from the release build to reduce the binary size (and maybe gain a slight performance boost).
This commit is contained in:
parent
b71a87baea
commit
9798237c0f
@ -59,18 +59,11 @@ private:
|
||||
{
|
||||
public:
|
||||
template <typename MemberDataPtr, MemberDataPtr ptr>
|
||||
void visit(const std::string& vtableTypeName, const std::string& funcName)
|
||||
void visit()
|
||||
{
|
||||
s_funcNames[getKey<MemberDataPtr, ptr>()] = vtableTypeName + "::" + funcName;
|
||||
|
||||
if (!(s_compatVtable.*ptr))
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
s_threadSafeVtable.*ptr = getThreadSafeFuncPtr<MemberDataPtr, ptr>(s_compatVtable.*ptr);
|
||||
hookMethod(reinterpret_cast<void*&>(s_origVtable.*ptr), s_threadSafeVtable.*ptr);
|
||||
#else
|
||||
s_threadSafeVtable.*ptr = s_origVtable.*ptr;
|
||||
#endif
|
||||
s_compatVtable.*ptr = s_origVtable.*ptr;
|
||||
}
|
||||
else
|
||||
@ -80,6 +73,20 @@ private:
|
||||
}
|
||||
}
|
||||
|
||||
template <typename MemberDataPtr, MemberDataPtr ptr>
|
||||
void visitDebug(const std::string& vtableTypeName, const std::string& funcName)
|
||||
{
|
||||
s_funcNames[getKey<MemberDataPtr, ptr>()] = vtableTypeName + "::" + funcName;
|
||||
|
||||
s_threadSafeVtable.*ptr = getThreadSafeFuncPtr<MemberDataPtr, ptr>(s_compatVtable.*ptr);
|
||||
hookMethod(reinterpret_cast<void*&>(s_origVtable.*ptr), s_threadSafeVtable.*ptr);
|
||||
|
||||
if (!(s_compatVtable.*ptr))
|
||||
{
|
||||
s_compatVtable.*ptr = s_origVtable.*ptr;
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
template <typename Result, typename... Params>
|
||||
using FuncPtr = Result(STDMETHODCALLTYPE *)(Params...);
|
||||
@ -121,7 +128,9 @@ private:
|
||||
static Result STDMETHODCALLTYPE threadSafeFunc(IntfPtr This, Params... params)
|
||||
{
|
||||
Compat::origProcs.AcquireDDThreadLock();
|
||||
#ifdef _DEBUG
|
||||
Compat::LogEnter(s_funcNames[getKey<MemberDataPtr, ptr>()].c_str(), This, params...);
|
||||
#endif
|
||||
|
||||
Result result;
|
||||
auto it = s_vtablePtrToCompatVtable.find(This->lpVtbl);
|
||||
@ -135,7 +144,9 @@ private:
|
||||
result = (s_origVtable.*ptr)(This, params...);
|
||||
}
|
||||
|
||||
#ifdef _DEBUG
|
||||
Compat::LogLeave(s_funcNames[getKey<MemberDataPtr, ptr>()].c_str(), This, params...) << result;
|
||||
#endif
|
||||
Compat::origProcs.ReleaseDDThreadLock();
|
||||
return result;
|
||||
}
|
||||
|
@ -25,8 +25,13 @@ std::string getTypeName()
|
||||
return typeName;
|
||||
}
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define DD_VISIT(member) \
|
||||
visitor.visit<decltype(&Vtable::member), &Vtable::member>(getTypeName<Vtable>(), #member)
|
||||
visitor.visitDebug<decltype(&Vtable::member), &Vtable::member>(getTypeName<Vtable>(), #member)
|
||||
#else
|
||||
#define DD_VISIT(member) \
|
||||
visitor.visit<decltype(&Vtable::member), &Vtable::member>()
|
||||
#endif
|
||||
|
||||
template <>
|
||||
struct DDrawVtableForEach<IUnknownVtbl>
|
||||
|
Loading…
x
Reference in New Issue
Block a user