h3, h5: last of the VC6 and ddraw.h compatibility stuff.

This commit is contained in:
sezero
2018-08-08 14:25:50 +03:00
parent e710954c4e
commit 8adf484af7
5 changed files with 54 additions and 28 deletions

View File

@@ -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) */

View File

@@ -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;

View File

@@ -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;
@@ -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");
}
}
}

View File

@@ -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);
typedef HRESULT (WINAPI * LPDIRECTDRAWENUMERATEEXA)(LPDDENUMCALLBACKEXA, LPVOID, DWORD);
#ifndef DDENUM_ATTACHEDSECONDARYDEVICES
#define DDENUM_ATTACHEDSECONDARYDEVICES 0x00000001L
/* XXXTACOHACK -- The required header file isn't shipping yet - decls will be removed at some
future time */
#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) */

View File

@@ -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;