51 lines
1.3 KiB
C++
51 lines
1.3 KiB
C++
|
#include "pch.h"
|
||
|
#include "SampleSW.h"
|
||
|
#pragma hdrstop
|
||
|
|
||
|
// Needed as MSVC doesn't throw bad_alloc upon failed new(), unless
|
||
|
// we specifically make it do.
|
||
|
_PNH g_OldNewHandler= NULL;
|
||
|
|
||
|
int _cdecl NewHandlerThatThrows( size_t size )
|
||
|
{
|
||
|
throw std::bad_alloc();
|
||
|
|
||
|
// Tell new to stop allocation attempts.
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
CMyDriver* CMyDriver::sm_pGlobalDriver= NULL;
|
||
|
|
||
|
DX8SDDIFW::COSDetector DX8SDDIFW::g_OSDetector;
|
||
|
|
||
|
BOOL WINAPI DllMain( HINSTANCE hInstance, DWORD dwReason, LPVOID lpvReserved)
|
||
|
{
|
||
|
switch (dwReason)
|
||
|
{
|
||
|
case DLL_PROCESS_ATTACH:
|
||
|
g_OldNewHandler = _set_new_handler( NewHandlerThatThrows);
|
||
|
CMyDriver::sm_pGlobalDriver= new CMyDriver;
|
||
|
break;
|
||
|
|
||
|
// DLL_PROCESS_DETACH will be called if ATTACH returned FALSE.
|
||
|
case DLL_PROCESS_DETACH:
|
||
|
delete CMyDriver::sm_pGlobalDriver;
|
||
|
CMyDriver::sm_pGlobalDriver= NULL;
|
||
|
_set_new_handler( g_OldNewHandler);
|
||
|
break;
|
||
|
|
||
|
case DLL_THREAD_ATTACH:
|
||
|
case DLL_THREAD_DETACH:
|
||
|
break;
|
||
|
}
|
||
|
return TRUE;
|
||
|
}
|
||
|
|
||
|
HRESULT APIENTRY
|
||
|
D3D8GetSWInfo( D3DCAPS8* pCaps, PD3D8_SWCALLBACKS pCallbacks,
|
||
|
DWORD* pNumTextures, DDSURFACEDESC** ppTexList)
|
||
|
{
|
||
|
return CMyDriver::sm_pGlobalDriver->GetSWInfo( *pCaps, *pCallbacks,
|
||
|
*pNumTextures, *ppTexList );
|
||
|
}
|