diff --git a/src/winapi_hooks.c b/src/winapi_hooks.c index b64dda1..652436c 100644 --- a/src/winapi_hooks.c +++ b/src/winapi_hooks.c @@ -1641,7 +1641,19 @@ HRESULT WINAPI fake_CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD } } - return real_CoCreateInstance(rclsid, pUnkOuter, dwClsContext, riid, ppv); + /* These dlls must be hooked for cutscene uscaling and windowed mode */ + HMODULE quartz_dll = GetModuleHandleA("quartz"); + HMODULE msvfw32_dll = GetModuleHandleA("msvfw32"); + + HRESULT result = real_CoCreateInstance(rclsid, pUnkOuter, dwClsContext, riid, ppv); + + if ((!quartz_dll && GetModuleHandleA("quartz")) || + (!msvfw32_dll && GetModuleHandleA("msvfw32"))) + { + hook_init(FALSE); + } + + return result; } LPTOP_LEVEL_EXCEPTION_FILTER WINAPI fake_SetUnhandledExceptionFilter(