mirror of
https://github.com/narzoul/DDrawCompat
synced 2024-12-30 08:55:36 +01:00
Moved DLL related parts to Dll namespace and subdirectory
This commit is contained in:
parent
7fc059a02f
commit
b8832a92be
@ -7,7 +7,7 @@
|
||||
#include "Common/Hook.h"
|
||||
#include "Common/Log.h"
|
||||
#include "Common/VtableVisitor.h"
|
||||
#include "DDrawProcs.h"
|
||||
#include "DDraw/ScopedThreadLock.h"
|
||||
|
||||
template <typename Interface>
|
||||
using Vtable = typename std::remove_pointer<decltype(Interface::lpVtbl)>::type;
|
||||
@ -109,7 +109,7 @@ private:
|
||||
template <typename MemberDataPtr, MemberDataPtr ptr, typename Result, typename... Params>
|
||||
static Result STDMETHODCALLTYPE threadSafeFunc(Params... params)
|
||||
{
|
||||
Compat::origProcs.AcquireDDThreadLock();
|
||||
DDraw::ScopedThreadLock lock;
|
||||
#ifdef _DEBUG
|
||||
Compat::LogEnter(s_funcNames[getKey<MemberDataPtr, ptr>()].c_str(), params...);
|
||||
#endif
|
||||
@ -119,14 +119,13 @@ private:
|
||||
#ifdef _DEBUG
|
||||
Compat::LogLeave(s_funcNames[getKey<MemberDataPtr, ptr>()].c_str(), params...) << result;
|
||||
#endif
|
||||
Compat::origProcs.ReleaseDDThreadLock();
|
||||
return result;
|
||||
}
|
||||
|
||||
template <typename MemberDataPtr, MemberDataPtr ptr, typename... Params>
|
||||
static void STDMETHODCALLTYPE threadSafeFunc(Params... params)
|
||||
{
|
||||
Compat::origProcs.AcquireDDThreadLock();
|
||||
DDraw::ScopedThreadLock lock;
|
||||
#ifdef _DEBUG
|
||||
Compat::LogEnter(s_funcNames[getKey<MemberDataPtr, ptr>()].c_str(), params...);
|
||||
#endif
|
||||
@ -136,7 +135,6 @@ private:
|
||||
#ifdef _DEBUG
|
||||
Compat::LogLeave(s_funcNames[getKey<MemberDataPtr, ptr>()].c_str(), params...);
|
||||
#endif
|
||||
Compat::origProcs.ReleaseDDThreadLock();
|
||||
}
|
||||
|
||||
const Vtable<Interface>& m_origVtable;
|
||||
|
@ -9,7 +9,6 @@
|
||||
#include "DDraw/IReleaseNotifier.h"
|
||||
#include "DDraw/RealPrimarySurface.h"
|
||||
#include "DDraw/Repository.h"
|
||||
#include "DDrawProcs.h"
|
||||
#include "Gdi/Gdi.h"
|
||||
|
||||
namespace
|
||||
|
@ -2,7 +2,7 @@
|
||||
#include "Common/Hook.h"
|
||||
#include "DDraw/DisplayMode.h"
|
||||
#include "DDraw/Repository.h"
|
||||
#include "DDrawProcs.h"
|
||||
#include "Dll/Procs.h"
|
||||
|
||||
namespace
|
||||
{
|
||||
@ -142,7 +142,7 @@ namespace
|
||||
{
|
||||
if (g_compatibleDc)
|
||||
{
|
||||
Compat::origProcs.AcquireDDThreadLock();
|
||||
Dll::g_origProcs.AcquireDDThreadLock();
|
||||
g_compatibleSurface->ReleaseDC(g_compatibleSurface, g_compatibleDc);
|
||||
g_compatibleDc = nullptr;
|
||||
g_compatibleSurface.release();
|
||||
@ -165,7 +165,7 @@ namespace
|
||||
if (g_compatibleSurface &&
|
||||
SUCCEEDED(g_compatibleSurface->GetDC(g_compatibleSurface, &g_compatibleDc)))
|
||||
{
|
||||
Compat::origProcs.ReleaseDDThreadLock();
|
||||
Dll::g_origProcs.ReleaseDDThreadLock();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -12,6 +12,7 @@
|
||||
#include "DDraw/Hooks.h"
|
||||
#include "DDraw/RealPrimarySurface.h"
|
||||
#include "DDraw/Repository.h"
|
||||
#include "Dll/Procs.h"
|
||||
|
||||
namespace
|
||||
{
|
||||
@ -83,7 +84,7 @@ namespace DDraw
|
||||
void installHooks()
|
||||
{
|
||||
CompatPtr<IDirectDraw> dd;
|
||||
CALL_ORIG_DDRAW(DirectDrawCreate, nullptr, &dd.getRef(), nullptr);
|
||||
CALL_ORIG_PROC(DirectDrawCreate, nullptr, &dd.getRef(), nullptr);
|
||||
if (!dd)
|
||||
{
|
||||
Compat::Log() << "Failed to create a DirectDraw object for hooking";
|
||||
|
@ -11,7 +11,6 @@
|
||||
#include "DDraw/RealPrimarySurface.h"
|
||||
#include "DDraw/ScopedThreadLock.h"
|
||||
#include "DDraw/Types.h"
|
||||
#include "DDrawProcs.h"
|
||||
#include "Gdi/Gdi.h"
|
||||
|
||||
namespace
|
||||
|
@ -4,7 +4,7 @@
|
||||
#include "Common/CompatPtr.h"
|
||||
#include "Common/Log.h"
|
||||
#include "DDraw/Repository.h"
|
||||
#include "DDrawProcs.h"
|
||||
#include "Dll/Procs.h"
|
||||
|
||||
namespace
|
||||
{
|
||||
@ -26,7 +26,7 @@ namespace
|
||||
CompatPtr<IDirectDraw7> createDirectDraw()
|
||||
{
|
||||
CompatPtr<IDirectDraw7> dd;
|
||||
HRESULT result = CALL_ORIG_DDRAW(DirectDrawCreateEx, nullptr,
|
||||
HRESULT result = CALL_ORIG_PROC(DirectDrawCreateEx, nullptr,
|
||||
reinterpret_cast<void**>(&dd.getRef()), IID_IDirectDraw7, nullptr);
|
||||
if (FAILED(result))
|
||||
{
|
||||
|
@ -1,6 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include "DDrawProcs.h"
|
||||
#include "Dll/Procs.h"
|
||||
|
||||
namespace DDraw
|
||||
{
|
||||
@ -9,12 +9,12 @@ namespace DDraw
|
||||
public:
|
||||
ScopedThreadLock()
|
||||
{
|
||||
Compat::origProcs.AcquireDDThreadLock();
|
||||
Dll::g_origProcs.AcquireDDThreadLock();
|
||||
}
|
||||
|
||||
~ScopedThreadLock()
|
||||
{
|
||||
Compat::origProcs.ReleaseDDThreadLock();
|
||||
Dll::g_origProcs.ReleaseDDThreadLock();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -96,7 +96,7 @@
|
||||
<ObjectFileName>$(IntDir)%(RelativeDir)</ObjectFileName>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<ModuleDefinitionFile>DDrawCompat.def</ModuleDefinitionFile>
|
||||
<ModuleDefinitionFile>Dll/DDrawCompat.def</ModuleDefinitionFile>
|
||||
<AdditionalDependencies>dxguid.lib;detours.lib;msimg32.lib;oleacc.lib;uxtheme.lib;dwmapi.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
@ -125,7 +125,7 @@
|
||||
<ObjectFileName>$(IntDir)%(RelativeDir)</ObjectFileName>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<ModuleDefinitionFile>DDrawCompat.def</ModuleDefinitionFile>
|
||||
<ModuleDefinitionFile>Dll/DDrawCompat.def</ModuleDefinitionFile>
|
||||
<AdditionalDependencies>dxguid.lib;detours.lib;msimg32.lib;oleacc.lib;uxtheme.lib;dwmapi.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<GenerateDebugInformation>No</GenerateDebugInformation>
|
||||
</Link>
|
||||
@ -169,7 +169,6 @@
|
||||
<ClInclude Include="D3dDdi\Visitors\AdapterFuncsVisitor.h" />
|
||||
<ClInclude Include="D3dDdi\Visitors\DeviceCallbacksVisitor.h" />
|
||||
<ClInclude Include="D3dDdi\Visitors\DeviceFuncsVisitor.h" />
|
||||
<ClInclude Include="DDrawProcs.h" />
|
||||
<ClInclude Include="DDraw\ActivateAppHandler.h" />
|
||||
<ClInclude Include="DDraw\DirectDraw.h" />
|
||||
<ClInclude Include="DDraw\DirectDrawPalette.h" />
|
||||
@ -193,6 +192,7 @@
|
||||
<ClInclude Include="Direct3d\Types.h" />
|
||||
<ClInclude Include="Direct3d\Visitors\Direct3dDeviceVtblVisitor.h" />
|
||||
<ClInclude Include="Direct3d\Visitors\Direct3dVtblVisitor.h" />
|
||||
<ClInclude Include="Dll\Procs.h" />
|
||||
<ClInclude Include="Gdi\Gdi.h" />
|
||||
<ClInclude Include="Gdi\Caret.h" />
|
||||
<ClInclude Include="Gdi\Dc.h" />
|
||||
@ -231,8 +231,9 @@
|
||||
<ClCompile Include="Direct3d\Direct3d.cpp" />
|
||||
<ClCompile Include="Direct3d\Direct3dDevice.cpp" />
|
||||
<ClCompile Include="Direct3d\Hooks.cpp" />
|
||||
<ClCompile Include="DllMain.cpp" />
|
||||
<ClCompile Include="DDrawProcs.cpp" />
|
||||
<ClCompile Include="Dll\Procs.cpp" />
|
||||
<ClCompile Include="Dll\DllMain.cpp" />
|
||||
<ClCompile Include="Dll\UnmodifiedProcs.cpp" />
|
||||
<ClCompile Include="Gdi\Gdi.cpp" />
|
||||
<ClCompile Include="Gdi\Caret.cpp" />
|
||||
<ClCompile Include="Gdi\Dc.cpp" />
|
||||
@ -243,13 +244,12 @@
|
||||
<ClCompile Include="Gdi\ScrollFunctions.cpp" />
|
||||
<ClCompile Include="Gdi\TitleBar.cpp" />
|
||||
<ClCompile Include="Gdi\WinProc.cpp" />
|
||||
<ClCompile Include="UnmodifiedDDrawProcs.cpp" />
|
||||
<ClCompile Include="Win32\FontSmoothing.cpp" />
|
||||
<ClCompile Include="Win32\MsgHooks.cpp" />
|
||||
<ClCompile Include="Win32\Registry.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="DDrawCompat.def" />
|
||||
<None Include="Dll\DDrawCompat.def" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
|
@ -61,11 +61,14 @@
|
||||
<Filter Include="Header Files\Config">
|
||||
<UniqueIdentifier>{5c6203cd-b703-4af0-a283-fa9eb72c2d07}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Header Files\Dll">
|
||||
<UniqueIdentifier>{8a50d66d-8372-4dde-bbd1-302a52d7a385}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\Dll">
|
||||
<UniqueIdentifier>{41544d1c-712a-4bef-8913-a40155a33ba0}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="DDrawProcs.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Gdi\Gdi.h">
|
||||
<Filter>Header Files\Gdi</Filter>
|
||||
</ClInclude>
|
||||
@ -234,17 +237,11 @@
|
||||
<ClInclude Include="Config\Config.h">
|
||||
<Filter>Header Files\Config</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Dll\Procs.h">
|
||||
<Filter>Header Files\Dll</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="DllMain.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="UnmodifiedDDrawProcs.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="DDrawProcs.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Gdi\Gdi.cpp">
|
||||
<Filter>Source Files\Gdi</Filter>
|
||||
</ClCompile>
|
||||
@ -353,10 +350,19 @@
|
||||
<ClCompile Include="Win32\Registry.cpp">
|
||||
<Filter>Source Files\Win32</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Dll\DllMain.cpp">
|
||||
<Filter>Source Files\Dll</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Dll\Procs.cpp">
|
||||
<Filter>Source Files\Dll</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Dll\UnmodifiedProcs.cpp">
|
||||
<Filter>Source Files\Dll</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="DDrawCompat.def">
|
||||
<Filter>Source Files</Filter>
|
||||
<None Include="Dll\DDrawCompat.def">
|
||||
<Filter>Source Files\Dll</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -1,6 +0,0 @@
|
||||
#include "DDrawProcs.h"
|
||||
|
||||
namespace Compat
|
||||
{
|
||||
DDrawProcs origProcs = {};
|
||||
}
|
@ -9,6 +9,7 @@
|
||||
#include "Direct3d/Direct3d.h"
|
||||
#include "Direct3d/Direct3dDevice.h"
|
||||
#include "Direct3d/Hooks.h"
|
||||
#include "Dll/Procs.h"
|
||||
|
||||
namespace
|
||||
{
|
||||
@ -123,7 +124,7 @@ namespace Direct3d
|
||||
{
|
||||
auto dd7(DDraw::Repository::getDirectDraw());
|
||||
CompatPtr<IDirectDraw> dd;
|
||||
CALL_ORIG_DDRAW(DirectDrawCreate, nullptr, &dd.getRef(), nullptr);
|
||||
CALL_ORIG_PROC(DirectDrawCreate, nullptr, &dd.getRef(), nullptr);
|
||||
if (!dd || !dd7 || FAILED(dd->SetCooperativeLevel(dd, nullptr, DDSCL_NORMAL)))
|
||||
{
|
||||
Compat::Log() << "Failed to hook Direct3d interfaces";
|
||||
|
@ -9,8 +9,8 @@
|
||||
#include "D3dDdi/Hooks.h"
|
||||
#include "DDraw/DisplayMode.h"
|
||||
#include "DDraw/Hooks.h"
|
||||
#include "DDrawProcs.h"
|
||||
#include "Direct3d/Hooks.h"
|
||||
#include "Dll/Procs.h"
|
||||
#include "Gdi/Gdi.h"
|
||||
#include "Win32/FontSmoothing.h"
|
||||
#include "Win32/MsgHooks.h"
|
||||
@ -18,6 +18,8 @@
|
||||
|
||||
struct IDirectInput;
|
||||
|
||||
HRESULT WINAPI SetAppCompatData(DWORD, DWORD);
|
||||
|
||||
namespace
|
||||
{
|
||||
HMODULE g_origDDrawModule = nullptr;
|
||||
@ -79,8 +81,8 @@ namespace
|
||||
}
|
||||
}
|
||||
|
||||
#define LOAD_ORIGINAL_DDRAW_PROC(procName) \
|
||||
Compat::origProcs.procName = GetProcAddress(g_origDDrawModule, #procName);
|
||||
#define LOAD_ORIGINAL_PROC(procName) \
|
||||
Dll::g_origProcs.procName = GetProcAddress(g_origDDrawModule, #procName);
|
||||
|
||||
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID /*lpvReserved*/)
|
||||
{
|
||||
@ -112,8 +114,8 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID /*lpvReserved*/)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
VISIT_ALL_DDRAW_PROCS(LOAD_ORIGINAL_DDRAW_PROC);
|
||||
Compat::origProcs.DirectInputCreateA = GetProcAddress(g_origDInputModule, "DirectInputCreateA");
|
||||
VISIT_ALL_PROCS(LOAD_ORIGINAL_PROC);
|
||||
Dll::g_origProcs.DirectInputCreateA = GetProcAddress(g_origDInputModule, "DirectInputCreateA");
|
||||
|
||||
const BOOL disablePriorityBoost = TRUE;
|
||||
SetProcessPriorityBoost(GetCurrentProcess(), disablePriorityBoost);
|
||||
@ -125,13 +127,8 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID /*lpvReserved*/)
|
||||
Win32::MsgHooks::installHooks();
|
||||
Time::init();
|
||||
|
||||
if (Compat::origProcs.SetAppCompatData)
|
||||
{
|
||||
typedef HRESULT WINAPI SetAppCompatDataFunc(DWORD, DWORD);
|
||||
auto setAppCompatData = reinterpret_cast<SetAppCompatDataFunc*>(Compat::origProcs.SetAppCompatData);
|
||||
const DWORD disableMaxWindowedMode = 12;
|
||||
setAppCompatData(disableMaxWindowedMode, 0);
|
||||
}
|
||||
const DWORD disableMaxWindowedMode = 12;
|
||||
CALL_ORIG_PROC(SetAppCompatData, disableMaxWindowedMode, 0);
|
||||
|
||||
Compat::Log() << "DDrawCompat loaded successfully";
|
||||
}
|
||||
@ -159,7 +156,7 @@ extern "C" HRESULT WINAPI DirectDrawCreate(
|
||||
Compat::LogEnter(__func__, lpGUID, lplpDD, pUnkOuter);
|
||||
installHooks();
|
||||
suppressEmulatedDirectDraw(lpGUID);
|
||||
HRESULT result = CALL_ORIG_DDRAW(DirectDrawCreate, lpGUID, lplpDD, pUnkOuter);
|
||||
HRESULT result = CALL_ORIG_PROC(DirectDrawCreate, lpGUID, lplpDD, pUnkOuter);
|
||||
Compat::LogLeave(__func__, lpGUID, lplpDD, pUnkOuter) << result;
|
||||
return result;
|
||||
}
|
||||
@ -173,7 +170,7 @@ extern "C" HRESULT WINAPI DirectDrawCreateEx(
|
||||
Compat::LogEnter(__func__, lpGUID, lplpDD, iid, pUnkOuter);
|
||||
installHooks();
|
||||
suppressEmulatedDirectDraw(lpGUID);
|
||||
HRESULT result = CALL_ORIG_DDRAW(DirectDrawCreateEx, lpGUID, lplpDD, iid, pUnkOuter);
|
||||
HRESULT result = CALL_ORIG_PROC(DirectDrawCreateEx, lpGUID, lplpDD, iid, pUnkOuter);
|
||||
Compat::LogLeave(__func__, lpGUID, lplpDD, iid, pUnkOuter) << result;
|
||||
return result;
|
||||
}
|
||||
@ -185,7 +182,7 @@ extern "C" HRESULT WINAPI DirectInputCreateA(
|
||||
LPUNKNOWN punkOuter)
|
||||
{
|
||||
Compat::LogEnter(__func__, hinst, dwVersion, lplpDirectInput, punkOuter);
|
||||
HRESULT result = CALL_ORIG_DDRAW(DirectInputCreateA, hinst, dwVersion, lplpDirectInput, punkOuter);
|
||||
HRESULT result = CALL_ORIG_PROC(DirectInputCreateA, hinst, dwVersion, lplpDirectInput, punkOuter);
|
||||
Compat::LogLeave(__func__, hinst, dwVersion, lplpDirectInput, punkOuter) << result;
|
||||
return result;
|
||||
}
|
6
DDrawCompat/Dll/Procs.cpp
Normal file
6
DDrawCompat/Dll/Procs.cpp
Normal file
@ -0,0 +1,6 @@
|
||||
#include "Dll/Procs.h"
|
||||
|
||||
namespace Dll
|
||||
{
|
||||
Procs g_origProcs = {};
|
||||
}
|
@ -4,7 +4,7 @@
|
||||
|
||||
#include <Windows.h>
|
||||
|
||||
#define VISIT_UNMODIFIED_DDRAW_PROCS(visit) \
|
||||
#define VISIT_UNMODIFIED_PROCS(visit) \
|
||||
visit(AcquireDDThreadLock) \
|
||||
visit(CompleteCreateSysmemSurface) \
|
||||
visit(D3DParseUnknownCommand) \
|
||||
@ -26,30 +26,30 @@
|
||||
visit(ReleaseDDThreadLock) \
|
||||
visit(SetAppCompatData)
|
||||
|
||||
#define VISIT_MODIFIED_DDRAW_PROCS(visit) \
|
||||
#define VISIT_MODIFIED_PROCS(visit) \
|
||||
visit(DirectDrawCreate) \
|
||||
visit(DirectDrawCreateEx)
|
||||
|
||||
#define VISIT_ALL_DDRAW_PROCS(visit) \
|
||||
VISIT_UNMODIFIED_DDRAW_PROCS(visit) \
|
||||
VISIT_MODIFIED_DDRAW_PROCS(visit)
|
||||
#define VISIT_ALL_PROCS(visit) \
|
||||
VISIT_UNMODIFIED_PROCS(visit) \
|
||||
VISIT_MODIFIED_PROCS(visit)
|
||||
|
||||
#define ADD_FARPROC_MEMBER(memberName) FARPROC memberName;
|
||||
|
||||
namespace Compat
|
||||
namespace Dll
|
||||
{
|
||||
struct DDrawProcs
|
||||
struct Procs
|
||||
{
|
||||
VISIT_ALL_DDRAW_PROCS(ADD_FARPROC_MEMBER);
|
||||
VISIT_ALL_PROCS(ADD_FARPROC_MEMBER);
|
||||
FARPROC DirectInputCreateA;
|
||||
};
|
||||
|
||||
extern DDrawProcs origProcs;
|
||||
extern Procs g_origProcs;
|
||||
}
|
||||
|
||||
#undef ADD_FARPROC_MEMBER
|
||||
|
||||
#define CALL_ORIG_DDRAW(procName, ...) \
|
||||
(Compat::origProcs.procName ? \
|
||||
reinterpret_cast<decltype(procName)*>(Compat::origProcs.procName)(__VA_ARGS__) : \
|
||||
#define CALL_ORIG_PROC(procName, ...) \
|
||||
(Dll::g_origProcs.procName ? \
|
||||
reinterpret_cast<decltype(procName)*>(Dll::g_origProcs.procName)(__VA_ARGS__) : \
|
||||
E_FAIL)
|
9
DDrawCompat/Dll/UnmodifiedProcs.cpp
Normal file
9
DDrawCompat/Dll/UnmodifiedProcs.cpp
Normal file
@ -0,0 +1,9 @@
|
||||
#include "Dll/Procs.h"
|
||||
|
||||
#define CREATE_PROC_STUB(procName) \
|
||||
extern "C" __declspec(naked) void __stdcall procName() \
|
||||
{ \
|
||||
__asm jmp Dll::g_origProcs.procName \
|
||||
}
|
||||
|
||||
VISIT_UNMODIFIED_PROCS(CREATE_PROC_STUB)
|
@ -6,7 +6,7 @@
|
||||
#include "Config/Config.h"
|
||||
#include "DDraw/CompatPrimarySurface.h"
|
||||
#include "DDraw/Repository.h"
|
||||
#include "DDrawProcs.h"
|
||||
#include "Dll/Procs.h"
|
||||
#include "Gdi/DcCache.h"
|
||||
|
||||
namespace
|
||||
@ -45,7 +45,7 @@ namespace
|
||||
}
|
||||
|
||||
// Release DD critical section acquired by IDirectDrawSurface7::GetDC to avoid deadlocks
|
||||
Compat::origProcs.ReleaseDDThreadLock();
|
||||
Dll::g_origProcs.ReleaseDDThreadLock();
|
||||
|
||||
cachedDc.surface = surface.detach();
|
||||
cachedDc.dc = dc;
|
||||
@ -105,7 +105,7 @@ namespace
|
||||
void releaseCachedDc(CachedDc cachedDc)
|
||||
{
|
||||
// Reacquire DD critical section that was temporarily released after IDirectDrawSurface7::GetDC
|
||||
Compat::origProcs.AcquireDDThreadLock();
|
||||
Dll::g_origProcs.AcquireDDThreadLock();
|
||||
|
||||
HRESULT result = cachedDc.surface->ReleaseDC(cachedDc.surface, cachedDc.dc);
|
||||
if (FAILED(result))
|
||||
|
@ -4,7 +4,7 @@
|
||||
#include "DDraw/CompatPrimarySurface.h"
|
||||
#include "DDraw/PaletteConverter.h"
|
||||
#include "DDraw/RealPrimarySurface.h"
|
||||
#include "DDrawProcs.h"
|
||||
#include "Dll/Procs.h"
|
||||
#include "Gdi/Caret.h"
|
||||
#include "Gdi/DcCache.h"
|
||||
#include "Gdi/DcFunctions.h"
|
||||
@ -93,7 +93,7 @@ namespace
|
||||
}
|
||||
g_ddLockFlags = 0;
|
||||
|
||||
Compat::origProcs.ReleaseDDThreadLock();
|
||||
Dll::g_origProcs.ReleaseDDThreadLock();
|
||||
}
|
||||
}
|
||||
|
||||
@ -113,11 +113,11 @@ namespace Gdi
|
||||
if (0 == g_renderingRefCount)
|
||||
{
|
||||
LeaveCriticalSection(&g_gdiCriticalSection);
|
||||
Compat::origProcs.AcquireDDThreadLock();
|
||||
Dll::g_origProcs.AcquireDDThreadLock();
|
||||
EnterCriticalSection(&g_gdiCriticalSection);
|
||||
if (!lockPrimarySurface(lockFlags))
|
||||
{
|
||||
Compat::origProcs.ReleaseDDThreadLock();
|
||||
Dll::g_origProcs.ReleaseDDThreadLock();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -1,9 +0,0 @@
|
||||
#include "DDrawProcs.h"
|
||||
|
||||
#define CREATE_DDRAW_PROC_STUB(procName) \
|
||||
extern "C" __declspec(naked) void __stdcall procName() \
|
||||
{ \
|
||||
__asm jmp Compat::origProcs.procName \
|
||||
}
|
||||
|
||||
VISIT_UNMODIFIED_DDRAW_PROCS(CREATE_DDRAW_PROC_STUB)
|
Loading…
x
Reference in New Issue
Block a user