diff options
| author | NeoBrainX <NeoBrainX@googlemail.com> | 2010-11-21 15:44:50 +0000 |
|---|---|---|
| committer | NeoBrainX <NeoBrainX@googlemail.com> | 2010-11-21 15:44:50 +0000 |
| commit | b8218726aa523bcfce42e3835c1fcb4e313c6275 (patch) | |
| tree | 572802d685265a77c6667759836d32fae9fc5069 /Source | |
| parent | 5ef4167c559a4df98d2346135567f6b92bb46188 (diff) | |
DX9: Dynamically load d3d9.dll.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6452 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source')
| -rw-r--r-- | Source/Plugins/Plugin_VideoDX9/Plugin_VideoDX9.vcproj | 12 | ||||
| -rw-r--r-- | Source/Plugins/Plugin_VideoDX9/Src/D3DBase.cpp | 20 |
2 files changed, 24 insertions, 8 deletions
diff --git a/Source/Plugins/Plugin_VideoDX9/Plugin_VideoDX9.vcproj b/Source/Plugins/Plugin_VideoDX9/Plugin_VideoDX9.vcproj index 625923e374..687af2ea7a 100644 --- a/Source/Plugins/Plugin_VideoDX9/Plugin_VideoDX9.vcproj +++ b/Source/Plugins/Plugin_VideoDX9/Plugin_VideoDX9.vcproj @@ -93,7 +93,7 @@ <Tool Name="VCLinkerTool" AdditionalOptions=""..\..\core\common\win32\release\common.lib"" - AdditionalDependencies="comctl32.lib d3d9.lib winmm.lib vfw32.lib wxbase28u.lib wxmsw28u_core.lib" + AdditionalDependencies="comctl32.lib winmm.lib vfw32.lib wxbase28u.lib wxmsw28u_core.lib" OutputFile="..\..\..\Binary\Win32\Plugins\Plugin_VideoDX9.dll" LinkIncremental="1" SuppressStartupBanner="true" @@ -203,7 +203,7 @@ /> <Tool Name="VCLinkerTool" - AdditionalDependencies="comctl32.lib d3d9.lib winmm.lib vfw32.lib rpcrt4.lib wxbase28u.lib wxmsw28u_core.lib" + AdditionalDependencies="comctl32.lib winmm.lib vfw32.lib rpcrt4.lib wxbase28u.lib wxmsw28u_core.lib" OutputFile="..\..\..\Binary\x64\Plugins\Plugin_VideoDX9.dll" LinkIncremental="1" SuppressStartupBanner="true" @@ -303,7 +303,7 @@ <Tool Name="VCLinkerTool" AdditionalOptions=""..\..\core\common\win32\debug\common.lib"" - AdditionalDependencies="comctl32.lib d3d9.lib winmm.lib vfw32.lib rpcrt4.lib wxbase28ud.lib wxmsw28ud_core.lib" + AdditionalDependencies="comctl32.lib winmm.lib vfw32.lib rpcrt4.lib wxbase28ud.lib wxmsw28ud_core.lib" OutputFile="..\..\..\Binary\Win32/Plugins\Plugin_VideoDX9D.dll" LinkIncremental="1" SuppressStartupBanner="true" @@ -401,7 +401,7 @@ /> <Tool Name="VCLinkerTool" - AdditionalDependencies="comctl32.lib d3d9.lib winmm.lib vfw32.lib rpcrt4.lib wxbase28ud.lib wxmsw28ud_core.lib" + AdditionalDependencies="comctl32.lib winmm.lib vfw32.lib rpcrt4.lib wxbase28ud.lib wxmsw28ud_core.lib" OutputFile="..\..\..\Binary\x64\Plugins\Plugin_VideoDX9D.dll" LinkIncremental="1" SuppressStartupBanner="true" @@ -509,7 +509,7 @@ /> <Tool Name="VCLinkerTool" - AdditionalDependencies="comctl32.lib d3d9.lib winmm.lib vfw32.lib wxbase28u.lib wxmsw28u_core.lib" + AdditionalDependencies="comctl32.lib winmm.lib vfw32.lib wxbase28u.lib wxmsw28u_core.lib" OutputFile="..\..\..\Binary\Win32\Plugins\Plugin_VideoDX9DF.dll" LinkIncremental="1" SuppressStartupBanner="true" @@ -620,7 +620,7 @@ /> <Tool Name="VCLinkerTool" - AdditionalDependencies="comctl32.lib d3d9.lib winmm.lib vfw32.lib rpcrt4.lib wxbase28u.lib wxmsw28u_core.lib" + AdditionalDependencies="comctl32.lib winmm.lib vfw32.lib rpcrt4.lib wxbase28u.lib wxmsw28u_core.lib" OutputFile="..\..\..\Binary\x64\Plugins\Plugin_VideoDX9DF.dll" LinkIncremental="1" SuppressStartupBanner="true" diff --git a/Source/Plugins/Plugin_VideoDX9/Src/D3DBase.cpp b/Source/Plugins/Plugin_VideoDX9/Src/D3DBase.cpp index 23d1859568..9f35e9bd9e 100644 --- a/Source/Plugins/Plugin_VideoDX9/Src/D3DBase.cpp +++ b/Source/Plugins/Plugin_VideoDX9/Src/D3DBase.cpp @@ -27,6 +27,10 @@ D3DXSAVESURFACETOFILEATYPE PD3DXSaveSurfaceToFileA = NULL; D3DXSAVETEXTURETOFILEATYPE PD3DXSaveTextureToFileA = NULL; D3DXCOMPILESHADERTYPE PD3DXCompileShader = NULL; +typedef IDirect3D9* (WINAPI* DIRECT3DCREATE9)(UINT); +DIRECT3DCREATE9 PDirect3DCreate9 = NULL; +HINSTANCE hD3DDll = NULL; + namespace D3D { @@ -89,8 +93,17 @@ bool IsATIDevice() HRESULT Init() { + hD3DDll = LoadLibraryA("d3d9.dll"); + if (!hD3DDll) + { + MessageBoxA(NULL, "Failed to load d3d9.dll", "Critical error", MB_OK | MB_ICONERROR); + return E_FAIL; + } + PDirect3DCreate9 = (DIRECT3DCREATE9)GetProcAddress(hD3DDll, "Direct3DCreate9"); + if (PDirect3DCreate9 == NULL) MessageBoxA(NULL, "GetProcAddress failed for Direct3DCreate9!", "Critical error", MB_OK | MB_ICONERROR); + // Create the D3D object, which is needed to create the D3DDevice. - D3D = Direct3DCreate9(D3D_SDK_VERSION); + D3D = PDirect3DCreate9(D3D_SDK_VERSION); if (!D3D) return E_FAIL; Enumerate(); @@ -100,7 +113,10 @@ HRESULT Init() void Shutdown() { D3D->Release(); - D3D = 0; + D3D = NULL; + + if (hD3DDll) FreeLibrary(hD3DDll); + PDirect3DCreate9 = NULL; } void EnableAlphaToCoverage() |
