Works again, but ddraw still utterly refuses to listen to refresh rates.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@1087 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
58375405a6
commit
149e011160
1 changed files with 30 additions and 6 deletions
|
@ -139,29 +139,43 @@ qboolean DDRAW_Init(rendererstate_t *info, unsigned char **ppbuffer, int *ppitch
|
||||||
PALETTEENTRY palentries[256];
|
PALETTEENTRY palentries[256];
|
||||||
DDSURFACEDESC ddsd;
|
DDSURFACEDESC ddsd;
|
||||||
DDSCAPS ddscaps;
|
DDSCAPS ddscaps;
|
||||||
|
LPDIRECTDRAW lpDirectDraw1;
|
||||||
|
|
||||||
HRESULT ddrval;
|
HRESULT ddrval;
|
||||||
HRESULT (WINAPI *QDirectDrawCreateEx)( GUID FAR *lpGUID, LPVOID *lplpDD, REFIID iid, IUnknown FAR * pUnkOuter );
|
HRESULT (WINAPI *QDirectDrawCreate)( GUID FAR *lpGUID, LPVOID *lplpDD, IUnknown FAR * pUnkOuter );
|
||||||
|
|
||||||
|
if (!hinstDDRAW)
|
||||||
|
{
|
||||||
hinstDDRAW = LoadLibrary( "ddraw.dll" );
|
hinstDDRAW = LoadLibrary( "ddraw.dll" );
|
||||||
if (!hinstDDRAW)
|
if (!hinstDDRAW)
|
||||||
{
|
{
|
||||||
Con_Printf( "Failed to load ddraw.dll");
|
Con_Printf( "Failed to load ddraw.dll");
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ( ( QDirectDrawCreateEx = ( HRESULT (WINAPI *)( GUID FAR *, LPVOID *, REFIID, IUnknown FAR * ) ) GetProcAddress( hinstDDRAW, "DirectDrawCreateEx" ) ) == NULL )
|
if ( ( QDirectDrawCreate = ( HRESULT (WINAPI *)( GUID FAR *, LPVOID *, IUnknown FAR * ) ) GetProcAddress( hinstDDRAW, "DirectDrawCreate" ) ) == NULL )
|
||||||
{
|
{
|
||||||
Con_Printf( "*** DirectDrawCreate == NULL ***\n" );
|
Con_Printf( "*** DirectDrawCreate == NULL ***\n" );
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ( ddrval = QDirectDrawCreateEx( NULL, &lpDirectDraw, &IID_IDirectDraw2, NULL ) ) != DD_OK )
|
if ( ( ddrval = QDirectDrawCreate( NULL, &lpDirectDraw1, NULL ) ) != DD_OK )
|
||||||
{
|
{
|
||||||
Con_Printf( "failed - %s\n", DDrawError( ddrval ) );
|
Con_Printf( "failed - %s\n", DDrawError( ddrval ) );
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Con_SafePrintf( "...Using ddraw2: ");
|
||||||
|
ddrval=lpDirectDraw1->lpVtbl->QueryInterface(lpDirectDraw1, &IID_IDirectDraw2,(void**)&lpDirectDraw);
|
||||||
|
lpDirectDraw1->lpVtbl->Release(lpDirectDraw1);
|
||||||
|
if (ddrval != DD_OK)
|
||||||
|
{
|
||||||
|
Con_Printf( "failed - %s\n", DDrawError( ddrval ) );
|
||||||
|
goto fail;
|
||||||
|
}
|
||||||
|
Con_SafePrintf( "ok\n" );
|
||||||
|
|
||||||
#if 1
|
#if 1
|
||||||
/*
|
/*
|
||||||
** see if linear modes exist first
|
** see if linear modes exist first
|
||||||
|
@ -240,6 +254,11 @@ qboolean DDRAW_Init(rendererstate_t *info, unsigned char **ppbuffer, int *ppitch
|
||||||
ddsd.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
|
ddsd.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
|
||||||
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_FLIP | DDSCAPS_COMPLEX;
|
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_FLIP | DDSCAPS_COMPLEX;
|
||||||
ddsd.dwBackBufferCount = 1;
|
ddsd.dwBackBufferCount = 1;
|
||||||
|
ddsd.dwRefreshRate = info->rate;
|
||||||
|
if (ddsd.dwRefreshRate)
|
||||||
|
ddsd.dwFlags |= DDSD_REFRESHRATE;
|
||||||
|
|
||||||
|
Con_Printf("Rate: %i\n", ddsd.dwRefreshRate);
|
||||||
|
|
||||||
Con_SafePrintf( "...creating front buffer: ");
|
Con_SafePrintf( "...creating front buffer: ");
|
||||||
if ( ( ddrval = lpDirectDraw->lpVtbl->CreateSurface( lpDirectDraw, &ddsd, &lpddsFrontBuffer, NULL ) ) != DD_OK )
|
if ( ( ddrval = lpDirectDraw->lpVtbl->CreateSurface( lpDirectDraw, &ddsd, &lpddsFrontBuffer, NULL ) ) != DD_OK )
|
||||||
|
@ -249,6 +268,8 @@ qboolean DDRAW_Init(rendererstate_t *info, unsigned char **ppbuffer, int *ppitch
|
||||||
}
|
}
|
||||||
Con_SafePrintf( "ok\n" );
|
Con_SafePrintf( "ok\n" );
|
||||||
|
|
||||||
|
Con_Printf("Rate: %i\n", ddsd.dwRefreshRate);
|
||||||
|
|
||||||
#else
|
#else
|
||||||
Con_SafePrintf( "...setting normal mode: ");
|
Con_SafePrintf( "...setting normal mode: ");
|
||||||
if ( ( ddrval = lpDirectDraw->lpVtbl->SetCooperativeLevel( lpDirectDraw,
|
if ( ( ddrval = lpDirectDraw->lpVtbl->SetCooperativeLevel( lpDirectDraw,
|
||||||
|
@ -295,6 +316,7 @@ qboolean DDRAW_Init(rendererstate_t *info, unsigned char **ppbuffer, int *ppitch
|
||||||
ddsd.dwRefreshRate = info->rate;
|
ddsd.dwRefreshRate = info->rate;
|
||||||
if (ddsd.dwRefreshRate)
|
if (ddsd.dwRefreshRate)
|
||||||
ddsd.dwFlags |= DDSD_REFRESHRATE;
|
ddsd.dwFlags |= DDSD_REFRESHRATE;
|
||||||
|
Con_Printf("Rate: %i\n", ddsd.dwRefreshRate);
|
||||||
|
|
||||||
Con_SafePrintf( "...creating front buffer: ");
|
Con_SafePrintf( "...creating front buffer: ");
|
||||||
if ( ( ddrval = lpDirectDraw->lpVtbl->CreateSurface( lpDirectDraw, &ddsd, &lpddsFrontBuffer, NULL ) ) != DD_OK )
|
if ( ( ddrval = lpDirectDraw->lpVtbl->CreateSurface( lpDirectDraw, &ddsd, &lpddsFrontBuffer, NULL ) ) != DD_OK )
|
||||||
|
@ -303,6 +325,8 @@ qboolean DDRAW_Init(rendererstate_t *info, unsigned char **ppbuffer, int *ppitch
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
Con_SafePrintf( "ok\n" );
|
Con_SafePrintf( "ok\n" );
|
||||||
|
|
||||||
|
Con_Printf("Rate: %i\n", ddsd.dwRefreshRate);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in a new issue