From a9ee23bb9fbf805db1baa74482f66da3732a69a2 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Wed, 1 Mar 2006 09:43:47 +0000 Subject: [PATCH] Fixed a bunch of 64-bit compatibility problems --HG-- extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%401460 --- VisualC.zip | Bin 42437 -> 42516 bytes configure.in | 2 +- include/SDL_stdinc.h | 12 +++++ src/audio/windib/SDL_dibaudio.c | 8 ++-- src/cdrom/win32/SDL_syscdrom.c | 2 +- src/file/SDL_rwops.c | 4 +- src/stdlib/SDL_getenv.c | 6 +-- src/stdlib/SDL_malloc.c | 2 +- src/stdlib/SDL_qsort.c | 4 +- src/stdlib/SDL_string.c | 69 ++++++++++++++++++++++++++-- src/video/SDL_RLEaccel.c | 14 +++--- src/video/SDL_blit_A.c | 6 +-- src/video/SDL_surface.c | 4 +- src/video/wincommon/SDL_sysevents.c | 4 +- src/video/wincommon/SDL_sysmouse.c | 2 +- src/video/wincommon/SDL_syswm.c | 2 +- src/video/windib/SDL_dibevents.c | 11 ++--- src/video/windx5/SDL_dx5events.c | 13 +++--- 18 files changed, 117 insertions(+), 48 deletions(-) diff --git a/VisualC.zip b/VisualC.zip index a9db1f643144d1936b6256e4baf96fd1e28afa7c..9e5f6e2551f297302ff6050bfa123d62395f8e23 100644 GIT binary patch delta 6477 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 a3f4a{f|3w^RSXCN!qS33H4h0t?*9RfuAkNb delta 6375 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 diff --git a/configure.in b/configure.in index 0d48a180c..e5465e109 100644 --- a/configure.in +++ b/configure.in @@ -116,7 +116,7 @@ if test x$enable_libc = xyes; then if test x$ac_cv_func_strtod = xyes; then AC_DEFINE(HAVE_STRTOD) fi - AC_CHECK_FUNCS(malloc calloc realloc free getenv putenv unsetenv qsort abs bcopy memset memcpy memmove strlen strlcpy strlcat strdup _strrev _strupr _strlwr strchr strrchr strstr itoa _ltoa _uitoa _ultoa strtol _i64toa _ui64toa strtoll atoi atof strcmp strncmp stricmp strcasecmp sscanf snprintf vsnprintf sigaction setjmp nanosleep) + AC_CHECK_FUNCS(malloc calloc realloc free getenv putenv unsetenv qsort abs bcopy memset memcpy memmove strlen strlcpy strlcat strdup _strrev _strupr _strlwr strchr strrchr strstr itoa _ltoa _uitoa _ultoa strtol strtoul _i64toa _ui64toa strtoll strtoull atoi atof strcmp strncmp stricmp strcasecmp sscanf snprintf vsnprintf sigaction setjmp nanosleep) AC_CHECK_LIB(m, pow, [BUILD_LDFLAGS="$BUILD_LDFLAGS -lm"]) fi diff --git a/include/SDL_stdinc.h b/include/SDL_stdinc.h index e03bf43f2..557bf38a4 100644 --- a/include/SDL_stdinc.h +++ b/include/SDL_stdinc.h @@ -446,6 +446,12 @@ extern DECLSPEC char * SDLCALL SDL_ultoa(unsigned long value, char *string, int extern DECLSPEC long SDLCALL SDL_strtol(const char *string, char **endp, int base); #endif +#if HAVE_STRTOUL +#define SDL_strtoul strtoul +#else +extern DECLSPEC unsigned long SDLCALL SDL_strtoul(const char *string, char **endp, int base); +#endif + #if SDL_HAS_64BIT_TYPE #if HAVE__I64TOA @@ -466,6 +472,12 @@ extern DECLSPEC char* SDLCALL SDL_ulltoa(Uint64 value, char *string, int radix); extern DECLSPEC Sint64 SDLCALL SDL_strtoll(const char *string, char **endp, int base); #endif +#if HAVE_STRTOULL +#define SDL_strtoull strtoull +#else +extern DECLSPEC Uint64 SDLCALL SDL_strtoull(const char *string, char **endp, int base); +#endif + #endif /* SDL_HAS_64BIT_TYPE */ #if HAVE_STRTOD diff --git a/src/audio/windib/SDL_dibaudio.c b/src/audio/windib/SDL_dibaudio.c index 37fc42498..9c10db52d 100644 --- a/src/audio/windib/SDL_dibaudio.c +++ b/src/audio/windib/SDL_dibaudio.c @@ -99,7 +99,7 @@ AudioBootStrap WAVEOUT_bootstrap = { /* The Win32 callback for filling the WAVE device */ -static void CALLBACK FillSound(HWAVEOUT hwo, UINT uMsg, DWORD dwInstance, +static void CALLBACK FillSound(HWAVEOUT hwo, UINT uMsg, DWORD_PTR dwInstance, DWORD dwParam1, DWORD dwParam2) { SDL_AudioDevice *this = (SDL_AudioDevice *)dwInstance; @@ -118,7 +118,7 @@ static void CALLBACK FillSound(HWAVEOUT hwo, UINT uMsg, DWORD dwInstance, static void SetMMerror(char *function, MMRESULT code) { - int len; + size_t len; char errbuf[MAXERRORLENGTH]; #ifdef _WIN32_WCE wchar_t werrbuf[MAXERRORLENGTH]; @@ -132,7 +132,7 @@ static void SetMMerror(char *function, MMRESULT code) waveOutGetErrorText(code, werrbuf, MAXERRORLENGTH-len); WideCharToMultiByte(CP_ACP,0,werrbuf,-1,errbuf+len,MAXERRORLENGTH-len,NULL,NULL); #else - waveOutGetErrorText(code, errbuf+len, MAXERRORLENGTH-len); + waveOutGetErrorText(code, errbuf+len, (UINT)(MAXERRORLENGTH-len)); #endif SDL_SetError("%s",errbuf); @@ -266,7 +266,7 @@ int DIB_OpenAudio(_THIS, SDL_AudioSpec *spec) /* Open the audio device */ result = waveOutOpen(&sound, WAVE_MAPPER, &waveformat, - (DWORD)FillSound, (DWORD)this, CALLBACK_FUNCTION); + (DWORD_PTR)FillSound, (DWORD_PTR)this, CALLBACK_FUNCTION); if ( result != MMSYSERR_NOERROR ) { SetMMerror("waveOutOpen()", result); return(-1); diff --git a/src/cdrom/win32/SDL_syscdrom.c b/src/cdrom/win32/SDL_syscdrom.c index 17d02ddc0..7523e7b97 100644 --- a/src/cdrom/win32/SDL_syscdrom.c +++ b/src/cdrom/win32/SDL_syscdrom.c @@ -111,7 +111,7 @@ static int SDL_SYS_CDioctl(int id, UINT msg, DWORD flags, void *arg) { MCIERROR mci_error; - mci_error = mciSendCommand(SDL_mciID[id], msg, flags, (DWORD)arg); + mci_error = mciSendCommand(SDL_mciID[id], msg, flags, (DWORD_PTR)arg); if ( mci_error ) { char error[256]; diff --git a/src/file/SDL_rwops.c b/src/file/SDL_rwops.c index 4e284b24e..c09718a29 100644 --- a/src/file/SDL_rwops.c +++ b/src/file/SDL_rwops.c @@ -245,8 +245,8 @@ static int mem_seek(SDL_RWops *context, int offset, int whence) } static int mem_read(SDL_RWops *context, void *ptr, int size, int maxnum) { - int total_bytes; - int mem_available; + size_t total_bytes; + size_t mem_available; total_bytes = (maxnum * size); if ( (maxnum <= 0) || (size <= 0) || ((total_bytes / maxnum) != size) ) { diff --git a/src/stdlib/SDL_getenv.c b/src/stdlib/SDL_getenv.c index 01fd0ece5..c2d0bb967 100644 --- a/src/stdlib/SDL_getenv.c +++ b/src/stdlib/SDL_getenv.c @@ -33,12 +33,12 @@ /* Note this isn't thread-safe! */ static char *SDL_envmem = NULL; /* Ugh, memory leak */ -static DWORD SDL_envmemlen = 0; +static size_t SDL_envmemlen = 0; /* Put a variable of the form "name=value" into the environment */ int SDL_putenv(const char *variable) { - DWORD bufferlen; + size_t bufferlen; char *value; const char *sep; @@ -67,7 +67,7 @@ int SDL_putenv(const char *variable) /* Retrieve a variable named "name" from the environment */ char *SDL_getenv(const char *name) { - DWORD bufferlen; + size_t bufferlen; bufferlen = GetEnvironmentVariable(name, SDL_envmem, SDL_envmemlen); if ( bufferlen == 0 ) { diff --git a/src/stdlib/SDL_malloc.c b/src/stdlib/SDL_malloc.c index 37bfff31f..550937c9c 100644 --- a/src/stdlib/SDL_malloc.c +++ b/src/stdlib/SDL_malloc.c @@ -1647,7 +1647,7 @@ struct malloc_chunk { typedef struct malloc_chunk mchunk; typedef struct malloc_chunk* mchunkptr; typedef struct malloc_chunk* sbinptr; /* The type of bins of chunks */ -typedef unsigned int bindex_t; /* Described below */ +typedef size_t bindex_t; /* Described below */ typedef unsigned int binmap_t; /* Described below */ typedef unsigned int flag_t; /* The type of various bit flag sets */ diff --git a/src/stdlib/SDL_qsort.c b/src/stdlib/SDL_qsort.c index a3419d421..9278d2579 100644 --- a/src/stdlib/SDL_qsort.c +++ b/src/stdlib/SDL_qsort.c @@ -263,7 +263,7 @@ typedef struct { char * first; char * last; } stack_entry; static char * pivot_big(char *first, char *mid, char *last, size_t size, int compare(const void *, const void *)) { - int d=(((last-first)/size)>>3)*size; + size_t d=(((last-first)/size)>>3)*size; char *m1,*m2,*m3; { char *a=first, *b=first+d, *c=first+2*d; #ifdef DEBUG_QSORT @@ -414,7 +414,7 @@ void qsort(void *base, size_t nmemb, size_t size, int (*compare)(const void *, const void *)) { if (nmemb<=1) return; - if (((int)base|size)&(WORD_BYTES-1)) + if (((uintptr_t)base|size)&(WORD_BYTES-1)) qsort_nonaligned(base,nmemb,size,compare); else if (size!=WORD_BYTES) qsort_aligned(base,nmemb,size,compare); diff --git a/src/stdlib/SDL_string.c b/src/stdlib/SDL_string.c index 54ca1d6ee..9c533fe02 100644 --- a/src/stdlib/SDL_string.c +++ b/src/stdlib/SDL_string.c @@ -69,7 +69,7 @@ static size_t SDL_ScanLong(const char *text, int radix, long *valuep) } #endif -#if !defined(HAVE_SSCANF) || !defined(HAVE_STRTOD) +#if !defined(HAVE_SSCANF) || !defined(HAVE_STRTOUL) || !defined(HAVE_STRTOD) static size_t SDL_ScanUnsignedLong(const char *text, int radix, unsigned long *valuep) { const char *textstart = text; @@ -100,6 +100,37 @@ static size_t SDL_ScanUnsignedLong(const char *text, int radix, unsigned long *v } #endif +#ifndef HAVE_SSCANF +static size_t SDL_ScanUintPtrT(const char *text, int radix, uintptr_t *valuep) +{ + const char *textstart = text; + uintptr_t value = 0; + + if ( radix == 16 && SDL_strncmp(text, "0x", 2) == 0 ) { + text += 2; + } + for ( ; ; ) { + int v; + if ( SDL_isdigit(*text) ) { + v = *text - '0'; + } else if ( radix == 16 && SDL_isupperhex(*text) ) { + v = 10 + (*text - 'A'); + } else if ( radix == 16 && SDL_islowerhex(*text) ) { + v = 10 + (*text - 'a'); + } else { + break; + } + value *= radix; + value += v; + ++text; + } + if ( valuep ) { + *valuep = value; + } + return (text - textstart); +} +#endif + #ifdef SDL_HAS_64BIT_TYPE #if !defined(HAVE_SSCANF) || !defined(HAVE_STRTOLL) static size_t SDL_ScanLongLong(const char *text, int radix, Sint64 *valuep) @@ -141,7 +172,7 @@ static size_t SDL_ScanLongLong(const char *text, int radix, Sint64 *valuep) } #endif -#ifndef HAVE_SSCANF +#if !defined(HAVE_SSCANF) || !defined(HAVE_STRTOULL) static size_t SDL_ScanUnsignedLongLong(const char *text, int radix, Uint64 *valuep) { const char *textstart = text; @@ -488,6 +519,20 @@ long SDL_strtol(const char *string, char **endp, int base) } #endif +#ifndef HAVE_STRTOUL +unsigned long SDL_strtoul(const char *string, char **endp, int base) +{ + size_t len; + unsigned long value; + + len = SDL_ScanUnsignedLong(string, base ? base : 10, &value); + if ( endp ) { + *endp = (char *)string + len; + } + return value; +} +#endif + #ifdef SDL_HAS_64BIT_TYPE #ifndef HAVE__I64TOA @@ -556,6 +601,20 @@ Sint64 SDL_strtoll(const char *string, char **endp, int base) } #endif +#ifndef HAVE_STRTOULL +Uint64 SDL_strtoull(const char *string, char **endp, int base) +{ + size_t len; + Uint64 value; + + len = SDL_ScanUnsignedLongLong(string, base ? base : 10, &value); + if ( endp ) { + *endp = (char *)string + len; + } + return value; +} +#endif + #endif /* SDL_HAS_64BIT_TYPE */ #ifndef HAVE_STRTOD @@ -817,8 +876,8 @@ int SDL_sscanf(const char *text, const char *fmt, ...) break; case 'p': { - unsigned long value; - text += SDL_ScanUnsignedLong(text, 16, &value); + uintptr_t value; + text += SDL_ScanUintPtrT(text, 16, &value); if ( ! suppress ) { void** valuep = va_arg(ap, void**); *valuep = (void*)value; @@ -1003,7 +1062,7 @@ static size_t SDL_PrintString(char *text, const char *string, size_t maxlen) } return (text - textstart); } -int SDL_vsnprintf(char *text, size_t maxlen, const char *fmt, va_list ap) +int SDL_vsnprintf(char *text, size_t maxlen, const char *fmt, va_list ap) { char *textstart = text; if ( maxlen <= 0 ) { diff --git a/src/video/SDL_RLEaccel.c b/src/video/SDL_RLEaccel.c index cba9ace76..cf33352ba 100644 --- a/src/video/SDL_RLEaccel.c +++ b/src/video/SDL_RLEaccel.c @@ -587,12 +587,12 @@ do { \ unsigned n = (length); \ Uint16 *src = (Uint16 *)(from); \ Uint16 *dst = (Uint16 *)(to); \ - if(((unsigned long)src ^ (unsigned long)dst) & 3) { \ + if(((uintptr_t)src ^ (uintptr_t)dst) & 3) { \ /* source and destination not in phase, blit one by one */ \ while(n--) \ BLEND16_50(dst, src, mask); \ } else { \ - if((unsigned long)src & 3) { \ + if((uintptr_t)src & 3) { \ /* first odd pixel */ \ BLEND16_50(dst, src, mask); \ n--; \ @@ -1055,7 +1055,7 @@ static void RLEAlphaClipBlit(int w, Uint8 *srcbuf, SDL_Surface *dst, } while(ofs < w); \ /* skip padding if necessary */ \ if(sizeof(Ptype) == 2) \ - srcbuf += (unsigned long)srcbuf & 2; \ + srcbuf += (uintptr_t)srcbuf & 2; \ /* blit translucent pixels on the same line */ \ ofs = 0; \ do { \ @@ -1147,7 +1147,7 @@ int SDL_RLEAlphaBlit(SDL_Surface *src, SDL_Rect *srcrect, } while(ofs < w); /* skip padding */ - srcbuf += (unsigned long)srcbuf & 2; + srcbuf += (uintptr_t)srcbuf & 2; /* skip translucent line */ ofs = 0; @@ -1211,7 +1211,7 @@ int SDL_RLEAlphaBlit(SDL_Surface *src, SDL_Rect *srcrect, } while(ofs < w); \ /* skip padding if necessary */ \ if(sizeof(Ptype) == 2) \ - srcbuf += (unsigned long)srcbuf & 2; \ + srcbuf += (uintptr_t)srcbuf & 2; \ /* blit translucent pixels on the same line */ \ ofs = 0; \ do { \ @@ -1547,7 +1547,7 @@ static int RLEAlphaSurface(SDL_Surface *surface) } while(x < w); /* Make sure the next output address is 32-bit aligned */ - dst += (unsigned long)dst & 2; + dst += (uintptr_t)dst & 2; /* Next, encode all translucent pixels of the same scan line */ x = 0; @@ -1874,7 +1874,7 @@ static SDL_bool UnRLEAlpha(SDL_Surface *surface) /* skip padding if needed */ if(bpp == 2) - srcbuf += (unsigned long)srcbuf & 2; + srcbuf += (uintptr_t)srcbuf & 2; /* copy translucent pixels */ ofs = 0; diff --git a/src/video/SDL_blit_A.c b/src/video/SDL_blit_A.c index e94fdf66e..e66836bbc 100644 --- a/src/video/SDL_blit_A.c +++ b/src/video/SDL_blit_A.c @@ -1442,7 +1442,7 @@ static void Blit16to16SurfaceAlpha128(SDL_BlitInfo *info, Uint16 mask) int dstskip = info->d_skip >> 1; while(height--) { - if(((unsigned long)srcp ^ (unsigned long)dstp) & 2) { + if(((uintptr_t)srcp ^ (uintptr_t)dstp) & 2) { /* * Source and destination not aligned, pipeline it. * This is mostly a win for big blits but no loss for @@ -1452,7 +1452,7 @@ static void Blit16to16SurfaceAlpha128(SDL_BlitInfo *info, Uint16 mask) int w = width; /* handle odd destination */ - if((unsigned long)dstp & 2) { + if((uintptr_t)dstp & 2) { Uint16 d = *dstp, s = *srcp; *dstp = BLEND16_50(d, s, mask); dstp++; @@ -1499,7 +1499,7 @@ static void Blit16to16SurfaceAlpha128(SDL_BlitInfo *info, Uint16 mask) int w = width; /* first odd pixel? */ - if((unsigned long)srcp & 2) { + if((uintptr_t)srcp & 2) { Uint16 d = *dstp, s = *srcp; *dstp = BLEND16_50(d, s, mask); srcp++; diff --git a/src/video/SDL_surface.c b/src/video/SDL_surface.c index 578401ac7..7ef8565cb 100644 --- a/src/video/SDL_surface.c +++ b/src/video/SDL_surface.c @@ -604,7 +604,7 @@ int SDL_FillRect(SDL_Surface *dst, SDL_Rect *dstrect, Uint32 color) dstrect->x*dst->format->BytesPerPixel; if ( dst->format->palette || (color == 0) ) { x = dstrect->w*dst->format->BytesPerPixel; - if ( !color && !((long)row&3) && !(x&3) && !(dst->pitch&3) ) { + if ( !color && !((uintptr_t)row&3) && !(x&3) && !(dst->pitch&3) ) { int n = x >> 2; for ( y=dstrect->h; y; --y ) { SDL_memset4(row, 0, n); @@ -690,7 +690,7 @@ int SDL_FillRect(SDL_Surface *dst, SDL_Rect *dstrect, Uint32 color) Uint16 c = (Uint16)color; Uint32 cc = (Uint32)c << 16 | c; int n = dstrect->w; - if((unsigned long)pixels & 3) { + if((uintptr_t)pixels & 3) { *pixels++ = c; n--; } diff --git a/src/video/wincommon/SDL_sysevents.c b/src/video/wincommon/SDL_sysevents.c index 1f7b32995..b26e48867 100644 --- a/src/video/wincommon/SDL_sysevents.c +++ b/src/video/wincommon/SDL_sysevents.c @@ -191,7 +191,7 @@ static BOOL WINAPI WIN_TrackMouseEvent(TRACKMOUSEEVENT *ptme) { if ( ptme->dwFlags == TME_LEAVE ) { return SetTimer(ptme->hwndTrack, ptme->dwFlags, 100, - (TIMERPROC)TrackMouseTimerProc); + (TIMERPROC)TrackMouseTimerProc) != 0; } return FALSE; } @@ -247,7 +247,7 @@ static void WIN_GetKeyboardState(void) /* The main Win32 event handler DJM: This is no longer static as (DX5/DIB)_CreateWindow needs it */ -LONG CALLBACK WinMessage(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) +LRESULT CALLBACK WinMessage(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { SDL_VideoDevice *this = current_video; static int mouse_pressed = 0; diff --git a/src/video/wincommon/SDL_sysmouse.c b/src/video/wincommon/SDL_sysmouse.c index f7138eda0..0f7c8f395 100644 --- a/src/video/wincommon/SDL_sysmouse.c +++ b/src/video/wincommon/SDL_sysmouse.c @@ -172,7 +172,7 @@ WMcursor *WIN_CreateWMCursor(_THIS, /* Create the cursor */ cursor->curs = CreateCursor( - (HINSTANCE)GetWindowLong(SDL_Window, GWL_HINSTANCE), + (HINSTANCE)GetWindowLongPtr(SDL_Window, GWL_HINSTANCE), hot_x, hot_y, allowed_x, allowed_y, cursor->ands, cursor->xors); if ( cursor->curs == NULL ) { diff --git a/src/video/wincommon/SDL_syswm.c b/src/video/wincommon/SDL_syswm.c index 85046b12a..73b27bc0b 100644 --- a/src/video/wincommon/SDL_syswm.c +++ b/src/video/wincommon/SDL_syswm.c @@ -220,7 +220,7 @@ void WIN_SetWMIcon(_THIS, SDL_Surface *icon, Uint8 *mask) if ( screen_icn == NULL ) { SDL_SetError("Couldn't create Win32 icon handle"); } else { - SetClassLong(SDL_Window, GCL_HICON, (LONG)screen_icn); + SetClassLongPtr(SDL_Window, GCL_HICON, (LONG_PTR)screen_icn); } SDL_stack_free(icon_win32); #endif /* DISABLE_ICON_SUPPORT */ diff --git a/src/video/windib/SDL_dibevents.c b/src/video/windib/SDL_dibevents.c index 25986495c..177d4993c 100644 --- a/src/video/windib/SDL_dibevents.c +++ b/src/video/windib/SDL_dibevents.c @@ -84,8 +84,7 @@ WPARAM rotateKey(WPARAM key,SDL_ScreenOrientation direction) /* The main Win32 event handler */ -LONG - DIB_HandleMessage(_THIS, HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) +LRESULT DIB_HandleMessage(_THIS, HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { extern int posted; @@ -417,7 +416,7 @@ int DIB_CreateWindow(_THIS) SDL_Window = (HWND)wcstol(windowid_t, NULL, 0); SDL_free(windowid_t); #else - SDL_Window = (HWND)SDL_strtol(windowid, NULL, 0); + SDL_Window = (HWND)SDL_strtoull(windowid, NULL, 0); #endif if ( SDL_Window == NULL ) { SDL_SetError("Couldn't get user specified window"); @@ -427,8 +426,8 @@ int DIB_CreateWindow(_THIS) /* DJM: we want all event's for the user specified window to be handled by SDL. */ - userWindowProc = (WNDPROCTYPE)GetWindowLong(SDL_Window, GWL_WNDPROC); - SetWindowLong(SDL_Window, GWL_WNDPROC, (LONG)WinMessage); + userWindowProc = (WNDPROCTYPE)GetWindowLongPtr(SDL_Window, GWL_WNDPROC); + SetWindowLongPtr(SDL_Window, GWL_WNDPROC, (LONG_PTR)WinMessage); } else { SDL_Window = CreateWindow(SDL_Appname, SDL_Appname, (WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX), @@ -445,7 +444,7 @@ int DIB_CreateWindow(_THIS) void DIB_DestroyWindow(_THIS) { if ( SDL_windowid ) { - SetWindowLong(SDL_Window, GWL_WNDPROC, (LONG)userWindowProc); + SetWindowLongPtr(SDL_Window, GWL_WNDPROC, (LONG_PTR)userWindowProc); } else { DestroyWindow(SDL_Window); } diff --git a/src/video/windx5/SDL_dx5events.c b/src/video/windx5/SDL_dx5events.c index 659577014..bebc45147 100644 --- a/src/video/windx5/SDL_dx5events.c +++ b/src/video/windx5/SDL_dx5events.c @@ -476,8 +476,7 @@ static void handle_mouse(const int numevents, DIDEVICEOBJECTDATA *ptrbuf) } /* The main Win32 event handler */ -LONG - DX5_HandleMessage(_THIS, HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) +LRESULT DX5_HandleMessage(_THIS, HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { #ifdef WM_ACTIVATEAPP @@ -503,7 +502,7 @@ LONG #ifdef WM_DISPLAYCHANGE case WM_DISPLAYCHANGE: { - WORD BitsPerPixel; + WPARAM BitsPerPixel; WORD SizeX, SizeY; /* Ack! The display changed size and/or depth! */ @@ -866,7 +865,7 @@ int DX5_CreateWindow(_THIS) SDL_windowid = (windowid != NULL); if ( SDL_windowid ) { - SDL_Window = (HWND)SDL_strtol(windowid, NULL, 0); + SDL_Window = (HWND)SDL_strtoull(windowid, NULL, 0); if ( SDL_Window == NULL ) { SDL_SetError("Couldn't get user specified window"); return(-1); @@ -875,8 +874,8 @@ int DX5_CreateWindow(_THIS) /* DJM: we want all event's for the user specified window to be handled by SDL. */ - userWindowProc = (WNDPROCTYPE)GetWindowLong(SDL_Window, GWL_WNDPROC); - SetWindowLong(SDL_Window, GWL_WNDPROC, (LONG)WinMessage); + userWindowProc = (WNDPROCTYPE)GetWindowLongPtr(SDL_Window, GWL_WNDPROC); + SetWindowLongPtr(SDL_Window, GWL_WNDPROC, (LONG_PTR)WinMessage); } else { SDL_Window = CreateWindow(SDL_Appname, SDL_Appname, (WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX), @@ -904,7 +903,7 @@ void DX5_DestroyWindow(_THIS) /* Destroy our window */ if ( SDL_windowid ) { - SetWindowLong(SDL_Window, GWL_WNDPROC, (LONG)userWindowProc); + SetWindowLongPtr(SDL_Window, GWL_WNDPROC, (LONG_PTR)userWindowProc); } else { DestroyWindow(SDL_Window); }