jpark37 dad861b036 win-capture: Fix D3D leaks on swap chain release
For game capture, hook DXGI release function to release D3D objects if
the related swap chain is also being destroyed.

An added bonus is that the game capture hook will handle swap chain
recreation for applications that don't use ResizeBuffers.
2020-10-13 18:47:35 -07:00

48 lines
1.3 KiB
C

#include <inttypes.h>
#include <stdio.h>
#include <windows.h>
#include "get-graphics-offsets.h"
int main(int argc, char *argv[])
{
struct d3d8_offsets d3d8 = {0};
struct d3d9_offsets d3d9 = {0};
struct dxgi_offsets dxgi = {0};
struct dxgi_offsets2 dxgi2 = {0};
WNDCLASSA wc = {0};
wc.style = CS_OWNDC;
wc.hInstance = GetModuleHandleA(NULL);
wc.lpfnWndProc = (WNDPROC)DefWindowProcA;
wc.lpszClassName = DUMMY_WNDCLASS;
SetErrorMode(SEM_FAILCRITICALERRORS);
if (!RegisterClassA(&wc)) {
printf("failed to register '%s'\n", DUMMY_WNDCLASS);
return -1;
}
get_d3d9_offsets(&d3d9);
get_d3d8_offsets(&d3d8);
get_dxgi_offsets(&dxgi, &dxgi2);
printf("[d3d8]\n");
printf("present=0x%" PRIx32 "\n", d3d8.present);
printf("[d3d9]\n");
printf("present=0x%" PRIx32 "\n", d3d9.present);
printf("present_ex=0x%" PRIx32 "\n", d3d9.present_ex);
printf("present_swap=0x%" PRIx32 "\n", d3d9.present_swap);
printf("d3d9_clsoff=0x%" PRIx32 "\n", d3d9.d3d9_clsoff);
printf("is_d3d9ex_clsoff=0x%" PRIx32 "\n", d3d9.is_d3d9ex_clsoff);
printf("[dxgi]\n");
printf("present=0x%" PRIx32 "\n", dxgi.present);
printf("present1=0x%" PRIx32 "\n", dxgi.present1);
printf("resize=0x%" PRIx32 "\n", dxgi.resize);
printf("release=0x%" PRIx32 "\n", dxgi2.release);
(void)argc;
(void)argv;
return 0;
}