Skip to content
Snippets Groups Projects
Commit c334bc94 authored by Rye Mutt's avatar Rye Mutt :bread:
Browse files

Initial changes to implement SDL2 support

parent 63fd765e
No related branches found
No related tags found
No related merge requests found
......@@ -4,26 +4,20 @@ include(Variables)
include(GLEXT)
include(Prebuilt)
if (USESYSTEMLIBS)
include(FindSDL)
# This should be done by FindSDL. Sigh.
mark_as_advanced(
SDLMAIN_LIBRARY
SDL_INCLUDE_DIR
SDL_LIBRARY
)
if (USESYSTEMLIBS OR LINUX)
include(FindPkgConfig)
pkg_check_modules(SDL REQUIRED sdl2)
else (USESYSTEMLIBS)
if (LINUX)
use_prebuilt_binary(SDL)
set (SDL_FOUND TRUE)
set (SDL_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/i686-linux)
set (SDL_LIBRARY SDL X11)
set (SDL_INCLUDE_DIRS ${LIBS_PREBUILT_DIR}/include)
set (SDL_LIBRARIES SDL X11)
endif (LINUX)
endif (USESYSTEMLIBS)
if (SDL_FOUND)
include_directories(${SDL_INCLUDE_DIR})
include_directories(${SDL_INCLUDE_DIRS})
endif (SDL_FOUND)
set(LLWINDOW_INCLUDE_DIRS
......
......@@ -75,7 +75,7 @@ if (LINUX)
${LLVFS_LIBRARIES}
${LLXML_LIBRARIES}
${UI_LIBRARIES} # for GTK
${SDL_LIBRARY}
${SDL_LIBRARIES}
${FONTCONFIG_LIBRARIES} # For FCInit and other FC* functions.
)
......
......@@ -29,7 +29,7 @@
#include "linden_common.h"
#include "llkeyboardsdl.h"
#include "llwindowcallbacks.h"
#include "SDL/SDL.h"
#include <SDL.h>
LLKeyboardSDL::LLKeyboardSDL()
{
......@@ -124,37 +124,34 @@ LLKeyboardSDL::LLKeyboardSDL()
mTranslateKeyMap[SDLK_QUOTE] = '\'';
// Build inverse map
std::map<U32, KEY>::iterator iter;
for (iter = mTranslateKeyMap.begin(); iter != mTranslateKeyMap.end(); iter++)
for (const auto& keymap_pair : mTranslateKeyMap)
{
mInvTranslateKeyMap[iter->second] = iter->first;
mInvTranslateKeyMap[keymap_pair.second] = keymap_pair.first;
}
// numpad map
mTranslateNumpadMap[SDLK_KP0] = KEY_PAD_INS;
mTranslateNumpadMap[SDLK_KP1] = KEY_PAD_END;
mTranslateNumpadMap[SDLK_KP2] = KEY_PAD_DOWN;
mTranslateNumpadMap[SDLK_KP3] = KEY_PAD_PGDN;
mTranslateNumpadMap[SDLK_KP4] = KEY_PAD_LEFT;
mTranslateNumpadMap[SDLK_KP5] = KEY_PAD_CENTER;
mTranslateNumpadMap[SDLK_KP6] = KEY_PAD_RIGHT;
mTranslateNumpadMap[SDLK_KP7] = KEY_PAD_HOME;
mTranslateNumpadMap[SDLK_KP8] = KEY_PAD_UP;
mTranslateNumpadMap[SDLK_KP9] = KEY_PAD_PGUP;
mTranslateNumpadMap[SDLK_KP_0] = KEY_PAD_INS;
mTranslateNumpadMap[SDLK_KP_1] = KEY_PAD_END;
mTranslateNumpadMap[SDLK_KP_2] = KEY_PAD_DOWN;
mTranslateNumpadMap[SDLK_KP_3] = KEY_PAD_PGDN;
mTranslateNumpadMap[SDLK_KP_4] = KEY_PAD_LEFT;
mTranslateNumpadMap[SDLK_KP_5] = KEY_PAD_CENTER;
mTranslateNumpadMap[SDLK_KP_6] = KEY_PAD_RIGHT;
mTranslateNumpadMap[SDLK_KP_7] = KEY_PAD_HOME;
mTranslateNumpadMap[SDLK_KP_8] = KEY_PAD_UP;
mTranslateNumpadMap[SDLK_KP_9] = KEY_PAD_PGUP;
mTranslateNumpadMap[SDLK_KP_PERIOD] = KEY_PAD_DEL;
// build inverse numpad map
for (iter = mTranslateNumpadMap.begin();
iter != mTranslateNumpadMap.end();
iter++)
for (const auto& numpad_pair : mTranslateNumpadMap)
{
mInvTranslateNumpadMap[iter->second] = iter->first;
mInvTranslateNumpadMap[numpad_pair.second] = numpad_pair.first;
}
}
void LLKeyboardSDL::resetMaskKeys()
{
SDLMod mask = SDL_GetModState();
SDL_Keymod mask = SDL_GetModState();
// MBW -- XXX -- This mirrors the operation of the Windows version of resetMaskKeys().
// It looks a bit suspicious, as it won't correct for keys that have been released.
......@@ -211,15 +208,15 @@ static U32 adjustNativekeyFromUnhandledMask(const U32 key, const U32 mask)
switch (key)
{
case SDLK_KP_PERIOD: rtn = SDLK_DELETE; break;
case SDLK_KP0: rtn = SDLK_INSERT; break;
case SDLK_KP1: rtn = SDLK_END; break;
case SDLK_KP2: rtn = SDLK_DOWN; break;
case SDLK_KP3: rtn = SDLK_PAGEDOWN; break;
case SDLK_KP4: rtn = SDLK_LEFT; break;
case SDLK_KP6: rtn = SDLK_RIGHT; break;
case SDLK_KP7: rtn = SDLK_HOME; break;
case SDLK_KP8: rtn = SDLK_UP; break;
case SDLK_KP9: rtn = SDLK_PAGEUP; break;
case SDLK_KP_0: rtn = SDLK_INSERT; break;
case SDLK_KP_1: rtn = SDLK_END; break;
case SDLK_KP_2: rtn = SDLK_DOWN; break;
case SDLK_KP_3: rtn = SDLK_PAGEDOWN; break;
case SDLK_KP_4: rtn = SDLK_LEFT; break;
case SDLK_KP_6: rtn = SDLK_RIGHT; break;
case SDLK_KP_7: rtn = SDLK_HOME; break;
case SDLK_KP_8: rtn = SDLK_UP; break;
case SDLK_KP_9: rtn = SDLK_PAGEUP; break;
}
}
return rtn;
......@@ -268,7 +265,7 @@ BOOL LLKeyboardSDL::handleKeyUp(const U32 key, MASK mask)
MASK LLKeyboardSDL::currentMask(BOOL for_mouse_event)
{
MASK result = MASK_NONE;
SDLMod mask = SDL_GetModState();
SDL_Keymod mask = SDL_GetModState();
if (mask & KMOD_SHIFT) result |= MASK_SHIFT;
if (mask & KMOD_CTRL) result |= MASK_CONTROL;
......@@ -277,7 +274,7 @@ MASK LLKeyboardSDL::currentMask(BOOL for_mouse_event)
// For keyboard events, consider Meta keys equivalent to Control
if (!for_mouse_event)
{
if (mask & KMOD_META) result |= MASK_CONTROL;
if (mask & KMOD_GUI) result |= MASK_CONTROL;
}
return result;
......
......@@ -28,7 +28,7 @@
#define LL_LLKEYBOARDSDL_H
#include "llkeyboard.h"
#include "SDL/SDL.h"
#include <SDL.h>
class LLKeyboardSDL : public LLKeyboard
{
......
This diff is collapsed.
......@@ -32,12 +32,16 @@
#include "llwindow.h"
#include "lltimer.h"
#include "SDL/SDL.h"
#include "SDL/SDL_endian.h"
#ifndef SDL_MAIN_HANDLED
#define SDL_MAIN_HANDLED 1
#endif
#include <SDL.h>
#include <SDL_endian.h>
#include <SDL_video.h>
#if LL_X11
// get X11-specific headers for use in low-level stuff like copy-and-paste support
#include "SDL/SDL_syswm.h"
#include <SDL_syswm.h>
#endif
// AssertMacros.h does bad things.
......@@ -177,26 +181,28 @@ class LLWindowSDL : public LLWindow
void destroyContext();
void setupFailure(const std::string& text, const std::string& caption, U32 type);
void fixWindowSize(void);
U32 SDLCheckGrabbyKeys(SDLKey keysym, BOOL gain);
U32 SDLCheckGrabbyKeys(SDL_Keycode keysym, BOOL gain);
BOOL SDLReallyCaptureInput(BOOL capture);
//
// Platform specific variables
//
U32 mGrabbyKeyFlags;
int mReallyCapturedCount;
SDL_Surface * mWindow;
std::string mWindowTitle;
double mOriginalAspectRatio;
BOOL mNeedsResize; // Constructor figured out the window is too big, it needs a resize.
int mReallyCapturedCount;
SDL_Window* mWindow;
SDL_GLContext mGLContext;
std::string mWindowName;
std::string mWindowTitle;
double mOriginalAspectRatio;
BOOL mNeedsResize; // Constructor figured out the window is too big, it needs a resize.
LLCoordScreen mNeedsResizeSize;
F32 mOverrideAspectRatio;
F32 mGamma;
U32 mFSAASamples;
F32 mOverrideAspectRatio;
F32 mGamma;
U32 mFSAASamples;
int mSDLFlags;
int mSDLFlags;
SDL_Cursor* mSDLCursors[UI_CURSOR_COUNT];
SDL_Cursor* mSDLCursors[UI_CURSOR_COUNT];
int mHaveInputFocus; /* 0=no, 1=yes, else unknown */
int mIsMinimized; /* 0=no, 1=yes, else unknown */
......@@ -210,8 +216,8 @@ class LLWindowSDL : public LLWindow
#endif //LL_X11
U32 mKeyScanCode;
U32 mKeyVirtualKey;
SDLMod mKeyModifiers;
U32 mKeyVirtualKey;
SDL_Keymod mKeyModifiers;
};
......
......@@ -2085,7 +2085,7 @@ target_link_libraries(${VIEWER_BINARY_NAME}
${FMODWRAPPER_LIBRARY} # must come after LLAudio
${GLOD_LIBRARIES}
${OPENGL_LIBRARIES}
${SDL_LIBRARY}
${SDL_LIBRARIES}
${SMARTHEAP_LIBRARY}
${UI_LIBRARIES}
${WINDOWS_LIBRARIES}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment