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 "DDraw/ActivateAppHandler.h"
|
||||
#include "DDraw/DirectDraw.h"
|
||||
#include "DDraw/DirectDrawSurface.h"
|
||||
#include "DDraw/DirectDrawClipper.h"
|
||||
#include "DDraw/DirectDrawPalette.h"
|
||||
#include "DDraw/DirectDrawSurface.h"
|
||||
#include "DDraw/Hooks.h"
|
||||
#include "DDraw/RealPrimarySurface.h"
|
||||
#include "DDraw/Repository.h"
|
||||
@ -31,6 +32,20 @@ namespace
|
||||
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)
|
||||
{
|
||||
PALETTEENTRY paletteEntries[2] = {};
|
||||
@ -112,8 +127,9 @@ namespace DDraw
|
||||
}
|
||||
|
||||
hookDirectDraw(*dd7);
|
||||
hookDirectDrawSurface(*dd7);
|
||||
hookDirectDrawClipper(*dd7);
|
||||
hookDirectDrawPalette(*dd7);
|
||||
hookDirectDrawSurface(*dd7);
|
||||
}
|
||||
|
||||
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="DDraw\ActivateAppHandler.h" />
|
||||
<ClInclude Include="DDraw\DirectDraw.h" />
|
||||
<ClInclude Include="DDraw\DirectDrawClipper.h" />
|
||||
<ClInclude Include="DDraw\DirectDrawPalette.h" />
|
||||
<ClInclude Include="DDraw\DirectDrawSurface.h" />
|
||||
<ClInclude Include="DDraw\DisplayMode.h" />
|
||||
@ -196,6 +197,7 @@
|
||||
<ClInclude Include="DDraw\Types.h" />
|
||||
<ClInclude Include="DDraw\IReleaseNotifier.h" />
|
||||
<ClInclude Include="DDraw\RealPrimarySurface.h" />
|
||||
<ClInclude Include="DDraw\Visitors\DirectDrawClipperVtblVisitor.h" />
|
||||
<ClInclude Include="DDraw\Visitors\DirectDrawPaletteVtblVisitor.h" />
|
||||
<ClInclude Include="DDraw\Visitors\DirectDrawSurfaceVtblVisitor.h" />
|
||||
<ClInclude Include="DDraw\Visitors\DirectDrawVtblVisitor.h" />
|
||||
@ -245,6 +247,7 @@
|
||||
<ClCompile Include="D3dDdi\OversizedResource.cpp" />
|
||||
<ClCompile Include="DDraw\ActivateAppHandler.cpp" />
|
||||
<ClCompile Include="DDraw\DirectDraw.cpp" />
|
||||
<ClCompile Include="DDraw\DirectDrawClipper.cpp" />
|
||||
<ClCompile Include="DDraw\DirectDrawPalette.cpp" />
|
||||
<ClCompile Include="DDraw\DirectDrawSurface.cpp" />
|
||||
<ClCompile Include="DDraw\DisplayMode.cpp" />
|
||||
|
@ -300,6 +300,12 @@
|
||||
<ClInclude Include="D3dDdi\OversizedResource.h">
|
||||
<Filter>Header Files\D3dDdi</Filter>
|
||||
</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>
|
||||
<ClCompile Include="Gdi\Gdi.cpp">
|
||||
@ -458,6 +464,9 @@
|
||||
<ClCompile Include="D3dDdi\OversizedResource.cpp">
|
||||
<Filter>Source Files\D3dDdi</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="DDraw\DirectDrawClipper.cpp">
|
||||
<Filter>Source Files\DDraw</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Dll\DDrawCompat.def">
|
||||
|
Loading…
x
Reference in New Issue
Block a user