diff --git a/cl_dll/inputw32.cpp b/cl_dll/inputw32.cpp index 3797f249..3ad3f7c3 100644 --- a/cl_dll/inputw32.cpp +++ b/cl_dll/inputw32.cpp @@ -156,6 +156,7 @@ DWORD s_hMouseThreadId = 0; HANDLE s_hMouseThread = 0; HANDLE s_hMouseQuitEvent = 0; HANDLE s_hMouseDoneQuitEvent = 0; +SDL_bool mouseRelative = SDL_TRUE; #endif /* @@ -235,6 +236,21 @@ void DLLEXPORT IN_ActivateMouse (void) #endif mouseactive = 1; } + +#ifdef _WIN32 + if (!m_bRawInput) + { + SDL_SetRelativeMouseMode(SDL_FALSE); + mouseRelative = SDL_FALSE; + } + else + { + mouseRelative = SDL_TRUE; + SDL_SetRelativeMouseMode(SDL_TRUE); + } +#else + SDL_SetRelativeMouseMode(SDL_TRUE); +#endif } @@ -255,6 +271,15 @@ void DLLEXPORT IN_DeactivateMouse (void) mouseactive = 0; } + +#ifdef _WIN32 + if (m_bRawInput) + { + mouseRelative = SDL_FALSE; + } + +#endif + SDL_SetRelativeMouseMode(SDL_FALSE); } /* @@ -572,6 +597,19 @@ void IN_MouseMove ( float frametime, usercmd_t *cmd) gEngfuncs.SetViewAngles( (float *)viewangles ); +#ifdef _WIN32 + if (!m_bRawInput && mouseRelative) + { + SDL_SetRelativeMouseMode(SDL_FALSE); + mouseRelative = SDL_FALSE; + } + else if (m_bRawInput && !mouseRelative) + { + SDL_SetRelativeMouseMode(SDL_TRUE); + mouseRelative = SDL_TRUE; + } +#endif + /* //#define TRACE_TEST #if defined( TRACE_TEST )