h3, h5: last of the VC6 and ddraw.h compatibility stuff.
This commit is contained in:
@@ -246,9 +246,18 @@ _dxDDrawToGlideDesc(hwcBufferDesc *pDesc)
|
||||
} /* _dxDDrawToGlideDesc */
|
||||
|
||||
|
||||
#ifndef IDirectDraw7_CreateSurface /* ddraw.h not from dx7 sdk */
|
||||
typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKEXA)(GUID FAR *, LPSTR, LPSTR, LPVOID, HMONITOR);
|
||||
typedef HRESULT (WINAPI * LPDIRECTDRAWENUMERATEEXA)(LPDDENUMCALLBACKEXA, LPVOID, DWORD);
|
||||
#ifndef DDENUM_ATTACHEDSECONDARYDEVICES
|
||||
#define DDENUM_ATTACHEDSECONDARYDEVICES 0x00000001L
|
||||
#endif
|
||||
#endif
|
||||
|
||||
static GUID fooGuid;
|
||||
|
||||
BOOL FAR PASCAL ddEnumCbEx( GUID FAR *guid, LPSTR desc, LPSTR name, LPVOID ctx, HMONITOR hmon ) {
|
||||
static BOOL FAR PASCAL
|
||||
ddEnumCbEx( GUID FAR *guid, LPSTR desc, LPSTR name, LPVOID ctx, HMONITOR hmon ) {
|
||||
DWORD *data = (DWORD*)ctx;
|
||||
HMONITOR target = (HMONITOR)data[0];
|
||||
BOOL rv = DDENUMRET_OK;
|
||||
@@ -280,7 +289,7 @@ _dxAllocSurfaces(int xRes, int yRes, int vRefresh, hwcBufferDesc *pDesc, void *h
|
||||
|
||||
if ( ddraw ) {
|
||||
LPDIRECTDRAWENUMERATEEXA ddEnumEx;
|
||||
ddEnumEx = (void*)GetProcAddress( ddraw, "DirectDrawEnumerateExA" );
|
||||
ddEnumEx = (LPDIRECTDRAWENUMERATEEXA)GetProcAddress( ddraw, "DirectDrawEnumerateExA" );
|
||||
if ( ddEnumEx ) {
|
||||
DWORD data[2];
|
||||
data[0] = (DWORD)hmon;
|
||||
@@ -1021,5 +1030,3 @@ dxSwap(FxU32 code)
|
||||
{
|
||||
} /* dxSwap */
|
||||
#endif /* __DOS32__ || (defined(__WIN32__) && !defined(HWC_ACCESS_DDRAW) */
|
||||
|
||||
|
||||
|
||||
@@ -36,6 +36,13 @@ DECLARE_HANDLE(HMONITOR);
|
||||
#include <vmm.h>
|
||||
#include <configmg.h>
|
||||
|
||||
#ifndef IDirectDraw7_CreateSurface /* ddraw.h not from dx7 sdk */
|
||||
typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKEXA)(GUID FAR *, LPSTR, LPSTR, LPVOID, HMONITOR);
|
||||
typedef HRESULT (WINAPI * LPDIRECTDRAWENUMERATEEXA)(LPDDENUMCALLBACKEXA, LPVOID, DWORD);
|
||||
#ifndef DDENUM_ATTACHEDSECONDARYDEVICES
|
||||
#define DDENUM_ATTACHEDSECONDARYDEVICES 0x00000001L
|
||||
#endif
|
||||
#endif
|
||||
|
||||
static HWND hwndApp = 0;
|
||||
|
||||
|
||||
@@ -13,8 +13,20 @@
|
||||
#include "fxcmd.h"
|
||||
#include "gsfc.h"
|
||||
|
||||
#if (WINVER < 0x0500) && !defined(HMONITOR_DECLARED) /* <--- HACK */
|
||||
DECLARE_HANDLE(HMONITOR);
|
||||
#define HMONITOR_DECLARED
|
||||
#endif
|
||||
#include <ddraw.h>
|
||||
|
||||
#ifndef IDirectDraw7_CreateSurface /* ddraw.h not from dx7 sdk */
|
||||
typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKEXA)(GUID FAR *, LPSTR, LPSTR, LPVOID, HMONITOR);
|
||||
typedef HRESULT (WINAPI * LPDIRECTDRAWENUMERATEEXA)(LPDDENUMCALLBACKEXA, LPVOID, DWORD);
|
||||
#ifndef DDENUM_ATTACHEDSECONDARYDEVICES
|
||||
#define DDENUM_ATTACHEDSECONDARYDEVICES 0x00000001L
|
||||
#endif
|
||||
#endif
|
||||
|
||||
static LPDIRECTDRAW lpDDraw1 = 0;
|
||||
static LPDIRECTDRAW2 lpDDraw2 = 0;
|
||||
static LPDIRECTDRAWCLIPPER lpClipper = 0;
|
||||
@@ -155,8 +167,8 @@ void _grReleaseWindowSurface(GrContext_t ctx)
|
||||
|
||||
/* This will create our DirectDraw surfaces and create the context */
|
||||
GrContext_t _grCreateWindowSurface(FxU32 hWnd,
|
||||
GrColorFormat_t format,
|
||||
GrOriginLocation_t origin,
|
||||
GrColorFormat_t format,
|
||||
GrOriginLocation_t origin,
|
||||
GrPixelFormat_t pixelformat,
|
||||
int nAuxBuffer)
|
||||
{
|
||||
@@ -282,7 +294,7 @@ GrContext_t _grCreateWindowSurface(FxU32 hWnd,
|
||||
|
||||
/* Now create us a Primary surface */
|
||||
memset(&ddsd, 0, sizeof(ddsd));
|
||||
ddsd.dwSize = sizeof(ddsd);
|
||||
ddsd.dwSize = sizeof(ddsd);
|
||||
ddsd.dwFlags = DDSD_CAPS;
|
||||
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
|
||||
|
||||
@@ -316,7 +328,7 @@ GrContext_t _grCreateWindowSurface(FxU32 hWnd,
|
||||
/* Setup Color Surface */
|
||||
GDBG_INFO(80, "Setting up Color Surface\n");
|
||||
memset(&ddsd, 0, sizeof(ddsd));
|
||||
ddsd.dwSize = sizeof(ddsd);
|
||||
ddsd.dwSize = sizeof(ddsd);
|
||||
ddsd.dwFlags = DDSD_CAPS|DDSD_HEIGHT|DDSD_WIDTH;/*|DDSD_PIXELFORMAT;*/
|
||||
ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;/*|DDSCAPS_VIDEOMEMORY;*/
|
||||
ddsd.dwWidth = surfWidth;
|
||||
@@ -337,7 +349,7 @@ GrContext_t _grCreateWindowSurface(FxU32 hWnd,
|
||||
if (nAuxBuffer) {
|
||||
GDBG_INFO(80, "Setting up Aux Surface\n");
|
||||
memset(&ddsd, 0, sizeof(ddsd));
|
||||
ddsd.dwSize = sizeof(ddsd);
|
||||
ddsd.dwSize = sizeof(ddsd);
|
||||
ddsd.dwFlags = DDSD_CAPS|DDSD_HEIGHT|DDSD_WIDTH;/*|DDSD_PIXELFORMAT;*/
|
||||
ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;/*|DDSCAPS_VIDEOMEMORY;*/
|
||||
ddsd.dwWidth = surfWidth;
|
||||
@@ -358,7 +370,7 @@ GrContext_t _grCreateWindowSurface(FxU32 hWnd,
|
||||
/* Setup Texture Surface */
|
||||
GDBG_INFO(80, "Setting up Texture Surface\n");
|
||||
memset(&ddsd, 0, sizeof(ddsd));
|
||||
ddsd.dwSize = sizeof(ddsd);
|
||||
ddsd.dwSize = sizeof(ddsd);
|
||||
ddsd.dwFlags = DDSD_CAPS|DDSD_HEIGHT|DDSD_WIDTH;/*|DDSD_PIXELFORMAT;*/
|
||||
ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;/*|DDSCAPS_VIDEOMEMORY;*/
|
||||
/* XXX [koolsmoky] We're screwed if the texture is larger than 1024*1024 (Napalm). */
|
||||
@@ -438,12 +450,10 @@ void _grFlipWindowSurface()
|
||||
SetRect(&src, 0, 0, surfWidth, surfHeight);
|
||||
|
||||
hResult = IDirectDrawSurface_Blt(lpPrimSurf, &dest, lpColSurf, &src, DDBLT_WAIT, NULL);
|
||||
|
||||
while(IDirectDrawSurface_GetBltStatus(lpPrimSurf, DDGBS_ISBLTDONE) != DD_OK);
|
||||
|
||||
while(IDirectDrawSurface_GetBltStatus(lpPrimSurf, DDGBS_ISBLTDONE) != DD_OK)
|
||||
;
|
||||
if (hResult != DD_OK) {
|
||||
GDBG_INFO(80, "Couldn't Blit!\n");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -254,21 +254,18 @@ _dxDDrawToGlideDesc(hwcBufferDesc *pDesc)
|
||||
} /* _dxDDrawToGlideDesc */
|
||||
|
||||
|
||||
/* XXXTACOHACK -- The required header file isn't shipping yet - decls will be removed at some
|
||||
future time */
|
||||
#ifndef IDirectDraw7_CreateSurface /* ddraw.h not from dx7 sdk */
|
||||
typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKEXA)(GUID FAR *, LPSTR, LPSTR, LPVOID, HMONITOR);
|
||||
extern HRESULT WINAPI DirectDrawEnumerateExA( LPDDENUMCALLBACKEXA lpCallback,
|
||||
LPVOID lpContext, DWORD dwFlags);
|
||||
typedef HRESULT (WINAPI * LPDIRECTDRAWENUMERATEEXA)( LPDDENUMCALLBACKEXA lpCallback,
|
||||
LPVOID lpContext,
|
||||
DWORD dwFlags);
|
||||
#define DDENUM_ATTACHEDSECONDARYDEVICES 0x00000001L
|
||||
/* XXXTACOHACK -- The required header file isn't shipping yet - decls will be removed at some
|
||||
future time */
|
||||
typedef HRESULT (WINAPI * LPDIRECTDRAWENUMERATEEXA)(LPDDENUMCALLBACKEXA, LPVOID, DWORD);
|
||||
#ifndef DDENUM_ATTACHEDSECONDARYDEVICES
|
||||
#define DDENUM_ATTACHEDSECONDARYDEVICES 0x00000001L
|
||||
#endif
|
||||
#endif
|
||||
|
||||
static GUID fooGuid;
|
||||
|
||||
BOOL FAR PASCAL ddEnumCbEx( GUID FAR *guid, LPSTR desc, LPSTR name, LPVOID ctx, HMONITOR hmon ) {
|
||||
static BOOL FAR PASCAL
|
||||
ddEnumCbEx( GUID FAR *guid, LPSTR desc, LPSTR name, LPVOID ctx, HMONITOR hmon ) {
|
||||
DWORD *data = (DWORD*)ctx;
|
||||
HMONITOR target = (HMONITOR)data[0];
|
||||
BOOL rv = DDENUMRET_OK;
|
||||
@@ -300,7 +297,7 @@ _dxAllocSurfaces(int xRes, int yRes, int vRefresh, hwcBufferDesc *pDesc, void *h
|
||||
|
||||
if ( ddraw ) {
|
||||
LPDIRECTDRAWENUMERATEEXA ddEnumEx;
|
||||
ddEnumEx = (void*)GetProcAddress( ddraw, "DirectDrawEnumerateExA" );
|
||||
ddEnumEx = (LPDIRECTDRAWENUMERATEEXA)GetProcAddress( ddraw, "DirectDrawEnumerateExA" );
|
||||
if ( ddEnumEx ) {
|
||||
DWORD data[2];
|
||||
data[0] = (DWORD)hmon;
|
||||
@@ -1041,5 +1038,3 @@ dxSwap(FxU32 code)
|
||||
{
|
||||
} /* dxSwap */
|
||||
#endif /* __DOS32__ || (defined(__WIN32__) && !defined(HWC_ACCESS_DDRAW) */
|
||||
|
||||
|
||||
|
||||
@@ -43,6 +43,13 @@ DECLARE_HANDLE(HMONITOR);
|
||||
#undef GETENV
|
||||
#define GETENV hwcGetenv
|
||||
|
||||
#ifndef IDirectDraw7_CreateSurface /* ddraw.h not from dx7 sdk */
|
||||
typedef BOOL (FAR PASCAL * LPDDENUMCALLBACKEXA)(GUID FAR *, LPSTR, LPSTR, LPVOID, HMONITOR);
|
||||
typedef HRESULT (WINAPI * LPDIRECTDRAWENUMERATEEXA)(LPDDENUMCALLBACKEXA, LPVOID, DWORD);
|
||||
#ifndef DDENUM_ATTACHEDSECONDARYDEVICES
|
||||
#define DDENUM_ATTACHEDSECONDARYDEVICES 0x00000001L
|
||||
#endif
|
||||
#endif
|
||||
|
||||
static int _set_exclusive_relaxed;
|
||||
static int _set_vidmode_relaxed;
|
||||
|
||||
Reference in New Issue
Block a user