make old windows xp workaround optional

This commit is contained in:
FunkyFr3sh 2021-05-08 23:42:29 +02:00
parent 93e81ddc1c
commit 6efc112c39
9 changed files with 97 additions and 72 deletions

View file

@ -4,6 +4,7 @@
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include "IDirectDrawPalette.h"
#include "IDirectDrawClipper.h"
#include "ddraw.h"
@ -22,7 +23,7 @@ typedef struct IDirectDrawSurfaceImpl
DWORD flags;
DWORD caps;
IDirectDrawPaletteImpl *palette;
IDirectDrawPaletteImpl* palette;
void *surface;
DWORD l_pitch;
@ -35,7 +36,8 @@ typedef struct IDirectDrawSurfaceImpl
DWORD last_flip_tick;
DWORD last_blt_tick;
struct IDirectDrawSurfaceImpl *backbuffer;
struct IDirectDrawSurfaceImpl* backbuffer;
struct IDirectDrawClipperImpl* clipper;
} IDirectDrawSurfaceImpl;

View file

@ -6,6 +6,8 @@
#include "ddraw.h"
typedef HRESULT(WINAPI* DIRECTDRAWCREATEPROC)(GUID FAR*, LPDIRECTDRAW FAR*, IUnknown FAR*);
ULONG dd_AddRef();
ULONG dd_Release();
HRESULT dd_EnumDisplayModes(DWORD dwFlags, LPDDSURFACEDESC lpDDSurfaceDesc, LPVOID lpContext, LPDDENUMMODESCALLBACK lpEnumModesCallback);
@ -46,11 +48,11 @@ typedef struct cnc_ddraw
DEVMODE mode;
struct IDirectDrawSurfaceImpl *primary;
char title[128];
HMODULE real_dll;
CRITICAL_SECTION cs;
/* real export from system32\ddraw.dll */
HRESULT (WINAPI *DirectDrawCreate)(GUID FAR*, LPDIRECTDRAW FAR*, IUnknown FAR*);
CRITICAL_SECTION cs;
HMODULE real_dll;
DIRECTDRAWCREATEPROC DirectDrawCreate;
struct
{
@ -102,11 +104,11 @@ typedef struct cnc_ddraw
BOOL accurate_timers;
BOOL resizable;
BOOL sierrahack;
BOOL dk2hack;
BOOL nonexclusive;
BOOL fixchildwindows;
BOOL d3d9linear;
BOOL backbuffer;
BOOL passthrough;
int maxgameticks;
BOOL alt_key_down;
BOOL bnet_active;

View file

@ -18,12 +18,14 @@ HRESULT dds_EnumAttachedSurfaces(IDirectDrawSurfaceImpl* This, LPVOID lpContext,
HRESULT dds_Flip(IDirectDrawSurfaceImpl* This, LPDIRECTDRAWSURFACE surface, DWORD flags);
HRESULT dds_GetAttachedSurface(IDirectDrawSurfaceImpl* This, LPDDSCAPS lpDdsCaps, LPDIRECTDRAWSURFACE FAR* surface);
HRESULT dds_GetCaps(IDirectDrawSurfaceImpl* This, LPDDSCAPS lpDDSCaps);
HRESULT dds_GetClipper(IDirectDrawSurfaceImpl* This, LPDIRECTDRAWCLIPPER FAR* lpClipper);
HRESULT dds_GetColorKey(IDirectDrawSurfaceImpl* This, DWORD flags, LPDDCOLORKEY colorKey);
HRESULT dds_GetDC(IDirectDrawSurfaceImpl* This, HDC FAR* a);
HRESULT dds_GetDC(IDirectDrawSurfaceImpl* This, HDC FAR* lpHDC);
HRESULT dds_GetPalette(IDirectDrawSurfaceImpl* This, LPDIRECTDRAWPALETTE FAR* lplpDDPalette);
HRESULT dds_GetPixelFormat(IDirectDrawSurfaceImpl* This, LPDDPIXELFORMAT ddpfPixelFormat);
HRESULT dds_Lock(IDirectDrawSurfaceImpl* This, LPRECT lpDestRect, LPDDSURFACEDESC lpDDSurfaceDesc, DWORD dwFlags, HANDLE hEvent);
HRESULT dds_SetColorKey(IDirectDrawSurfaceImpl* This, DWORD flags, LPDDCOLORKEY colorKey);
HRESULT dds_SetClipper(IDirectDrawSurfaceImpl* This, LPDIRECTDRAWCLIPPER lpClipper);
HRESULT dds_SetPalette(IDirectDrawSurfaceImpl* This, LPDIRECTDRAWPALETTE lpDDPalette);
HRESULT dds_Unlock(IDirectDrawSurfaceImpl* This, LPVOID lpRect);
void* dds_GetBuffer(IDirectDrawSurfaceImpl* This);

View file

@ -8,6 +8,8 @@ extern BOOL GameHandlesClose;
extern PVOID FakePrimarySurface;
extern HMODULE g_ddraw_module;
HRESULT WINAPI DirectDrawCreateEx(GUID* lpGuid, LPVOID* lplpDD, REFIID iid, IUnknown* pUnkOuter);
typedef enum PROCESS_DPI_AWARENESS {
PROCESS_DPI_UNAWARE = 0,
PROCESS_SYSTEM_DPI_AWARE = 1,