| @@ -6,13 +6,16 @@ AC_DEFUN([LOL_CHECK_SDL], | |||
| dnl Find which version of SDL to use (always required on Linux or Win32) | |||
| dnl | |||
| dnl Defined C/C++ macros: | |||
| dnl USE_SDL -- whether SDL or SDL2 were found at all | |||
| dnl USE_SDL_IMAGE -- whether SDL_image was found | |||
| dnl USE_SDL_MIXER -- whether SDL_mixer was found | |||
| dnl HAVE_SDL_SDL_H -- whether to include <SDL/SDL.h> | |||
| dnl USE_SDL -- whether SDL v2 was found | |||
| dnl USE_OLD_SDL -- whether SDL v1 was found | |||
| dnl USE_SDL_IMAGE -- whether SDL_image (v1 or v2) was found | |||
| dnl USE_SDL_MIXER -- whether SDL_mixer (v1 or v2) was found | |||
| dnl HAVE_SDL_H -- whether to include <SDL.h> | |||
| dnl HAVE_SDL_SDL_H -- whether to include <SDL/SDL.h> | |||
| dnl HAVE_SDL2_SDL_H -- whether to include <SDL2/SDL.h> | |||
| dnl Generated automake conditionals: | |||
| dnl USE_SDL -- whether SDL or SDL2 were found at all | |||
| dnl USE_SDL -- whether SDL v2 was found | |||
| dnl USE_OLD_SDL -- whether SDL v1 was found | |||
| dnl USE_SDL_IMAGE -- whether SDL_image was found | |||
| dnl USE_SDL_MIXER -- whether SDL_mixer was found | |||
| dnl Generated shell variables: | |||
| @@ -20,15 +23,16 @@ dnl SDL_CFLAGS -- flags for SDL compilation | |||
| dnl SDL_LIBS -- flags for SDL linking | |||
| ac_cv_my_have_sdl="no" | |||
| ac_cv_my_have_sdl2="no" | |||
| ac_cv_my_have_old_sdl="no" | |||
| ac_cv_my_have_sdl_image="no" | |||
| ac_cv_my_have_sdl_mixer="no" | |||
| dnl First, try the proper pkg-config check for SDL2 | |||
| if test "x${ac_cv_my_have_sdl}" = xno; then | |||
| PKG_CHECK_MODULES(SDL2, sdl2, | |||
| [ac_cv_my_have_sdl="yes" | |||
| ac_cv_my_have_sdl2="yes" | |||
| PKG_CHECK_MODULES(SDL2MIXER, SDL2_mixer, | |||
| [ac_cv_my_have_sdl_mixer="yes" | |||
| AC_DEFINE(HAVE_SDL_MIXER_H, 1, Define to 1 to use SDL_mixer.h)], | |||
| @@ -43,10 +47,45 @@ if test "x${ac_cv_my_have_sdl}" = xno; then | |||
| [:]) | |||
| fi | |||
| dnl Then, try the proper pkg-config check for SDL 1.x | |||
| dnl Maybe all this has failed, try direct inclusion instead | |||
| if test "x${ac_cv_my_have_sdl}" = xno; then | |||
| save_CPPFLAGS="${CPPFLAGS}" | |||
| save_LIBS="${LIBS}" | |||
| CPPFLAGS="${CPPFLAGS} ${SDL_CFLAGS}" | |||
| LIBS="${LIBS} ${SDL_LIBS}" | |||
| AC_CHECK_HEADERS(SDL.h SDL/SDL.h SDL2/SDL.h, [ac_cv_my_have_sdl="yes"]) | |||
| if test "x${ac_cv_my_have_sdl}" != xno; then | |||
| AC_CHECK_HEADERS(SDL_mixer.h SDL/SDL_mixer.h SDL2/SDL_mixer.h, | |||
| [ac_cv_my_have_sdl_mixer="yes"]) | |||
| AC_CHECK_HEADERS(SDL_image.h SDL/SDL_image.h SDL2/SDL_image.h, | |||
| [ac_cv_my_have_sdl_image="yes"]) | |||
| AC_CHECK_LIB(SDL2, main, | |||
| [SDL_LIBS="${SDL_LIBS} -lSDL2"], | |||
| [ac_cv_my_have_sdl="no"]) | |||
| AC_CHECK_LIB(SDL2main, main, | |||
| [SDL_LIBS="${SDL_LIBS} -lSDL2main -lSDL2"]) | |||
| AC_CHECK_LIB(SDL2_mixer, main, | |||
| [SDLMIXER_LIBS="${SDLMIXER_LIBS} -lSDL2_mixer"], | |||
| [ac_cv_my_have_sdl_mixer="no"]) | |||
| AC_CHECK_LIB(SDL2_image, main, | |||
| [SDLIMAGE_LIBS="${SDLIMAGE_LIBS} -lSDL2_image"], | |||
| [ac_cv_my_have_sdl_image="no"]) | |||
| fi | |||
| SDL_CFLAGS="${SDL_CFLAGS} ${SDLMIXER_CFLAGS} ${SDLIMAGE_CFLAGS}" | |||
| SDL_LIBS="${SDL_LIBS} ${SDLMIXER_LIBS} ${SDLIMAGE_LIBS}" | |||
| CPPFLAGS="${save_CPPFLAGS}" | |||
| LIBS="${save_LIBS}" | |||
| fi | |||
| dnl Then, try the proper pkg-config check for SDL 1.x | |||
| if test "x${ac_cv_my_have_sdl}" = xno \ | |||
| -a "x${ac_cv_my_have_old_sdl}" = xno; then | |||
| PKG_CHECK_MODULES(SDL, sdl, | |||
| [ac_cv_my_have_sdl="yes" | |||
| [ac_cv_my_have_old_sdl="yes" | |||
| PKG_CHECK_MODULES(SDLMIXER, SDL_mixer, | |||
| [ac_cv_my_have_sdl_mixer="yes" | |||
| AC_DEFINE(HAVE_SDL_MIXER_H, 1, Define to 1 to use SDL_mixer.h)], | |||
| @@ -61,51 +100,47 @@ if test "x${ac_cv_my_have_sdl}" = xno; then | |||
| [:]) | |||
| fi | |||
| dnl Then the old sdl-config method | |||
| if test "x${cross_compiling}" != xyes -a "x${ac_cv_my_have_sdl}" = xno; then | |||
| if test "x${ac_cv_my_have_sdl}" = xno \ | |||
| -a "x${ac_cv_my_have_old_sdl}" = xno \ | |||
| -a "x${cross_compiling}" != xyes; then | |||
| AC_PATH_PROG(SDL_CONFIG, sdl-config, no) | |||
| if test "${SDL_CONFIG}" != "no" && "${SDL_CONFIG}" --version >/dev/null; then | |||
| ac_cv_my_have_sdl="yes" | |||
| ac_cv_my_have_old_sdl="yes" | |||
| SDL_CFLAGS="${SDL_CFLAGS} `${SDL_CONFIG} --cflags`" | |||
| SDL_LIBS="${SDL_LIBS} `${SDL_CONFIG} --libs`" | |||
| AC_DEFINE(HAVE_SDL_H, 1, Define to 1 to use SDL.h) | |||
| fi | |||
| fi | |||
| dnl Maybe all this has failed, try direct inclusion instead | |||
| if test "x${ac_cv_my_have_sdl}" = xno; then | |||
| dnl Finally, try direct inclusion | |||
| if test "x${ac_cv_my_have_sdl}" = xno \ | |||
| -a "x${ac_cv_my_have_old_sdl}" = xno; then | |||
| save_CPPFLAGS="${CPPFLAGS}" | |||
| save_LIBS="${LIBS}" | |||
| CPPFLAGS="${CPPFLAGS} ${SDL_CFLAGS}" | |||
| LIBS="${LIBS} ${SDL_LIBS}" | |||
| AC_CHECK_HEADERS(SDL.h SDL/SDL.h, [ac_cv_my_have_sdl="yes"]) | |||
| if test "x${ac_cv_my_have_sdl}" != xno; then | |||
| AC_CHECK_HEADERS(SDL_mixer.h SDL/SDL_mixer.h, [ac_cv_my_have_sdl_mixer="yes"]) | |||
| AC_CHECK_HEADERS(SDL_image.h SDL/SDL_image.h, [ac_cv_my_have_sdl_image="yes"]) | |||
| AC_CHECK_HEADERS(SDL.h SDL/SDL.h, [ac_cv_my_have_old_sdl="yes"]) | |||
| if test "x${ac_cv_my_have_old_sdl}" != xno; then | |||
| AC_CHECK_HEADERS(SDL_mixer.h SDL/SDL_mixer.h, | |||
| [ac_cv_my_have_sdl_mixer="yes"]) | |||
| AC_CHECK_HEADERS(SDL_image.h SDL/SDL_image.h, | |||
| [ac_cv_my_have_sdl_image="yes"]) | |||
| AC_CHECK_LIB(SDL, main, | |||
| [SDL_LIBS="${SDL_LIBS} -lSDL"], | |||
| [AC_CHECK_LIB(SDL2, main, | |||
| [SDL_LIBS="${SDL_LIBS} -lSDL2" | |||
| ac_cv_my_have_sdl2="yes"], | |||
| [ac_cv_my_have_sdl="no"])]) | |||
| [ac_cv_my_have_old_sdl="no"]) | |||
| AC_CHECK_LIB(SDLmain, main, | |||
| [SDL_LIBS="${SDL_LIBS} -lSDLmain -lSDL"]) | |||
| AC_CHECK_LIB(SDL2main, main, | |||
| [SDL_LIBS="${SDL_LIBS} -lSDL2main -lSDL2"]) | |||
| AC_CHECK_LIB(SDL_mixer, main, | |||
| [SDLMIXER_LIBS="${SDLMIXER_LIBS} -lSDL_mixer"], | |||
| [AC_CHECK_LIB(SDL2_mixer, main, | |||
| [SDLMIXER_LIBS="${SDLMIXER_LIBS} -lSDL2_mixer"], | |||
| [ac_cv_my_have_sdl_mixer="no"])]) | |||
| [ac_cv_my_have_sdl_mixer="no"]) | |||
| AC_CHECK_LIB(SDL_image, main, | |||
| [SDLIMAGE_LIBS="${SDLIMAGE_LIBS} -lSDL_image"], | |||
| [AC_CHECK_LIB(SDL2_image, main, | |||
| [SDLIMAGE_LIBS="${SDLIMAGE_LIBS} -lSDL2_image"], | |||
| [ac_cv_my_have_sdl_image="no"])]) | |||
| [ac_cv_my_have_sdl_image="no"]) | |||
| fi | |||
| SDL_CFLAGS="${SDL_CFLAGS} ${SDLMIXER_CFLAGS} ${SDLIMAGE_CFLAGS}" | |||
| SDL_LIBS="${SDL_LIBS} ${SDLMIXER_LIBS} ${SDLIMAGE_LIBS}" | |||
| @@ -113,18 +148,16 @@ if test "x${ac_cv_my_have_sdl}" = xno; then | |||
| LIBS="${save_LIBS}" | |||
| fi | |||
| dnl Convert all this into conditionals | |||
| if test "x${ac_cv_my_have_sdl}" = xno; then | |||
| AC_MSG_WARN([SDL not found]) | |||
| AC_MSG_WARN([SDL v2 not found]) | |||
| else | |||
| AC_DEFINE(USE_SDL, 1, Define to 1 to use SDL) | |||
| fi | |||
| AM_CONDITIONAL(USE_SDL, test "x${ac_cv_my_have_sdl}" = xyes) | |||
| if test "x${ac_cv_my_have_sdl2}" != xno; then | |||
| AC_DEFINE(USE_SDL2, 1, Define to 1 to use SDL) | |||
| fi | |||
| AM_CONDITIONAL(USE_SDL2, test "x${ac_cv_my_have_sdl2}" = xyes) | |||
| if test "x${ac_cv_my_have_sdl_mixer}" = xno; then | |||
| AC_MSG_WARN([SDL_mixer not found]) | |||
| else | |||
| @@ -139,6 +172,10 @@ else | |||
| fi | |||
| AM_CONDITIONAL(USE_SDL_IMAGE, test "x${ac_cv_my_have_sdl_image}" = xyes) | |||
| if test "x${ac_cv_my_have_old_sdl}" != xno; then | |||
| AC_DEFINE(USE_OLD_SDL, 1, Define to 1 to use SDL) | |||
| fi | |||
| AM_CONDITIONAL(USE_OLD_SDL, test "x${ac_cv_my_have_old_sdl}" = xyes) | |||
| ])# LOL_CHECK_SDL | |||
| @@ -17,7 +17,7 @@ | |||
| <SdlLibs Condition="'$(Platform)'=='x64'">$(SdlDir)\lib\x86_64-msvc;$(SdlImageDir)\lib\x86_64-msvc;$(SdlMixerDir)\lib\x86_64-msvc</SdlLibs> | |||
| <SdlDeps Condition="'$(Platform)'=='Win32'">SDL2.lib;SDL2main.lib;SDL2_image.lib;SDL2_mixer.lib</SdlDeps> | |||
| <SdlDeps Condition="'$(Platform)'=='x64'">SDL2.lib;SDL2main.lib;SDL2_image.lib;SDL2_mixer.lib</SdlDeps> | |||
| <Win32Defines>HAVE_SDL_H;USE_SDL;USE_SDL2;$(Win32Defines)</Win32Defines> | |||
| <Win32Defines>HAVE_SDL_H;USE_SDL;$(Win32Defines)</Win32Defines> | |||
| <Win32Defines>USE_SDL_MIXER;USE_SDL_IMAGE;$(Win32Defines)</Win32Defines> | |||
| <!-- GTK+ & GtkGl --> | |||
| @@ -24,7 +24,7 @@ | |||
| # include "platform/nacl/nacl-app.h" | |||
| #elif __ANDROID__ | |||
| # include "platform/android/androidapp.h" | |||
| #elif USE_SDL | |||
| #elif USE_SDL || USE_OLD_SDL | |||
| # include "platform/sdl/sdlapp.h" | |||
| # include "platform/sdl/sdlinput.h" | |||
| #elif HAVE_GLES_2X | |||
| @@ -50,7 +50,7 @@ class ApplicationData | |||
| NaClApp app; | |||
| #elif __ANDROID__ | |||
| AndroidApp app; | |||
| #elif USE_SDL | |||
| #elif USE_SDL || USE_OLD_SDL | |||
| SdlApp app; | |||
| #elif HAVE_GLES_2X | |||
| /* FIXME: this macro is only deactivated if we include "lolgl.h" */ | |||
| @@ -22,8 +22,10 @@ | |||
| # include <EGL/eglext.h> | |||
| #endif | |||
| #if defined USE_SDL | |||
| # if defined HAVE_SDL_SDL_H | |||
| #if USE_SDL || USE_OLD_SDL | |||
| # if HAVE_SDL2_SDL_H | |||
| # include <SDL2/SDL.h> | |||
| # elif HAVE_SDL_SDL_H | |||
| # include <SDL/SDL.h> | |||
| # else | |||
| # include <SDL.h> | |||
| @@ -32,7 +34,7 @@ | |||
| #include "lolgl.h" | |||
| #include "eglapp.h" | |||
| #if defined USE_SDL | |||
| #if USE_SDL || USE_OLD_SDL | |||
| # include "platform/sdl/sdlinput.h" | |||
| #endif | |||
| @@ -247,7 +249,7 @@ EglApp::EglApp(char const *title, ivec2 res, float fps) : | |||
| data->screen_size = uvec2(gwa.width, gwa.height); | |||
| # endif | |||
| # if defined USE_SDL | |||
| # if USE_SDL || USE_OLD_SDL | |||
| new SdlInput(res.x, res.y, data->screen_size.x, data->screen_size.y); | |||
| # endif | |||
| @@ -105,7 +105,7 @@ Renderer::Renderer(ivec2 size) | |||
| d3dpp.BackBufferFormat = D3DFMT_X8R8G8B8; | |||
| d3dpp.BackBufferCount = 1; | |||
| d3dpp.hDeviceWindow = g_hwnd; | |||
| # if defined USE_SDL | |||
| # if USE_SDL || USE_OLD_SDL | |||
| d3dpp.Windowed = TRUE; | |||
| # endif | |||
| d3dpp.EnableAutoDepthStencil = TRUE; | |||
| @@ -28,7 +28,7 @@ | |||
| #endif | |||
| /* If using SDL on Windows or OS X, let it override main() */ | |||
| #if USE_SDL && (_WIN32 || __APPLE__) | |||
| #if (USE_SDL || USE_OLD_SDL) && (_WIN32 || __APPLE__) | |||
| # include <SDL_main.h> | |||
| #endif | |||
| @@ -23,7 +23,7 @@ | |||
| #endif | |||
| /* If using SDL on Windows or OS X, let it override main() */ | |||
| #if USE_SDL && (_WIN32 || __APPLE__) | |||
| #if (USE_SDL || USE_OLD_SDL) && (_WIN32 || __APPLE__) | |||
| # include <SDL_main.h> | |||
| #endif | |||
| @@ -10,8 +10,10 @@ | |||
| #include <lol/engine-internal.h> | |||
| #if USE_SDL | |||
| # if HAVE_SDL_SDL_H | |||
| #if USE_SDL || USE_OLD_SDL | |||
| # if HAVE_SDL2_SDL_H | |||
| # include <SDL2/SDL.h> | |||
| # elif HAVE_SDL_SDL_H | |||
| # include <SDL/SDL.h> | |||
| # else | |||
| # include <SDL.h> | |||
| @@ -29,7 +31,7 @@ | |||
| # include "platform/d3d9/d3d9input.h" | |||
| #endif | |||
| #if USE_SDL && USE_D3D9 | |||
| #if (USE_SDL || USE_OLD_SDL) && USE_D3D9 | |||
| HWND g_hwnd = nullptr; | |||
| #endif | |||
| @@ -45,10 +47,10 @@ class SdlAppData | |||
| friend class SdlApp; | |||
| private: | |||
| #if USE_SDL2 | |||
| #if USE_SDL | |||
| SDL_Window *m_window; | |||
| SDL_GLContext m_glcontext; | |||
| #else | |||
| #elif USE_OLD_SDL | |||
| SDL_Surface *m_window; | |||
| #endif | |||
| }; | |||
| @@ -60,7 +62,7 @@ private: | |||
| SdlApp::SdlApp(char const *title, ivec2 res, float fps) : | |||
| data(new SdlAppData()) | |||
| { | |||
| #if USE_SDL | |||
| #if USE_SDL || USE_OLD_SDL | |||
| ivec2 window_size = res; | |||
| ivec2 screen_size = res; | |||
| @@ -71,7 +73,7 @@ SdlApp::SdlApp(char const *title, ivec2 res, float fps) : | |||
| exit(EXIT_FAILURE); | |||
| } | |||
| #if USE_SDL2 | |||
| #if USE_SDL | |||
| data->m_window = SDL_CreateWindow(title, SDL_WINDOWPOS_UNDEFINED, | |||
| SDL_WINDOWPOS_UNDEFINED, | |||
| window_size.x, window_size.y, | |||
| @@ -136,14 +138,14 @@ SdlApp::SdlApp(char const *title, ivec2 res, float fps) : | |||
| void SdlApp::ShowPointer(bool show) | |||
| { | |||
| #if defined USE_SDL | |||
| #if USE_SDL || USE_OLD_SDL | |||
| SDL_ShowCursor(show ? 1 : 0); | |||
| #endif | |||
| } | |||
| void SdlApp::Tick() | |||
| { | |||
| #if defined USE_SDL && defined USE_D3D9 | |||
| #if (USE_SDL || USE_OLD_SDL) && defined USE_D3D9 | |||
| IDirect3DDevice9 *d3d_dev = (IDirect3DDevice9 *)g_renderer->GetDevice(); | |||
| HRESULT hr; | |||
| hr = d3d_dev->BeginScene(); | |||
| @@ -154,16 +156,16 @@ void SdlApp::Tick() | |||
| /* Tick the renderer, show the frame and clamp to desired framerate. */ | |||
| Ticker::TickDraw(); | |||
| #if USE_SDL2 | |||
| #if USE_SDL | |||
| SDL_GL_SwapWindow(data->m_window); | |||
| #elif USE_SDL && USE_D3D9 | |||
| #elif USE_OLD_SDL && USE_D3D9 | |||
| hr = d3d_dev->EndScene(); | |||
| if (FAILED(hr)) | |||
| Abort(); | |||
| hr = d3d_dev->Present(nullptr, nullptr, nullptr, nullptr); | |||
| if (FAILED(hr)) | |||
| Abort(); | |||
| #elif USE_SDL | |||
| #elif USE_OLD_SDL | |||
| SDL_GL_SwapBuffers(); | |||
| #endif | |||
| } | |||
| @@ -173,14 +175,13 @@ SdlApp::~SdlApp() | |||
| #if USE_SDL | |||
| if (data->m_window) | |||
| { | |||
| # if USE_SDL2 | |||
| SDL_GL_DeleteContext(data->m_glcontext); | |||
| SDL_DestroyWindow(data->m_window); | |||
| # else | |||
| SDL_DestroySurface(data->m_window); | |||
| # endif | |||
| } | |||
| SDL_Quit(); | |||
| #elif USE_OLD_SDL | |||
| if (data->m_window) | |||
| SDL_DestroySurface(data->m_window); | |||
| SDL_Quit(); | |||
| #endif | |||
| @@ -10,8 +10,10 @@ | |||
| #include <lol/engine-internal.h> | |||
| #if USE_SDL | |||
| # if HAVE_SDL_SDL_H | |||
| #if USE_SDL || USE_OLD_SDL | |||
| # if HAVE_SDL2_SDL_H | |||
| # include <SDL2/SDL.h> | |||
| # elif HAVE_SDL_SDL_H | |||
| # include <SDL/SDL.h> | |||
| # else | |||
| # include <SDL.h> | |||
| @@ -48,7 +50,7 @@ private: | |||
| static ivec2 GetMousePos(); | |||
| static void SetMousePos(ivec2 position); | |||
| #if USE_SDL | |||
| #if USE_SDL || USE_OLD_SDL | |||
| SdlInputData(int app_w, int app_h, int screen_w, int screen_h) : | |||
| m_prevmouse(ivec2::zero), | |||
| m_app(vec2((float)app_w, (float)app_h)), | |||
| @@ -72,16 +74,16 @@ private: | |||
| */ | |||
| SdlInput::SdlInput(int app_w, int app_h, int screen_w, int screen_h) | |||
| #if USE_SDL | |||
| #if USE_SDL || USE_OLD_SDL | |||
| : m_data(new SdlInputData(app_w, app_h, screen_w, screen_h)) | |||
| #endif //USE_SDL | |||
| { | |||
| #if USE_SDL && !USE_SDL2 | |||
| #if USE_OLD_SDL | |||
| /* Enable Unicode translation of keyboard events */ | |||
| SDL_EnableUNICODE(1); | |||
| #endif | |||
| #if USE_SDL | |||
| #if USE_SDL || USE_OLD_SDL | |||
| SDL_Init(SDL_INIT_TIMER | SDL_INIT_JOYSTICK); | |||
| m_data->m_keyboard = InputDeviceInternal::CreateStandardKeyboard(); | |||
| @@ -104,9 +106,9 @@ SdlInput::SdlInput(int app_w, int app_h, int screen_w, int screen_h) | |||
| * - HDAPS, it's not a real joystick. | |||
| * - X360 controllers, Xinput handles them better since | |||
| * it won't think there is only one trigger axis. */ | |||
| # if USE_SDL2 | |||
| # if USE_SDL | |||
| char const *name = SDL_JoystickName(sdlstick); | |||
| # else | |||
| # elif USE_OLD_SDL | |||
| char const *name = SDL_JoystickName(i); | |||
| # endif | |||
| if (strstr(name, "HDAPS") | |||
| @@ -137,7 +139,7 @@ SdlInput::SdlInput(int app_w, int app_h, int screen_w, int screen_h) | |||
| SdlInput::~SdlInput() | |||
| { | |||
| #if USE_SDL && !EMSCRIPTEN | |||
| #if (USE_SDL || USE_OLD_SDL) && !EMSCRIPTEN | |||
| /* Unregister all the joysticks we added */ | |||
| while (m_data->m_joysticks.Count()) | |||
| { | |||
| @@ -169,7 +171,7 @@ void SdlInput::TickDraw(float seconds, Scene &scene) | |||
| void SdlInputData::Tick(float seconds) | |||
| { | |||
| #if USE_SDL | |||
| #if USE_SDL || USE_OLD_SDL | |||
| /* Pump all joystick events because no event is coming to us. */ | |||
| # if SDL_FORCE_POLL_JOYSTICK && !EMSCRIPTEN | |||
| SDL_JoystickUpdate(); | |||
| @@ -202,7 +204,7 @@ void SdlInputData::Tick(float seconds) | |||
| case SDL_MOUSEBUTTONDOWN: | |||
| case SDL_MOUSEBUTTONUP: | |||
| { | |||
| # if !USE_SDL2 | |||
| # if USE_OLD_SDL | |||
| if (event.button.button != SDL_BUTTON_WHEELUP && event.button.button != SDL_BUTTON_WHEELDOWN) | |||
| m_mouse->SetKey(event.button.button - 1, event.type == SDL_MOUSEBUTTONDOWN); | |||
| else | |||
| @@ -230,9 +232,9 @@ void SdlInputData::Tick(float seconds) | |||
| if (InputDeviceInternal::GetMouseCapture() != m_mousecapture) | |||
| { | |||
| m_mousecapture = InputDeviceInternal::GetMouseCapture(); | |||
| # if USE_SDL2 | |||
| # if USE_SDL | |||
| SDL_SetRelativeMouseMode(m_mousecapture ? SDL_TRUE : SDL_FALSE); | |||
| # else | |||
| # elif USE_OLD_SDL | |||
| SDL_WM_GrabInput(m_mousecapture ? SDL_GRAB_ON : SDL_GRAB_OFF); | |||
| # endif | |||
| mouse = (ivec2)m_app / 2; | |||
| @@ -258,13 +260,13 @@ void SdlInputData::Tick(float seconds) | |||
| //Mouse is focused, Validate the InScreen Key | |||
| //Hardcoded 3, not very nice. | |||
| # if !EMSCRIPTEN && !USE_SDL2 | |||
| # if !EMSCRIPTEN && USE_OLD_SDL | |||
| m_mouse->SetKey(3, !!(SDL_GetAppState() & SDL_APPMOUSEFOCUS)); | |||
| #else | |||
| # else | |||
| // Emscripten doesn't seem to handle SDL_APPMOUSEFOCUS | |||
| // SDL2 doesn't have SDL_APPMOUSEFOCUS either | |||
| // FIXME: SDL2 doesn't have SDL_APPMOUSEFOCUS either | |||
| m_mouse->SetKey(3, true); | |||
| #endif | |||
| # endif | |||
| if (m_mousecapture) | |||
| { | |||
| @@ -274,9 +276,9 @@ void SdlInputData::Tick(float seconds) | |||
| m_prevmouse = mouse; | |||
| # if USE_SDL2 | |||
| # if USE_SDL | |||
| Uint8 const *sdlstate = SDL_GetKeyboardState(nullptr); | |||
| # else | |||
| # elif USE_OLD_SDL | |||
| Uint8 *sdlstate = SDL_GetKeyState(nullptr); | |||
| # endif | |||
| @@ -298,27 +300,27 @@ ivec2 SdlInputData::GetMousePos() | |||
| { | |||
| ivec2 ret(-1, -1); | |||
| #if USE_SDL | |||
| # if !EMSCRIPTEN && !USE_SDL2 | |||
| #if USE_SDL || USE_OLD_SDL | |||
| # if !EMSCRIPTEN && USE_OLD_SDL | |||
| if (SDL_GetAppState() & SDL_APPMOUSEFOCUS) | |||
| # endif | |||
| { | |||
| SDL_GetMouseState(&ret.x, &ret.y); | |||
| ret.y = Video::GetSize().y - 1 - ret.y; | |||
| } | |||
| #endif //USE_SDL | |||
| #endif | |||
| return ret; | |||
| } | |||
| void SdlInputData::SetMousePos(ivec2 position) | |||
| { | |||
| #if USE_SDL2 | |||
| #if USE_SDL | |||
| // FIXME: how do I warped mouse? | |||
| #elif USE_SDL | |||
| #elif USE_OLD_SDL | |||
| SDL_WarpMouse((uint16_t)position.x, (uint16_t)position.y); | |||
| #else | |||
| UNUSED(position); | |||
| #endif //USE_SDL | |||
| #endif | |||
| } | |||
| } /* namespace lol */ | |||