Commit 37aa008a authored by Sam Lantinga's avatar Sam Lantinga

Incorporated slightly modified version of Rainer's WinCE patch

--HG--
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%40113
parent b444cb02
......@@ -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 @@ char *strrchr(char *str, int c)
}
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 @@ int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine, int sw)
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 ) {
......
......@@ -87,6 +87,26 @@ LONG
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));
}
......
......@@ -375,9 +375,12 @@ static int DIB_SussScreenDepth()
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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment