mirror of
https://github.com/narzoul/DDrawCompat
synced 2024-12-30 08:55:36 +01:00
Hooked the IDirectDrawClipper interface
This commit is contained in:
parent
cd22b333e3
commit
d1cd72b304
8
DDrawCompat/DDraw/DirectDrawClipper.cpp
Normal file
8
DDrawCompat/DDraw/DirectDrawClipper.cpp
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#include "DDraw/DirectDrawClipper.h"
|
||||||
|
|
||||||
|
namespace DDraw
|
||||||
|
{
|
||||||
|
void DirectDrawClipper::setCompatVtable(IDirectDrawClipperVtbl& /*vtable*/)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
15
DDrawCompat/DDraw/DirectDrawClipper.h
Normal file
15
DDrawCompat/DDraw/DirectDrawClipper.h
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "Common/CompatVtable.h"
|
||||||
|
#include "DDraw/Visitors/DirectDrawClipperVtblVisitor.h"
|
||||||
|
|
||||||
|
namespace DDraw
|
||||||
|
{
|
||||||
|
class DirectDrawClipper : public CompatVtable<IDirectDrawClipperVtbl>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static void setCompatVtable(IDirectDrawClipperVtbl& vtable);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
SET_COMPAT_VTABLE(IDirectDrawClipperVtbl, DDraw::DirectDrawClipper);
|
@ -7,8 +7,9 @@
|
|||||||
#include "Common/Log.h"
|
#include "Common/Log.h"
|
||||||
#include "DDraw/ActivateAppHandler.h"
|
#include "DDraw/ActivateAppHandler.h"
|
||||||
#include "DDraw/DirectDraw.h"
|
#include "DDraw/DirectDraw.h"
|
||||||
#include "DDraw/DirectDrawSurface.h"
|
#include "DDraw/DirectDrawClipper.h"
|
||||||
#include "DDraw/DirectDrawPalette.h"
|
#include "DDraw/DirectDrawPalette.h"
|
||||||
|
#include "DDraw/DirectDrawSurface.h"
|
||||||
#include "DDraw/Hooks.h"
|
#include "DDraw/Hooks.h"
|
||||||
#include "DDraw/RealPrimarySurface.h"
|
#include "DDraw/RealPrimarySurface.h"
|
||||||
#include "DDraw/Repository.h"
|
#include "DDraw/Repository.h"
|
||||||
@ -31,6 +32,20 @@ namespace
|
|||||||
dd7.detach();
|
dd7.detach();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void hookDirectDrawClipper(CompatRef<IDirectDraw7> dd)
|
||||||
|
{
|
||||||
|
CompatPtr<IDirectDrawClipper> clipper;
|
||||||
|
HRESULT result = dd->CreateClipper(&dd, 0, &clipper.getRef(), nullptr);
|
||||||
|
if (SUCCEEDED(result))
|
||||||
|
{
|
||||||
|
DDraw::DirectDrawClipper::hookVtable(clipper.get()->lpVtbl);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Compat::Log() << "Failed to create a DirectDraw clipper for hooking: " << result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void hookDirectDrawPalette(CompatRef<IDirectDraw7> dd)
|
void hookDirectDrawPalette(CompatRef<IDirectDraw7> dd)
|
||||||
{
|
{
|
||||||
PALETTEENTRY paletteEntries[2] = {};
|
PALETTEENTRY paletteEntries[2] = {};
|
||||||
@ -112,8 +127,9 @@ namespace DDraw
|
|||||||
}
|
}
|
||||||
|
|
||||||
hookDirectDraw(*dd7);
|
hookDirectDraw(*dd7);
|
||||||
hookDirectDrawSurface(*dd7);
|
hookDirectDrawClipper(*dd7);
|
||||||
hookDirectDrawPalette(*dd7);
|
hookDirectDrawPalette(*dd7);
|
||||||
|
hookDirectDrawSurface(*dd7);
|
||||||
}
|
}
|
||||||
|
|
||||||
void uninstallHooks()
|
void uninstallHooks()
|
||||||
|
20
DDrawCompat/DDraw/Visitors/DirectDrawClipperVtblVisitor.h
Normal file
20
DDrawCompat/DDraw/Visitors/DirectDrawClipperVtblVisitor.h
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "Common/VtableVisitor.h"
|
||||||
|
|
||||||
|
template <>
|
||||||
|
struct VtableForEach<IDirectDrawClipperVtbl>
|
||||||
|
{
|
||||||
|
template <typename Vtable, typename Visitor>
|
||||||
|
static void forEach(Visitor& visitor)
|
||||||
|
{
|
||||||
|
VtableForEach<IUnknownVtbl>::forEach<Vtable>(visitor);
|
||||||
|
|
||||||
|
DD_VISIT(GetClipList);
|
||||||
|
DD_VISIT(GetHWnd);
|
||||||
|
DD_VISIT(Initialize);
|
||||||
|
DD_VISIT(IsClipListChanged);
|
||||||
|
DD_VISIT(SetClipList);
|
||||||
|
DD_VISIT(SetHWnd);
|
||||||
|
}
|
||||||
|
};
|
@ -182,6 +182,7 @@
|
|||||||
<ClInclude Include="D3dDdi\Visitors\DeviceFuncsVisitor.h" />
|
<ClInclude Include="D3dDdi\Visitors\DeviceFuncsVisitor.h" />
|
||||||
<ClInclude Include="DDraw\ActivateAppHandler.h" />
|
<ClInclude Include="DDraw\ActivateAppHandler.h" />
|
||||||
<ClInclude Include="DDraw\DirectDraw.h" />
|
<ClInclude Include="DDraw\DirectDraw.h" />
|
||||||
|
<ClInclude Include="DDraw\DirectDrawClipper.h" />
|
||||||
<ClInclude Include="DDraw\DirectDrawPalette.h" />
|
<ClInclude Include="DDraw\DirectDrawPalette.h" />
|
||||||
<ClInclude Include="DDraw\DirectDrawSurface.h" />
|
<ClInclude Include="DDraw\DirectDrawSurface.h" />
|
||||||
<ClInclude Include="DDraw\DisplayMode.h" />
|
<ClInclude Include="DDraw\DisplayMode.h" />
|
||||||
@ -196,6 +197,7 @@
|
|||||||
<ClInclude Include="DDraw\Types.h" />
|
<ClInclude Include="DDraw\Types.h" />
|
||||||
<ClInclude Include="DDraw\IReleaseNotifier.h" />
|
<ClInclude Include="DDraw\IReleaseNotifier.h" />
|
||||||
<ClInclude Include="DDraw\RealPrimarySurface.h" />
|
<ClInclude Include="DDraw\RealPrimarySurface.h" />
|
||||||
|
<ClInclude Include="DDraw\Visitors\DirectDrawClipperVtblVisitor.h" />
|
||||||
<ClInclude Include="DDraw\Visitors\DirectDrawPaletteVtblVisitor.h" />
|
<ClInclude Include="DDraw\Visitors\DirectDrawPaletteVtblVisitor.h" />
|
||||||
<ClInclude Include="DDraw\Visitors\DirectDrawSurfaceVtblVisitor.h" />
|
<ClInclude Include="DDraw\Visitors\DirectDrawSurfaceVtblVisitor.h" />
|
||||||
<ClInclude Include="DDraw\Visitors\DirectDrawVtblVisitor.h" />
|
<ClInclude Include="DDraw\Visitors\DirectDrawVtblVisitor.h" />
|
||||||
@ -245,6 +247,7 @@
|
|||||||
<ClCompile Include="D3dDdi\OversizedResource.cpp" />
|
<ClCompile Include="D3dDdi\OversizedResource.cpp" />
|
||||||
<ClCompile Include="DDraw\ActivateAppHandler.cpp" />
|
<ClCompile Include="DDraw\ActivateAppHandler.cpp" />
|
||||||
<ClCompile Include="DDraw\DirectDraw.cpp" />
|
<ClCompile Include="DDraw\DirectDraw.cpp" />
|
||||||
|
<ClCompile Include="DDraw\DirectDrawClipper.cpp" />
|
||||||
<ClCompile Include="DDraw\DirectDrawPalette.cpp" />
|
<ClCompile Include="DDraw\DirectDrawPalette.cpp" />
|
||||||
<ClCompile Include="DDraw\DirectDrawSurface.cpp" />
|
<ClCompile Include="DDraw\DirectDrawSurface.cpp" />
|
||||||
<ClCompile Include="DDraw\DisplayMode.cpp" />
|
<ClCompile Include="DDraw\DisplayMode.cpp" />
|
||||||
|
@ -300,6 +300,12 @@
|
|||||||
<ClInclude Include="D3dDdi\OversizedResource.h">
|
<ClInclude Include="D3dDdi\OversizedResource.h">
|
||||||
<Filter>Header Files\D3dDdi</Filter>
|
<Filter>Header Files\D3dDdi</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="DDraw\Visitors\DirectDrawClipperVtblVisitor.h">
|
||||||
|
<Filter>Header Files\DDraw\Visitors</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="DDraw\DirectDrawClipper.h">
|
||||||
|
<Filter>Header Files\DDraw</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="Gdi\Gdi.cpp">
|
<ClCompile Include="Gdi\Gdi.cpp">
|
||||||
@ -458,6 +464,9 @@
|
|||||||
<ClCompile Include="D3dDdi\OversizedResource.cpp">
|
<ClCompile Include="D3dDdi\OversizedResource.cpp">
|
||||||
<Filter>Source Files\D3dDdi</Filter>
|
<Filter>Source Files\D3dDdi</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="DDraw\DirectDrawClipper.cpp">
|
||||||
|
<Filter>Source Files\DDraw</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="Dll\DDrawCompat.def">
|
<None Include="Dll\DDrawCompat.def">
|
||||||
|
Loading…
x
Reference in New Issue
Block a user