Our minimum Windows version is Windows 2000, so it's okay to directly call InitializeCriticalSectionAndSpinCount()..

This commit is contained in:
Sam Lantinga 2011-02-17 09:26:15 -08:00
parent 58d7fc4732
commit baf813b8c1
3 changed files with 6 additions and 25 deletions

4
src/core/windows/SDL_windows.h Normal file → Executable file
View file

@ -30,8 +30,8 @@
#ifndef UNICODE
#define UNICODE 1
#endif
#undef WINVER
#define WINVER 0x500 /* Need 0x410 for AlphaBlend() and 0x500 for EnumDisplayDevices() */
#undef _WIN32_WINNT
#define _WIN32_WINNT 0x500 /* Need 0x410 for AlphaBlend() and 0x500 for EnumDisplayDevices() */
#include <windows.h>

20
src/thread/windows/SDL_sysmutex.c Normal file → Executable file
View file

@ -38,29 +38,17 @@ SDL_mutex *
SDL_CreateMutex(void)
{
SDL_mutex *mutex;
static DWORD (WINAPI*pf_SetCriticalSectionSpinCount)(LPCRITICAL_SECTION, DWORD) = NULL;
static HMODULE kernel32 = NULL;
/* One time logic - detect WinNT */
if(kernel32 == NULL) {
kernel32 = GetModuleHandleA("kernel32.dll");
if(kernel32) {
/* Attempt to resolve symbol -- Win9x gets NULL */
pf_SetCriticalSectionSpinCount = (DWORD (WINAPI*)(LPCRITICAL_SECTION, DWORD))GetProcAddress(kernel32, "SetCriticalSectionSpinCount");
}
else
kernel32 = (HMODULE)0x01; /* don't try to init again */
}
/* Allocate mutex memory */
mutex = (SDL_mutex *) SDL_malloc(sizeof(*mutex));
if (mutex) {
/* Initialize */
#ifdef _WIN32_WCE
InitializeCriticalSection(&mutex->cs);
#else
/* On SMP systems, a non-zero spin count generally helps performance */
if(pf_SetCriticalSectionSpinCount) pf_SetCriticalSectionSpinCount(&mutex->cs, 2000);
InitializeCriticalSectionAndSpinCount(&mutex->cs, 2000);
#endif
} else {
SDL_OutOfMemory();
}

7
src/video/windows/SDL_windowsmouse.c Normal file → Executable file
View file

@ -20,13 +20,6 @@
slouken@libsdl.org
*/
/* we need to define it, so that raw input is included*/
#if (_WIN32_WINNT < 0x0501)
#undef _WIN32_WINNT
#define _WIN32_WINNT 0x0501
#endif
#include "SDL_config.h"
#include "SDL_windowsvideo.h"