# HG changeset patch # User Sam Lantinga # Date 995486663 0 # Node ID 9ef74357a5fb45fba1cd6b4809489ad1aee62fe8 # Parent 53e3d8ba432136c5127c4adb039a3fdaa0e24fb9 Incorporated slightly modified version of Rainer's WinCE patch diff -r 53e3d8ba4321 -r 9ef74357a5fb src/main/win32/SDL_main.c --- a/src/main/win32/SDL_main.c Sat Jul 14 20:37:24 2001 +0000 +++ b/src/main/win32/SDL_main.c Wed Jul 18 20:04:23 2001 +0000 @@ -16,8 +16,10 @@ #include "SDL.h" #include "SDL_main.h" #ifdef main +#ifndef _WIN32_WCE_EMULATION #undef main #endif +#endif /* Do we really not want stdio redirection with Windows CE? */ #ifdef _WIN32_WCE @@ -28,7 +30,7 @@ #define STDOUT_FILE TEXT("stdout.txt") #define STDERR_FILE TEXT("stderr.txt") -#ifdef _WIN32_WCE +#if defined(_WIN32_WCE) && _WIN32_WCE < 300 /* seems to be undefined in Win CE although in online help */ #define isspace(a) (((CHAR)a == ' ') || ((CHAR)a == '\t')) @@ -52,7 +54,7 @@ } return p; } -#endif /* _WIN32_WCE */ +#endif /* _WIN32_WCE < 300 */ /* Parse a command line buffer into arguments */ static int ParseCommandLine(char *cmdline, char **argv) @@ -274,7 +276,7 @@ nLen = wcslen(szCmdLine)+128+1; bufp = (wchar_t *)alloca(nLen*2); GetModuleFileName(NULL, bufp, 128); - wcsncpy(bufp+wcslen(bufp), szCmdLine,nLen); + wcsncpy(bufp+wcslen(bufp), szCmdLine,nLen-wcslen(bufp)); nLen = wcslen(bufp)+1; cmdline = (char *)alloca(nLen); if ( cmdline == NULL ) { diff -r 53e3d8ba4321 -r 9ef74357a5fb src/video/windib/SDL_dibevents.c --- a/src/video/windib/SDL_dibevents.c Sat Jul 14 20:37:24 2001 +0000 +++ b/src/video/windib/SDL_dibevents.c Wed Jul 18 20:04:23 2001 +0000 @@ -87,6 +87,26 @@ wParam = VK_LMENU; break; } +#ifdef NO_GETKEYBOARDSTATE + /* this is the workaround for the missing ToAscii() and ToUnicode() in CE (not necessary at KEYUP!) */ + if ( SDL_TranslateUNICODE ) { + MSG msg; + + msg.hwnd = hwnd; + msg.message = msg; + msg.wParam = wParam; + msg.lParam = lParam; + msg.time = 0; + if ( TranslateMessage(&m) && PeekMessage(&msg, hwnd, 0, WM_USER, PM_NOREMOVE) && (m.message == WM_CHAR) ) { + GetMessage(&m, hwnd, 0, WM_USER); + wParam = m.wParam; + } else { + wParam = 0; + } + } else { + wParam = 0; + } +#endif /* NO_GETKEYBOARDSTATE */ posted = SDL_PrivateKeyboard(SDL_PRESSED, TranslateKey(wParam,HIWORD(lParam),&keysym,1)); } diff -r 53e3d8ba4321 -r 9ef74357a5fb src/video/windib/SDL_dibvideo.c --- a/src/video/windib/SDL_dibvideo.c Sat Jul 14 20:37:24 2001 +0000 +++ b/src/video/windib/SDL_dibvideo.c Wed Jul 18 20:04:23 2001 +0000 @@ -375,9 +375,12 @@ hdc = GetDC(SDL_Window); depth = GetDeviceCaps(hdc, PLANES) * GetDeviceCaps(hdc, BITSPIXEL); ReleaseDC(SDL_Window, hdc); +#ifndef _WIN32_WCE + // AFAIK 16 bit CE devices have indeed RGB 565 if ( depth == 16 ) { depth = 15; /* GDI defined as RGB 555 */ } +#endif return(depth); #else int dib_size;