diff options
| author | SND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2010-08-13 05:26:12 +0000 |
|---|---|---|
| committer | SND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2010-08-13 05:26:12 +0000 |
| commit | 70965df387c1d06ff2b8228e5ae80d72f79f8b06 (patch) | |
| tree | 7e38589b3dcaa008396209e8e62c8a2972d9669c | |
| parent | cc244a8991b6c59b3e2e3a3d8b9837afc7d81379 (diff) | |
| download | pcsxr-70965df387c1d06ff2b8228e5ae80d72f79f8b06.tar.gz | |
dfxvideo (win32): load ddraw.dll globally
git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@56054 e17a0e51-4ae3-4d35-97c3-1a29b211df97
| -rw-r--r-- | win32/plugins/dfxvideo/winsrc/cfg.c | 24 | ||||
| -rw-r--r-- | win32/plugins/dfxvideo/winsrc/draw.c | 10 | ||||
| -rw-r--r-- | win32/plugins/dfxvideo/winsrc/winmain.c | 20 |
3 files changed, 18 insertions, 36 deletions
diff --git a/win32/plugins/dfxvideo/winsrc/cfg.c b/win32/plugins/dfxvideo/winsrc/cfg.c index b9d7b999..e2b14a01 100644 --- a/win32/plugins/dfxvideo/winsrc/cfg.c +++ b/win32/plugins/dfxvideo/winsrc/cfg.c @@ -937,21 +937,14 @@ static BOOL WINAPI DirectDrawEnumCallbackEx( GUID FAR* pGUID, LPSTR strDesc, LPDIRECTDRAW4 g_pDD; LPDIRECT3D3 pD3D; HRESULT (WINAPI *pDDrawCreateFn)(GUID *,LPDIRECTDRAW *,IUnknown *);
- HMODULE hDDrawDLL;
-
- hDDrawDLL = LoadLibrary(TEXT("DDRAW.DLL"));
- if(NULL == hDDrawDLL) return FALSE;
pDDrawCreateFn = (LPVOID)GetProcAddress( hDDrawDLL, "DirectDrawCreate" );
if( pDDrawCreateFn == NULL || FAILED( pDDrawCreateFn( pGUID, &pDD, 0L ) ) ) { - FreeLibrary(hDDrawDLL); return D3DENUMRET_OK; } - FreeLibrary(hDDrawDLL); - // Query the DirectDraw driver for access to Direct3D. if( FAILED(IDirectDraw_QueryInterface(pDD, &IID_IDirectDraw4, (VOID**)&g_pDD))) { @@ -1002,21 +995,15 @@ void DoDevEnum(HWND hW) { LPDIRECTDRAWENUMERATEEX pDDrawEnumFn; - HMODULE hDDrawDLL = LoadLibrary(TEXT("DDRAW.DLL"));
- if(NULL == hDDrawDLL) return; - gHWND=hW; - pDDrawEnumFn = (LPDIRECTDRAWENUMERATEEX) - GetProcAddress( hDDrawDLL, "DirectDrawEnumerateExA" ); + pDDrawEnumFn = (LPVOID)GetProcAddress(hDDrawDLL, "DirectDrawEnumerateExA"); if (pDDrawEnumFn != NULL) pDDrawEnumFn( DirectDrawEnumCallbackEx, NULL, DDENUM_ATTACHEDSECONDARYDEVICES | DDENUM_DETACHEDSECONDARYDEVICES | DDENUM_NONDISPLAYDEVICES ); - - FreeLibrary(hDDrawDLL); } //////////////////////////////////////////////////////////////////////// @@ -1148,7 +1135,6 @@ BOOL bTestModes(void) LPDIRECTDRAW pDD; LPDIRECTDRAW4 g_pDD; HRESULT (WINAPI *pDDrawCreateFn)(GUID *,LPDIRECTDRAW *,IUnknown *);
- HMODULE hDDrawDLL;
GUID FAR * guid=0; int i;unsigned char * c=(unsigned char *)&guiDev; @@ -1157,19 +1143,13 @@ BOOL bTestModes(void) bDeviceOK=FALSE; - hDDrawDLL = LoadLibrary(TEXT("DDRAW.DLL"));
- if(NULL == hDDrawDLL) return FALSE;
-
- pDDrawCreateFn = (LPVOID)GetProcAddress( hDDrawDLL, "DirectDrawCreate" );
+ pDDrawCreateFn = (LPVOID)GetProcAddress(hDDrawDLL, "DirectDrawCreate");
if( pDDrawCreateFn == NULL || FAILED( pDDrawCreateFn(guid, &pDD, 0L ) ) ) { - FreeLibrary(hDDrawDLL); return FALSE; } - FreeLibrary(hDDrawDLL); - if(FAILED(IDirectDraw_QueryInterface(pDD, &IID_IDirectDraw4, (VOID**)&g_pDD))) { IDirectDraw_Release(pDD); diff --git a/win32/plugins/dfxvideo/winsrc/draw.c b/win32/plugins/dfxvideo/winsrc/draw.c index bfd7df7c..ecd0e23c 100644 --- a/win32/plugins/dfxvideo/winsrc/draw.c +++ b/win32/plugins/dfxvideo/winsrc/draw.c @@ -3657,7 +3657,6 @@ int DXinitialize() DDBLTFX ddbltfx; DDPIXELFORMAT dd; HRESULT (WINAPI *pDDrawCreateFn)(GUID *,LPDIRECTDRAW *,IUnknown *);
- HMODULE hDDrawDLL;
// init some DX vars DX.hWnd = (HWND)hWGPU; @@ -3669,24 +3668,15 @@ int DXinitialize() for(i=0;i<sizeof(GUID);i++,c++) {if(*c) {guid=&guiDev;break;}}
- hDDrawDLL = LoadLibrary(TEXT("DDRAW.DLL"));
- if(NULL == hDDrawDLL)
- {
- MessageBox(NULL, "This GPU requires DirectX!", "Error", MB_OK);
- return 0;
- }
-
pDDrawCreateFn = (LPVOID)GetProcAddress( hDDrawDLL, "DirectDrawCreate" );
// create dd if(pDDrawCreateFn == NULL || pDDrawCreateFn(guid,&DD,0)) { - FreeLibrary(hDDrawDLL); MessageBox(NULL, "This GPU requires DirectX!", "Error", MB_OK); return 0; } - FreeLibrary(hDDrawDLL); DX.DD=DD; //////////////////////////////////////////////////////// co-op level diff --git a/win32/plugins/dfxvideo/winsrc/winmain.c b/win32/plugins/dfxvideo/winsrc/winmain.c index 3e8c214a..16d45f29 100644 --- a/win32/plugins/dfxvideo/winsrc/winmain.c +++ b/win32/plugins/dfxvideo/winsrc/winmain.c @@ -18,13 +18,25 @@ #include "externals.h" -HINSTANCE hInst = NULL; +HINSTANCE hInst = NULL;
+HMODULE hDDrawDLL = NULL; BOOL APIENTRY DllMain(HANDLE hModule, // DLL INIT DWORD dwReason, LPVOID lpReserved) -{ - hInst=(HINSTANCE)hModule; - return TRUE; // very quick :) +{
+ switch (dwReason) {
+ case DLL_PROCESS_ATTACH: + hInst = (HINSTANCE)hModule;
+ hDDrawDLL = LoadLibrary(TEXT("DDRAW.DLL"));
+ break;
+
+ case DLL_PROCESS_DETACH:
+ hInst = NULL;
+ if (hDDrawDLL) FreeLibrary(hDDrawDLL);
+ break;
+ }
+
+ return TRUE; // very quick :) } |
