Skip to content

Commit dbcc883

Browse files
committed
Overlay: handle device reset, fix alt-tab issues
1 parent 86eb473 commit dbcc883

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

src/hooks_overlay.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,18 @@ class ImguiOverlay : public Hook
169169
Overlay_Render();
170170
}
171171

172+
inline static SafetyHookMid midhook_d3dTemporariesRelease{};
173+
static void dest_d3dTemporariesRelease(SafetyHookContext& ctx)
174+
{
175+
ImGui_ImplDX9_InvalidateDeviceObjects();
176+
}
177+
178+
inline static SafetyHookMid midhook_d3dTemporariesCreate{};
179+
static void dest_d3dTemporariesCreate(SafetyHookContext& ctx)
180+
{
181+
ImGui_ImplDX9_CreateDeviceObjects();
182+
}
183+
172184
public:
173185
std::string_view description() override
174186
{
@@ -184,10 +196,15 @@ class ImguiOverlay : public Hook
184196
{
185197
constexpr int InitDirectX_CallerResult_Addr = 0x1775E;
186198
constexpr int Direct3D_EndScene_CallerAddr = 0x17D4E;
199+
constexpr int D3D_ReleaseTemporaries_Addr = 0x17970;
200+
constexpr int D3D_CreateTemporaries_Addr = 0x17A20;
187201

188202
midhook_d3dinit = safetyhook::create_mid(Module::exe_ptr(InitDirectX_CallerResult_Addr), dest_d3dinit);
189203
midhook_d3dendscene = safetyhook::create_mid(Module::exe_ptr(Direct3D_EndScene_CallerAddr), dest_d3dendscene);
190204

205+
midhook_d3dTemporariesRelease = safetyhook::create_mid(Module::exe_ptr(D3D_ReleaseTemporaries_Addr), dest_d3dTemporariesRelease);
206+
midhook_d3dTemporariesCreate = safetyhook::create_mid(Module::exe_ptr(D3D_CreateTemporaries_Addr), dest_d3dTemporariesCreate);
207+
191208
return !!midhook_d3dinit && !!midhook_d3dendscene;
192209
}
193210

0 commit comments

Comments
 (0)