From 68a0a5cdec33dcef047428e6554e5ee8841c4767 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Tue, 20 Aug 2002 00:20:06 +0000 Subject: [PATCH] Updated for embedded Visual C++ 4.0 --- Makefile.am | 1 + README.WinCE | 5 +-- VisualCE.zip | Bin 0 -> 9350 bytes include/SDL_main.h | 7 ++-- src/audio/windx5/SDL_dx5audio.c | 10 ++--- src/main/win32/SDL_main.c | 3 ++ src/timer/win32/SDL_systimer.c | 4 +- src/video/SDL_sysvideo.h | 1 + src/video/wincommon/SDL_lowvideo.h | 6 ++- src/video/wincommon/SDL_sysevents.c | 33 +++++++++------- src/video/wincommon/SDL_wingl.c | 6 +-- src/video/windib/SDL_dibevents.c | 27 ++------------ src/video/windib/SDL_dibvideo.c | 47 ++++++++--------------- src/video/windx5/SDL_dx5events.c | 28 +++++++++++--- src/video/windx5/SDL_dx5video.c | 56 +++++++++++++++++++--------- src/video/windx5/SDL_dx5video.h | 2 +- 16 files changed, 126 insertions(+), 110 deletions(-) create mode 100644 VisualCE.zip diff --git a/Makefile.am b/Makefile.am index a6b75f95a..fbbccda30 100644 --- a/Makefile.am +++ b/Makefile.am @@ -39,6 +39,7 @@ EXTRA_DIST = \ Borland.zip \ VisualC.html \ VisualC.zip \ + VisualCE.zip \ MPWmake.sea.bin \ CWprojects.sea.bin \ PBProjects.tar.gz \ diff --git a/README.WinCE b/README.WinCE index 944df834b..7ca50fe69 100644 --- a/README.WinCE +++ b/README.WinCE @@ -1,8 +1,7 @@ -NOTE: -SDL is NOT SUPPORTED on the WinCE platform! This is for experimental -purposes only. +Project files for embedded Visual C++ 4.0 can be found in VisualCE.zip +NOTE: There are several SDL features not available in the WinCE port of SDL. - DirectX is not yet available diff --git a/VisualCE.zip b/VisualCE.zip new file mode 100644 index 0000000000000000000000000000000000000000..834b4fb60d5828afe608600d36e7bf5023706464 GIT binary patch literal 9350 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 literal 0 HcmV?d00001 diff --git a/include/SDL_main.h b/include/SDL_main.h index a20f9ba1e..6a7a8944e 100644 --- a/include/SDL_main.h +++ b/include/SDL_main.h @@ -30,9 +30,10 @@ static char rcsid = /* Redefine main() on Win32 and MacOS so that it is called by winmain.c */ -#if defined(WIN32) || (defined(__MWERKS__) && !defined(__BEOS__)) || \ - defined(macintosh) || defined(__APPLE__) || defined(__SYMBIAN32__) || \ - defined(QWS) +#if defined(WIN32) || defined(_WIN32) || \ + (defined(__MWERKS__) && !defined(__BEOS__)) || \ + defined(macintosh) || defined(__APPLE__) || \ + defined(__SYMBIAN32__) || defined(QWS) #ifdef __cplusplus #define C_LINKAGE "C" diff --git a/src/audio/windx5/SDL_dx5audio.c b/src/audio/windx5/SDL_dx5audio.c index 78ddd68c3..d79468d6d 100644 --- a/src/audio/windx5/SDL_dx5audio.c +++ b/src/audio/windx5/SDL_dx5audio.c @@ -63,7 +63,7 @@ static int Audio_Available(void) /* Version check DSOUND.DLL (Is DirectX okay?) */ dsound_ok = 0; - DSoundDLL = LoadLibrary("DSOUND.DLL"); + DSoundDLL = LoadLibrary(TEXT("DSOUND.DLL")); if ( DSoundDLL != NULL ) { /* We just use basic DirectSound, we're okay */ /* Yay! */ @@ -95,7 +95,7 @@ static int Audio_Available(void) * to fall back to the DIB driver. */ if (dsound_ok) { /* DirectSoundCaptureCreate was added in DX5 */ - if (!GetProcAddress(DSoundDLL, "DirectSoundCaptureCreate")) + if (!GetProcAddress(DSoundDLL, TEXT("DirectSoundCaptureCreate"))) dsound_ok = 0; } @@ -121,10 +121,10 @@ static int DX5_Load(void) int status; DX5_Unload(); - DSoundDLL = LoadLibrary("DSOUND.DLL"); + DSoundDLL = LoadLibrary(TEXT("DSOUND.DLL")); if ( DSoundDLL != NULL ) { DSoundCreate = (void *)GetProcAddress(DSoundDLL, - "DirectSoundCreate"); + TEXT("DirectSoundCreate")); } if ( DSoundDLL && DSoundCreate ) { status = 0; @@ -189,7 +189,7 @@ AudioBootStrap DSOUND_bootstrap = { static void SetDSerror(const char *function, int code) { static const char *error; - static char errbuf[BUFSIZ]; + static char errbuf[1024]; errbuf[0] = 0; switch (code) { diff --git a/src/main/win32/SDL_main.c b/src/main/win32/SDL_main.c index 8625e3827..65db02f6e 100644 --- a/src/main/win32/SDL_main.c +++ b/src/main/win32/SDL_main.c @@ -225,6 +225,9 @@ int console_main(int argc, char *argv[]) /* Exit cleanly, calling atexit() functions */ exit(0); + + /* Hush little compiler, don't you cry... */ + return(0); } /* This is where execution begins [windowed apps] */ diff --git a/src/timer/win32/SDL_systimer.c b/src/timer/win32/SDL_systimer.c index 11fa67f7e..ed43bcae1 100644 --- a/src/timer/win32/SDL_systimer.c +++ b/src/timer/win32/SDL_systimer.c @@ -33,8 +33,8 @@ static char rcsid = #include "SDL_error.h" #ifdef _WIN32_WCE -#define USE_GETTICKCOUNT -#define USE_SETTIMER +//#define USE_GETTICKCOUNT +//#define USE_SETTIMER #endif #define TIME_WRAP_VALUE (~(DWORD)0) diff --git a/src/video/SDL_sysvideo.h b/src/video/SDL_sysvideo.h index 8d6fb1488..a325ae5d5 100644 --- a/src/video/SDL_sysvideo.h +++ b/src/video/SDL_sysvideo.h @@ -42,6 +42,7 @@ static char rcsid = #ifndef _WIN32_WCE #define HAVE_OPENGL #endif +#define WIN32_LEAN_AND_MEAN #include #endif diff --git a/src/video/wincommon/SDL_lowvideo.h b/src/video/wincommon/SDL_lowvideo.h index 32021d36c..938f301f8 100644 --- a/src/video/wincommon/SDL_lowvideo.h +++ b/src/video/wincommon/SDL_lowvideo.h @@ -53,7 +53,11 @@ static char rcsid = #define DINPUT_FULLSCREEN() DDRAW_FULLSCREEN() /* The main window -- and a function to set it for the audio */ -extern const char *SDL_Appname; +#ifdef _WIN32_WCE +extern LPWSTR SDL_Appname; +#else +extern LPSTR SDL_Appname; +#endif extern HINSTANCE SDL_Instance; extern HWND SDL_Window; extern const char *SDL_windowid; diff --git a/src/video/wincommon/SDL_sysevents.c b/src/video/wincommon/SDL_sysevents.c index dbd8065cc..e200070e9 100644 --- a/src/video/wincommon/SDL_sysevents.c +++ b/src/video/wincommon/SDL_sysevents.c @@ -47,10 +47,15 @@ static char rcsid = #ifdef _WIN32_WCE #define NO_GETKEYBOARDSTATE +#define NO_CHANGEDISPLAYSETTINGS #endif /* The window we use for everything... */ -const char *SDL_Appname = NULL; +#ifdef _WIN32_WCE +LPWSTR SDL_Appname = NULL; +#else +LPSTR SDL_Appname = NULL; +#endif HINSTANCE SDL_Instance = NULL; HWND SDL_Window = NULL; RECT SDL_bounds = {0, 0, 0, 0}; @@ -578,21 +583,22 @@ int SDL_RegisterApp(char *name, Uint32 style, void *hInst) class.hCursor = NULL; #ifdef _WIN32_WCE { - /* WinCE uses the UNICODE version */ - int nLen = strlen(name)+1; - LPWSTR lpszW = alloca(nLen*2); - MultiByteToWideChar(CP_ACP, 0, name, -1, lpszW, nLen); - class.hIcon = LoadImage(hInst, lpszW, IMAGE_ICON, - 0, 0, LR_DEFAULTCOLOR); - class.lpszMenuName = NULL; - class.lpszClassName = lpszW; + /* WinCE uses the UNICODE version */ + int nLen = strlen(name)+1; + SDL_Appname = malloc(nLen*2); + MultiByteToWideChar(CP_ACP, 0, name, -1, SDL_Appname, nLen); } #else - class.hIcon = LoadImage(hInst, name, IMAGE_ICON, - 0, 0, LR_DEFAULTCOLOR); - class.lpszMenuName = "(none)"; - class.lpszClassName = name; + { + int nLen = strlen(name)+1; + SDL_Appname = malloc(nLen); + strcpy(SDL_Appname, name); + } #endif /* _WIN32_WCE */ + class.hIcon = LoadImage(hInst, SDL_Appname, IMAGE_ICON, + 0, 0, LR_DEFAULTCOLOR); + class.lpszMenuName = NULL; + class.lpszClassName = SDL_Appname; class.hbrBackground = NULL; class.hInstance = hInst; class.style = style; @@ -606,7 +612,6 @@ int SDL_RegisterApp(char *name, Uint32 style, void *hInst) SDL_SetError("Couldn't register application class"); return(-1); } - SDL_Appname = name; SDL_Instance = hInst; #ifdef WM_MOUSELEAVE diff --git a/src/video/wincommon/SDL_wingl.c b/src/video/wincommon/SDL_wingl.c index caf8abde8..9d067bdfe 100644 --- a/src/video/wincommon/SDL_wingl.c +++ b/src/video/wincommon/SDL_wingl.c @@ -27,7 +27,9 @@ static char rcsid = /* WGL implementation of SDL OpenGL support */ +#ifdef HAVE_OPENGL #include "SDL_opengl.h" +#endif #include "SDL_error.h" #include "SDL_lowvideo.h" #include "SDL_wingl_c.h" @@ -264,10 +266,6 @@ void WIN_GL_SwapBuffers(_THIS) SwapBuffers(GL_hdc); } -#endif /* HAVE_OPENGL */ - -#ifdef HAVE_OPENGL - void WIN_GL_UnloadLibrary(_THIS) { if ( this->gl_config.driver_loaded ) { diff --git a/src/video/windib/SDL_dibevents.c b/src/video/windib/SDL_dibevents.c index 26eb31da0..8a49ddced 100644 --- a/src/video/windib/SDL_dibevents.c +++ b/src/video/windib/SDL_dibevents.c @@ -333,28 +333,9 @@ static SDL_keysym *TranslateKey(UINT vkey, UINT scancode, SDL_keysym *keysym, in int DIB_CreateWindow(_THIS) { -#ifdef _WIN32_WCE - /* WinCE uses the UNICODE version */ - int nLen; - LPWSTR lpszW; - - if ( SDL_RegisterApp("SDL_app", 0, 0) != 0 ) { - return -1; - } - - nLen = strlen(SDL_Appname) + 1; - lpszW = alloca(nLen * 2); - - MultiByteToWideChar(CP_ACP, 0, "SDL_App", -1, lpszW, nLen); - - SDL_Window = CreateWindow(lpszW, lpszW, WS_VISIBLE, - 0, 0, 0, 0, NULL, NULL, SDL_Instance, NULL); - if ( SDL_Window == NULL ) { - SDL_SetError("Couldn't create window"); - return(-1); - } - ShowWindow(SDL_Window, SW_HIDE); -#else +#ifndef CS_BYTEALIGNCLIENT +#define CS_BYTEALIGNCLIENT 0 +#endif SDL_RegisterApp("SDL_app", CS_BYTEALIGNCLIENT, 0); if ( SDL_windowid ) { SDL_Window = (HWND)strtol(SDL_windowid, NULL, 0); @@ -376,8 +357,6 @@ int DIB_CreateWindow(_THIS) } ShowWindow(SDL_Window, SW_HIDE); } -#endif /* _WIN32_WCE */ - return(0); } diff --git a/src/video/windib/SDL_dibvideo.c b/src/video/windib/SDL_dibvideo.c index 5238f8134..0ab2670b7 100644 --- a/src/video/windib/SDL_dibvideo.c +++ b/src/video/windib/SDL_dibvideo.c @@ -53,6 +53,15 @@ static char rcsid = #define NO_CHANGEDISPLAYSETTINGS #define NO_GAMMA_SUPPORT #endif +#ifndef WS_MAXIMIZE +#define WS_MAXIMIZE 0 +#endif +#ifndef SWP_NOCOPYBITS +#define SWP_NOCOPYBITS 0 +#endif +#ifndef PC_NOCOLLAPSE +#define PC_NOCOLLAPSE 0 +#endif /* Initialization/Query functions */ static int DIB_VideoInit(_THIS, SDL_PixelFormat *vformat); @@ -143,11 +152,11 @@ static SDL_VideoDevice *DIB_CreateDevice(int devindex) device->SetGammaRamp = DIB_SetGammaRamp; device->GetGammaRamp = DIB_GetGammaRamp; #ifdef HAVE_OPENGL - device->GL_LoadLibrary = WIN_GL_LoadLibrary; - device->GL_GetProcAddress = WIN_GL_GetProcAddress; - device->GL_GetAttribute = WIN_GL_GetAttribute; - device->GL_MakeCurrent = WIN_GL_MakeCurrent; - device->GL_SwapBuffers = WIN_GL_SwapBuffers; + device->GL_LoadLibrary = WIN_GL_LoadLibrary; + device->GL_GetProcAddress = WIN_GL_GetProcAddress; + device->GL_GetAttribute = WIN_GL_GetAttribute; + device->GL_MakeCurrent = WIN_GL_MakeCurrent; + device->GL_SwapBuffers = WIN_GL_SwapBuffers; #endif device->SetCaption = WIN_SetWMCaption; device->SetIcon = WIN_SetWMIcon; @@ -440,10 +449,8 @@ SDL_Surface *DIB_SetVideoMode(_THIS, SDL_Surface *current, (WS_POPUP); const DWORD windowstyle = (WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX); -#ifndef _WIN32_WCE const DWORD resizestyle = (WS_THICKFRAME|WS_MAXIMIZEBOX); -#endif int binfo_size; BITMAPINFO *binfo; HDC hdc; @@ -455,12 +462,10 @@ SDL_Surface *DIB_SetVideoMode(_THIS, SDL_Surface *current, /* See whether or not we should center the window */ was_visible = IsWindowVisible(SDL_Window); -#ifdef HAVE_OPENGL /* Clean up any GL context that may be hanging around */ if ( current->flags & SDL_OPENGL ) { WIN_GL_ShutDown(this); } -#endif /* HAVE_OPENGL */ /* Recalculate the bitmasks if necessary */ if ( bpp == current->format->BitsPerPixel ) { @@ -542,9 +547,7 @@ SDL_Surface *DIB_SetVideoMode(_THIS, SDL_Surface *current, } style = GetWindowLong(SDL_Window, GWL_STYLE); -#ifndef _WIN32_WCE style &= ~(resizestyle|WS_MAXIMIZE); -#endif if ( (video->flags & SDL_FULLSCREEN) == SDL_FULLSCREEN ) { style &= ~windowstyle; style |= directstyle; @@ -562,13 +565,11 @@ SDL_Surface *DIB_SetVideoMode(_THIS, SDL_Surface *current, style &= ~directstyle; style |= windowstyle; if ( flags & SDL_RESIZABLE ) { -#ifndef _WIN32_WCE style |= resizestyle; -#endif video->flags |= SDL_RESIZABLE; } } -#ifndef _WIN32_WCE +#if WS_MAXIMIZE if (IsZoomed(SDL_Window)) style |= WS_MAXIMIZE; #endif } @@ -659,11 +660,7 @@ SDL_Surface *DIB_SetVideoMode(_THIS, SDL_Surface *current, bounds.top = 0; bounds.right = video->w; bounds.bottom = video->h; -#ifndef _WIN32_WCE - AdjustWindowRect(&bounds, GetWindowLong(SDL_Window, GWL_STYLE), FALSE); -#else - AdjustWindowRectEx(&bounds, GetWindowLong(SDL_Window, GWL_STYLE), FALSE,0); -#endif + AdjustWindowRectEx(&bounds, GetWindowLong(SDL_Window, GWL_STYLE), FALSE, 0); width = bounds.right-bounds.left; height = bounds.bottom-bounds.top; x = (GetSystemMetrics(SM_CXSCREEN)-width)/2; @@ -671,11 +668,7 @@ SDL_Surface *DIB_SetVideoMode(_THIS, SDL_Surface *current, if ( y < 0 ) { /* Cover up title bar for more client area */ y -= GetSystemMetrics(SM_CYCAPTION)/2; } -#ifndef _WIN32_WCE swp_flags = (SWP_NOCOPYBITS | SWP_FRAMECHANGED | SWP_SHOWWINDOW); -#else - swp_flags = (SWP_FRAMECHANGED | SWP_SHOWWINDOW); -#endif if ( was_visible && !(flags & SDL_FULLSCREEN) ) { swp_flags |= SWP_NOMOVE; } @@ -689,7 +682,6 @@ SDL_Surface *DIB_SetVideoMode(_THIS, SDL_Surface *current, SetForegroundWindow(SDL_Window); } -#ifdef HAVE_OPENGL /* Set up for OpenGL */ if ( flags & SDL_OPENGL ) { if ( WIN_GL_SetupWindow(this) < 0 ) { @@ -697,7 +689,6 @@ SDL_Surface *DIB_SetVideoMode(_THIS, SDL_Surface *current, } video->flags |= SDL_OPENGL; } -#endif /* HAVE_OPENGL */ /* We're live! */ return(video); @@ -760,11 +751,7 @@ int DIB_SetColors(_THIS, int firstcolor, int ncolors, SDL_Color *colors) entries[i].peRed = colors[i].r; entries[i].peGreen = colors[i].g; entries[i].peBlue = colors[i].b; -#ifndef _WIN32_WCE entries[i].peFlags = PC_NOCOLLAPSE; -#else - entries[i].peFlags = 0; -#endif } SetPaletteEntries(screen_pal, firstcolor, ncolors, entries); SelectPalette(hdc, screen_pal, FALSE); @@ -917,11 +904,9 @@ void DIB_VideoQuit(_THIS) ShowWindow(SDL_Window, SW_HIDE); } #endif -#ifdef HAVE_OPENGL if ( this->screen->flags & SDL_OPENGL ) { WIN_GL_ShutDown(this); } -#endif /* HAVE_OPENGL */ this->screen->pixels = NULL; } if ( screen_bmp ) { diff --git a/src/video/windx5/SDL_dx5events.c b/src/video/windx5/SDL_dx5events.c index 7d81ac7ac..0f49f38f0 100644 --- a/src/video/windx5/SDL_dx5events.c +++ b/src/video/windx5/SDL_dx5events.c @@ -43,6 +43,10 @@ static char rcsid = #define WM_APP 0x8000 #endif +#ifdef _WIN32_WCE +#define NO_GETKEYBOARDSTATE +#endif + /* The keyboard and mouse device input */ #define MAX_INPUTS 16 /* Maximum of 16-1 input devices */ #define INPUT_QSIZE 32 /* Buffer up to 32 input messages */ @@ -67,7 +71,7 @@ static WNDPROC userWindowProc = NULL; static void SetDIerror(char *function, int code) { static char *error; - static char errbuf[BUFSIZ]; + static char errbuf[1024]; errbuf[0] = 0; switch (code) { @@ -449,6 +453,7 @@ LONG DX5_HandleMessage(_THIS, HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { +#ifdef WM_ACTIVATEAPP case WM_ACTIVATEAPP: { int i, active; @@ -467,7 +472,9 @@ LONG } } break; +#endif /* WM_ACTIVATEAPP */ +#ifdef WM_DISPLAYCHANGE case WM_DISPLAYCHANGE: { WORD BitsPerPixel; WORD SizeX, SizeY; @@ -479,6 +486,7 @@ LONG /* We cause this message when we go fullscreen */ } break; +#endif /* WM_DISPLAYCHANGE */ /* The keyboard is handled via DirectInput */ case WM_SYSKEYUP: @@ -489,6 +497,7 @@ LONG } return(0); +#if defined(SC_SCREENSAVE) || defined(SC_MONITORPOWER) /* Don't allow screen savers or monitor power downs. This is because they quietly clear DirectX surfaces. It would be better to allow the application to @@ -501,11 +510,11 @@ LONG (wParam&0xFFF0)==SC_MONITORPOWER) return(0); } - goto custom_processing; - break; + /* Fall through to default processing */ + +#endif /* SC_SCREENSAVE || SC_MONITORPOWER */ default: { - custom_processing: /* Only post the event if we're watching for it */ if ( SDL_ProcessEvents[SDL_SYSWMEVENT] == SDL_ENABLE ) { SDL_SysWMmsg wmmsg; @@ -759,14 +768,21 @@ static SDL_keysym *TranslateKey(UINT scancode, SDL_keysym *keysym, int pressed) keysym->unicode = 0; if ( pressed && SDL_TranslateUNICODE ) { /* Someday use ToUnicode() */ UINT vkey; +#ifndef NO_GETKEYBOARDSTATE BYTE keystate[256]; BYTE chars[2]; +#endif vkey = MapVirtualKey(scancode, 1); +#ifdef NO_GETKEYBOARDSTATE + /* Uh oh, better hope the vkey is close enough.. */ + keysym->unicode = vkey; +#else GetKeyboardState(keystate); if ( ToAscii(vkey,scancode,keystate,(WORD *)chars,0) == 1 ) { keysym->unicode = chars[0]; } +#endif } return(keysym); } @@ -782,7 +798,9 @@ int DX5_CreateWindow(_THIS) SDL_DIfun[i] = NULL; } - /* Create the SDL window */ +#ifndef CS_BYTEALIGNCLIENT +#define CS_BYTEALIGNCLIENT 0 +#endif SDL_RegisterApp("SDL_app", CS_BYTEALIGNCLIENT, 0); if ( SDL_windowid ) { SDL_Window = (HWND)strtol(SDL_windowid, NULL, 0); diff --git a/src/video/windx5/SDL_dx5video.c b/src/video/windx5/SDL_dx5video.c index 695e2b144..08526288e 100644 --- a/src/video/windx5/SDL_dx5video.c +++ b/src/video/windx5/SDL_dx5video.c @@ -51,10 +51,23 @@ static char rcsid = #include "SDL_dx5yuv_c.h" #include "SDL_wingl_c.h" +#ifdef _WIN32_WCE +#define NO_CHANGEDISPLAYSETTINGS +#endif +#ifndef WS_MAXIMIZE +#define WS_MAXIMIZE 0 +#endif +#ifndef SWP_NOCOPYBITS +#define SWP_NOCOPYBITS 0 +#endif +#ifndef PC_NOCOLLAPSE +#define PC_NOCOLLAPSE 0 +#endif + /* DirectX function pointers for video and events */ HRESULT (WINAPI *DDrawCreate)( GUID FAR *lpGUID, LPDIRECTDRAW FAR *lplpDD, IUnknown FAR *pUnkOuter ); -HRESULT (WINAPI *DInputCreate)(HINSTANCE hinst, DWORD dwVersion, LPDIRECTINPUTA *ppDI, LPUNKNOWN punkOuter); +HRESULT (WINAPI *DInputCreate)(HINSTANCE hinst, DWORD dwVersion, LPDIRECTINPUT *ppDI, LPUNKNOWN punkOuter); /* This is the rect EnumModes2 uses */ struct DX5EnumRect { @@ -443,19 +456,19 @@ static int DX5_Available(void) /* Version check DINPUT.DLL and DDRAW.DLL (Is DirectX okay?) */ dinput_ok = 0; - DInputDLL = LoadLibrary("DINPUT.DLL"); + DInputDLL = LoadLibrary(TEXT("DINPUT.DLL")); if ( DInputDLL != NULL ) { dinput_ok = 1; FreeLibrary(DInputDLL); } ddraw_ok = 0; - DDrawDLL = LoadLibrary("DDRAW.DLL"); + DDrawDLL = LoadLibrary(TEXT("DDRAW.DLL")); if ( DDrawDLL != NULL ) { HRESULT (WINAPI *DDrawCreate)(GUID *,LPDIRECTDRAW *,IUnknown *); LPDIRECTDRAW DDraw; /* Try to create a valid DirectDraw object */ - DDrawCreate = (void *)GetProcAddress(DDrawDLL, "DirectDrawCreate"); + DDrawCreate = (void *)GetProcAddress(DDrawDLL, TEXT("DirectDrawCreate")); if ( (DDrawCreate != NULL) && !FAILED(DDrawCreate(NULL, &DDraw, NULL)) ) { if ( !FAILED(IDirectDraw_SetCooperativeLevel(DDraw, @@ -511,15 +524,15 @@ static int DX5_Load(void) int status; DX5_Unload(); - DDrawDLL = LoadLibrary("DDRAW.DLL"); + DDrawDLL = LoadLibrary(TEXT("DDRAW.DLL")); if ( DDrawDLL != NULL ) { DDrawCreate = (void *)GetProcAddress(DDrawDLL, - "DirectDrawCreate"); + TEXT("DirectDrawCreate")); } - DInputDLL = LoadLibrary("DINPUT.DLL"); + DInputDLL = LoadLibrary(TEXT("DINPUT.DLL")); if ( DInputDLL != NULL ) { DInputCreate = (void *)GetProcAddress(DInputDLL, - "DirectInputCreateA"); + TEXT("DirectInputCreateA")); } if ( DDrawDLL && DDrawCreate && DInputDLL && DInputCreate ) { status = 0; @@ -596,11 +609,11 @@ static SDL_VideoDevice *DX5_CreateDevice(int devindex) device->SetGammaRamp = DX5_SetGammaRamp; device->GetGammaRamp = DX5_GetGammaRamp; #ifdef HAVE_OPENGL - device->GL_LoadLibrary = WIN_GL_LoadLibrary; - device->GL_GetProcAddress = WIN_GL_GetProcAddress; - device->GL_GetAttribute = WIN_GL_GetAttribute; - device->GL_MakeCurrent = WIN_GL_MakeCurrent; - device->GL_SwapBuffers = WIN_GL_SwapBuffers; + device->GL_LoadLibrary = WIN_GL_LoadLibrary; + device->GL_GetProcAddress = WIN_GL_GetProcAddress; + device->GL_GetAttribute = WIN_GL_GetAttribute; + device->GL_MakeCurrent = WIN_GL_MakeCurrent; + device->GL_SwapBuffers = WIN_GL_SwapBuffers; #endif device->SetCaption = WIN_SetWMCaption; device->SetIcon = WIN_SetWMIcon; @@ -670,7 +683,7 @@ static HRESULT WINAPI EnumModes2(DDSURFACEDESC *desc, VOID *udata) void SetDDerror(const char *function, int code) { static char *error; - static char errbuf[BUFSIZ]; + static char errbuf[1024]; errbuf[0] = 0; switch (code) { @@ -994,11 +1007,13 @@ SDL_Surface *DX5_SetVideoMode(_THIS, SDL_Surface *current, SDL_primary = NULL; } +#ifndef NO_CHANGEDISPLAYSETTINGS /* Unset any previous OpenGL fullscreen mode */ if ( (current->flags & (SDL_OPENGL|SDL_FULLSCREEN)) == (SDL_OPENGL|SDL_FULLSCREEN) ) { ChangeDisplaySettings(NULL, 0); } +#endif /* Clean up any GL context that may be hanging around */ if ( current->flags & SDL_OPENGL ) { @@ -1057,6 +1072,7 @@ SDL_Surface *DX5_SetVideoMode(_THIS, SDL_Surface *current, video->h = height; video->pitch = SDL_CalculatePitch(video); +#ifndef NO_CHANGEDISPLAYSETTINGS /* Set fullscreen mode if appropriate. Ugh, since our list of valid video modes comes from the DirectX driver, we may not actually be able to @@ -1077,6 +1093,7 @@ SDL_Surface *DX5_SetVideoMode(_THIS, SDL_Surface *current, SDL_fullscreen_mode = settings; } } +#endif /* !NO_CHANGEDISPLAYSETTINGS */ style = GetWindowLong(SDL_Window, GWL_STYLE); style &= ~(resizestyle|WS_MAXIMIZE); @@ -1096,7 +1113,9 @@ SDL_Surface *DX5_SetVideoMode(_THIS, SDL_Surface *current, video->flags |= SDL_RESIZABLE; } } +#if WS_MAXIMIZE if (IsZoomed(SDL_Window)) style |= WS_MAXIMIZE; +#endif } SetWindowLong(SDL_Window, GWL_STYLE, style); @@ -1110,7 +1129,7 @@ SDL_Surface *DX5_SetVideoMode(_THIS, SDL_Surface *current, bounds.top = 0; bounds.right = video->w; bounds.bottom = video->h; - AdjustWindowRect(&bounds, GetWindowLong(SDL_Window, GWL_STYLE), FALSE); + AdjustWindowRectEx(&bounds, GetWindowLong(SDL_Window, GWL_STYLE), FALSE, 0); width = bounds.right-bounds.left; height = bounds.bottom-bounds.top; x = (GetSystemMetrics(SM_CXSCREEN)-width)/2; @@ -1157,7 +1176,9 @@ SDL_Surface *DX5_SetVideoMode(_THIS, SDL_Surface *current, style |= resizestyle; } } +#if WS_MAXIMIZE if (IsZoomed(SDL_Window)) style |= WS_MAXIMIZE; +#endif } SetWindowLong(SDL_Window, GWL_STYLE, style); @@ -1466,8 +1487,7 @@ SDL_Surface *DX5_SetVideoMode(_THIS, SDL_Surface *current, bounds.top = 0; bounds.right = video->w; bounds.bottom = video->h; - AdjustWindowRect(&bounds, GetWindowLong(SDL_Window, GWL_STYLE), - FALSE); + AdjustWindowRectEx(&bounds, GetWindowLong(SDL_Window, GWL_STYLE), FALSE, 0); width = bounds.right-bounds.left; height = bounds.bottom-bounds.top; x = (GetSystemMetrics(SM_CXSCREEN)-width)/2; @@ -2235,11 +2255,13 @@ void DX5_VideoQuit(_THIS) /* If we're fullscreen GL, we need to reset the display */ if ( this->screen != NULL ) { +#ifndef NO_CHANGEDISPLAYSETTINGS if ( (this->screen->flags & (SDL_OPENGL|SDL_FULLSCREEN)) == (SDL_OPENGL|SDL_FULLSCREEN) ) { ChangeDisplaySettings(NULL, 0); ShowWindow(SDL_Window, SW_HIDE); } +#endif if ( this->screen->flags & SDL_OPENGL ) { WIN_GL_ShutDown(this); } diff --git a/src/video/windx5/SDL_dx5video.h b/src/video/windx5/SDL_dx5video.h index df32a5ccc..db07b4b90 100644 --- a/src/video/windx5/SDL_dx5video.h +++ b/src/video/windx5/SDL_dx5video.h @@ -57,7 +57,7 @@ struct SDL_PrivateVideoData { /* DirectX function pointers for video and events */ extern HRESULT (WINAPI *DDrawCreate)( GUID FAR *lpGUID, LPDIRECTDRAW FAR *lplpDD, IUnknown FAR *pUnkOuter ); -extern HRESULT (WINAPI *DInputCreate)(HINSTANCE hinst, DWORD dwVersion, LPDIRECTINPUTA *ppDI, LPUNKNOWN punkOuter); +extern HRESULT (WINAPI *DInputCreate)(HINSTANCE hinst, DWORD dwVersion, LPDIRECTINPUT *ppDI, LPUNKNOWN punkOuter); /* DirectDraw error reporting function */ extern void SetDDerror(const char *function, int code);