mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2024-12-25 03:41:02 +00:00
Merge branch 'sdl2-cleanup' into 'master'
SDL2 i_video.c code cleanup Made some code look a bit neater, removed the need for some SDL2STUBs Fury placed, vid_info console command actually kind of has a use again, etc See merge request !138
This commit is contained in:
commit
64801a1a8e
1 changed files with 103 additions and 436 deletions
|
@ -33,14 +33,6 @@
|
||||||
#pragma warning(default : 4214 4244)
|
#pragma warning(default : 4214 4244)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if SDL_VERSION_ATLEAST(1,3,0)
|
|
||||||
#define SDLK_EQUALS SDLK_KP_EQUALSAS400
|
|
||||||
#define SDLK_LMETA SDLK_LGUI
|
|
||||||
#define SDLK_RMETA SDLK_RGUI
|
|
||||||
#else
|
|
||||||
#define HAVE_SDLMETAKEYS
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef HAVE_TTF
|
#ifdef HAVE_TTF
|
||||||
#include "i_ttf.h"
|
#include "i_ttf.h"
|
||||||
#endif
|
#endif
|
||||||
|
@ -189,14 +181,14 @@ static void SDLSetMode(INT32 width, INT32 height, SDL_bool fullscreen)
|
||||||
wasfullscreen = SDL_TRUE;
|
wasfullscreen = SDL_TRUE;
|
||||||
SDL_SetWindowFullscreen(window, SDL_WINDOW_FULLSCREEN_DESKTOP);
|
SDL_SetWindowFullscreen(window, SDL_WINDOW_FULLSCREEN_DESKTOP);
|
||||||
}
|
}
|
||||||
else if (!fullscreen && wasfullscreen)
|
else if (wasfullscreen)
|
||||||
{
|
{
|
||||||
wasfullscreen = SDL_FALSE;
|
wasfullscreen = SDL_FALSE;
|
||||||
SDL_SetWindowFullscreen(window, 0);
|
SDL_SetWindowFullscreen(window, 0);
|
||||||
SDL_SetWindowSize(window, width, height);
|
SDL_SetWindowSize(window, width, height);
|
||||||
SDL_SetWindowPosition(window, SDL_WINDOWPOS_CENTERED_DISPLAY(1), SDL_WINDOWPOS_CENTERED_DISPLAY(1));
|
SDL_SetWindowPosition(window, SDL_WINDOWPOS_CENTERED_DISPLAY(1), SDL_WINDOWPOS_CENTERED_DISPLAY(1));
|
||||||
}
|
}
|
||||||
else if (!wasfullscreen)
|
else
|
||||||
{
|
{
|
||||||
// Reposition window only in windowed mode
|
// Reposition window only in windowed mode
|
||||||
SDL_SetWindowSize(window, width, height);
|
SDL_SetWindowSize(window, width, height);
|
||||||
|
@ -282,129 +274,70 @@ static INT32 Impl_SDL_Scancode_To_Keycode(SDL_Scancode code)
|
||||||
}
|
}
|
||||||
switch (code)
|
switch (code)
|
||||||
{
|
{
|
||||||
case SDL_SCANCODE_F11: // F11 and F12 are
|
// F11 and F12 are separated from the rest of the function keys
|
||||||
return KEY_F11; // separated from the
|
case SDL_SCANCODE_F11: return KEY_F11;
|
||||||
case SDL_SCANCODE_F12: // rest of the function
|
case SDL_SCANCODE_F12: return KEY_F12;
|
||||||
return KEY_F12; // keys
|
|
||||||
|
|
||||||
case SDL_SCANCODE_KP_0:
|
case SDL_SCANCODE_KP_0: return KEY_KEYPAD0;
|
||||||
return KEY_KEYPAD0;
|
case SDL_SCANCODE_KP_1: return KEY_KEYPAD1;
|
||||||
case SDL_SCANCODE_KP_1:
|
case SDL_SCANCODE_KP_2: return KEY_KEYPAD2;
|
||||||
return KEY_KEYPAD1;
|
case SDL_SCANCODE_KP_3: return KEY_KEYPAD3;
|
||||||
case SDL_SCANCODE_KP_2:
|
case SDL_SCANCODE_KP_4: return KEY_KEYPAD4;
|
||||||
return KEY_KEYPAD2;
|
case SDL_SCANCODE_KP_5: return KEY_KEYPAD5;
|
||||||
case SDL_SCANCODE_KP_3:
|
case SDL_SCANCODE_KP_6: return KEY_KEYPAD6;
|
||||||
return KEY_KEYPAD3;
|
case SDL_SCANCODE_KP_7: return KEY_KEYPAD7;
|
||||||
case SDL_SCANCODE_KP_4:
|
case SDL_SCANCODE_KP_8: return KEY_KEYPAD8;
|
||||||
return KEY_KEYPAD4;
|
case SDL_SCANCODE_KP_9: return KEY_KEYPAD9;
|
||||||
case SDL_SCANCODE_KP_5:
|
|
||||||
return KEY_KEYPAD5;
|
|
||||||
case SDL_SCANCODE_KP_6:
|
|
||||||
return KEY_KEYPAD6;
|
|
||||||
case SDL_SCANCODE_KP_7:
|
|
||||||
return KEY_KEYPAD7;
|
|
||||||
case SDL_SCANCODE_KP_8:
|
|
||||||
return KEY_KEYPAD8;
|
|
||||||
case SDL_SCANCODE_KP_9:
|
|
||||||
return KEY_KEYPAD9;
|
|
||||||
|
|
||||||
case SDL_SCANCODE_RETURN:
|
case SDL_SCANCODE_RETURN: return KEY_ENTER;
|
||||||
return KEY_ENTER;
|
case SDL_SCANCODE_ESCAPE: return KEY_ESCAPE;
|
||||||
case SDL_SCANCODE_ESCAPE:
|
case SDL_SCANCODE_BACKSPACE: return KEY_BACKSPACE;
|
||||||
return KEY_ESCAPE;
|
case SDL_SCANCODE_TAB: return KEY_TAB;
|
||||||
case SDL_SCANCODE_BACKSPACE:
|
case SDL_SCANCODE_SPACE: return KEY_SPACE;
|
||||||
return KEY_BACKSPACE;
|
case SDL_SCANCODE_MINUS: return KEY_MINUS;
|
||||||
case SDL_SCANCODE_TAB:
|
case SDL_SCANCODE_EQUALS: return KEY_EQUALS;
|
||||||
return KEY_TAB;
|
case SDL_SCANCODE_LEFTBRACKET: return '[';
|
||||||
case SDL_SCANCODE_SPACE:
|
case SDL_SCANCODE_RIGHTBRACKET: return ']';
|
||||||
return KEY_SPACE;
|
case SDL_SCANCODE_BACKSLASH: return '\\';
|
||||||
case SDL_SCANCODE_MINUS:
|
case SDL_SCANCODE_NONUSHASH: return '#';
|
||||||
return KEY_MINUS;
|
case SDL_SCANCODE_SEMICOLON: return ';';
|
||||||
case SDL_SCANCODE_EQUALS:
|
case SDL_SCANCODE_APOSTROPHE: return '\'';
|
||||||
return KEY_EQUALS;
|
case SDL_SCANCODE_GRAVE: return '`';
|
||||||
case SDL_SCANCODE_LEFTBRACKET:
|
case SDL_SCANCODE_COMMA: return ',';
|
||||||
return '[';
|
case SDL_SCANCODE_PERIOD: return '.';
|
||||||
case SDL_SCANCODE_RIGHTBRACKET:
|
case SDL_SCANCODE_SLASH: return '/';
|
||||||
return ']';
|
case SDL_SCANCODE_CAPSLOCK: return KEY_CAPSLOCK;
|
||||||
case SDL_SCANCODE_BACKSLASH:
|
case SDL_SCANCODE_PRINTSCREEN: return 0; // undefined?
|
||||||
return '\\';
|
case SDL_SCANCODE_SCROLLLOCK: return KEY_SCROLLLOCK;
|
||||||
case SDL_SCANCODE_NONUSHASH:
|
case SDL_SCANCODE_PAUSE: return KEY_PAUSE;
|
||||||
return '#';
|
case SDL_SCANCODE_INSERT: return KEY_INS;
|
||||||
case SDL_SCANCODE_SEMICOLON:
|
case SDL_SCANCODE_HOME: return KEY_HOME;
|
||||||
return ';';
|
case SDL_SCANCODE_PAGEUP: return KEY_PGUP;
|
||||||
case SDL_SCANCODE_APOSTROPHE:
|
case SDL_SCANCODE_DELETE: return KEY_DEL;
|
||||||
return '\'';
|
case SDL_SCANCODE_END: return KEY_END;
|
||||||
case SDL_SCANCODE_GRAVE:
|
case SDL_SCANCODE_PAGEDOWN: return KEY_PGDN;
|
||||||
return '`';
|
case SDL_SCANCODE_RIGHT: return KEY_RIGHTARROW;
|
||||||
case SDL_SCANCODE_COMMA:
|
case SDL_SCANCODE_LEFT: return KEY_LEFTARROW;
|
||||||
return ',';
|
case SDL_SCANCODE_DOWN: return KEY_DOWNARROW;
|
||||||
case SDL_SCANCODE_PERIOD:
|
case SDL_SCANCODE_UP: return KEY_UPARROW;
|
||||||
return '.';
|
case SDL_SCANCODE_NUMLOCKCLEAR: return KEY_NUMLOCK;
|
||||||
case SDL_SCANCODE_SLASH:
|
case SDL_SCANCODE_KP_DIVIDE: return KEY_KPADSLASH;
|
||||||
return '/';
|
case SDL_SCANCODE_KP_MULTIPLY: return '*'; // undefined?
|
||||||
case SDL_SCANCODE_CAPSLOCK:
|
case SDL_SCANCODE_KP_MINUS: return KEY_MINUSPAD;
|
||||||
return KEY_CAPSLOCK;
|
case SDL_SCANCODE_KP_PLUS: return KEY_PLUSPAD;
|
||||||
case SDL_SCANCODE_PRINTSCREEN:
|
case SDL_SCANCODE_KP_ENTER: return KEY_ENTER;
|
||||||
return 0; // undefined?
|
case SDL_SCANCODE_KP_PERIOD: return KEY_KPADDEL;
|
||||||
case SDL_SCANCODE_SCROLLLOCK:
|
case SDL_SCANCODE_NONUSBACKSLASH: return '\\';
|
||||||
return KEY_SCROLLLOCK;
|
|
||||||
case SDL_SCANCODE_PAUSE:
|
|
||||||
return KEY_PAUSE;
|
|
||||||
case SDL_SCANCODE_INSERT:
|
|
||||||
return KEY_INS;
|
|
||||||
case SDL_SCANCODE_HOME:
|
|
||||||
return KEY_HOME;
|
|
||||||
case SDL_SCANCODE_PAGEUP:
|
|
||||||
return KEY_PGUP;
|
|
||||||
case SDL_SCANCODE_DELETE:
|
|
||||||
return KEY_DEL;
|
|
||||||
case SDL_SCANCODE_END:
|
|
||||||
return KEY_END;
|
|
||||||
case SDL_SCANCODE_PAGEDOWN:
|
|
||||||
return KEY_PGDN;
|
|
||||||
case SDL_SCANCODE_RIGHT:
|
|
||||||
return KEY_RIGHTARROW;
|
|
||||||
case SDL_SCANCODE_LEFT:
|
|
||||||
return KEY_LEFTARROW;
|
|
||||||
case SDL_SCANCODE_DOWN:
|
|
||||||
return KEY_DOWNARROW;
|
|
||||||
case SDL_SCANCODE_UP:
|
|
||||||
return KEY_UPARROW;
|
|
||||||
case SDL_SCANCODE_NUMLOCKCLEAR:
|
|
||||||
return KEY_NUMLOCK;
|
|
||||||
case SDL_SCANCODE_KP_DIVIDE:
|
|
||||||
return KEY_KPADSLASH;
|
|
||||||
case SDL_SCANCODE_KP_MULTIPLY:
|
|
||||||
return '*'; // undefined?
|
|
||||||
case SDL_SCANCODE_KP_MINUS:
|
|
||||||
return KEY_MINUSPAD;
|
|
||||||
case SDL_SCANCODE_KP_PLUS:
|
|
||||||
return KEY_PLUSPAD;
|
|
||||||
case SDL_SCANCODE_KP_ENTER:
|
|
||||||
return KEY_ENTER;
|
|
||||||
case SDL_SCANCODE_KP_PERIOD:
|
|
||||||
return KEY_KPADDEL;
|
|
||||||
case SDL_SCANCODE_NONUSBACKSLASH:
|
|
||||||
return '\\';
|
|
||||||
|
|
||||||
case SDL_SCANCODE_LSHIFT:
|
case SDL_SCANCODE_LSHIFT: return KEY_LSHIFT;
|
||||||
return KEY_LSHIFT;
|
case SDL_SCANCODE_RSHIFT: return KEY_RSHIFT;
|
||||||
case SDL_SCANCODE_RSHIFT:
|
case SDL_SCANCODE_LCTRL: return KEY_LCTRL;
|
||||||
return KEY_RSHIFT;
|
case SDL_SCANCODE_RCTRL: return KEY_RCTRL;
|
||||||
case SDL_SCANCODE_LCTRL:
|
case SDL_SCANCODE_LALT: return KEY_LALT;
|
||||||
return KEY_LCTRL;
|
case SDL_SCANCODE_RALT: return KEY_RALT;
|
||||||
case SDL_SCANCODE_RCTRL:
|
case SDL_SCANCODE_LGUI: return KEY_LEFTWIN;
|
||||||
return KEY_RCTRL;
|
case SDL_SCANCODE_RGUI: return KEY_RIGHTWIN;
|
||||||
case SDL_SCANCODE_LALT:
|
default: break;
|
||||||
return KEY_LALT;
|
|
||||||
case SDL_SCANCODE_RALT:
|
|
||||||
return KEY_RALT;
|
|
||||||
case SDL_SCANCODE_LGUI:
|
|
||||||
return KEY_LEFTWIN;
|
|
||||||
case SDL_SCANCODE_RGUI:
|
|
||||||
return KEY_RIGHTWIN;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
#ifdef HWRENDER
|
#ifdef HWRENDER
|
||||||
DBG_Printf("Unknown incoming scancode: %d, represented %c\n",
|
DBG_Printf("Unknown incoming scancode: %d, represented %c\n",
|
||||||
|
@ -432,15 +365,10 @@ static void VID_Command_NumModes_f (void)
|
||||||
CONS_Printf(M_GetText("%d video mode(s) available(s)\n"), VID_NumModes());
|
CONS_Printf(M_GetText("%d video mode(s) available(s)\n"), VID_NumModes());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SDL2 doesn't have SDL_GetVideoSurface or a lot of the SDL_Surface flags that SDL 1.2 had
|
||||||
static void SurfaceInfo(const SDL_Surface *infoSurface, const char *SurfaceText)
|
static void SurfaceInfo(const SDL_Surface *infoSurface, const char *SurfaceText)
|
||||||
{
|
{
|
||||||
#if 1
|
|
||||||
(void)infoSurface;
|
|
||||||
(void)SurfaceText;
|
|
||||||
SDL2STUB();
|
|
||||||
#else
|
|
||||||
INT32 vfBPP;
|
INT32 vfBPP;
|
||||||
const SDL_Surface *VidSur = SDL_GetVideoSurface();
|
|
||||||
|
|
||||||
if (!infoSurface)
|
if (!infoSurface)
|
||||||
return;
|
return;
|
||||||
|
@ -453,49 +381,12 @@ static void SurfaceInfo(const SDL_Surface *infoSurface, const char *SurfaceText)
|
||||||
CONS_Printf("\x82" "%s\n", SurfaceText);
|
CONS_Printf("\x82" "%s\n", SurfaceText);
|
||||||
CONS_Printf(M_GetText(" %ix%i at %i bit color\n"), infoSurface->w, infoSurface->h, vfBPP);
|
CONS_Printf(M_GetText(" %ix%i at %i bit color\n"), infoSurface->w, infoSurface->h, vfBPP);
|
||||||
|
|
||||||
if (infoSurface->flags&SDL_HWSURFACE)
|
if (infoSurface->flags&SDL_PREALLOC)
|
||||||
CONS_Printf("%s", M_GetText(" Stored in video memory\n"));
|
|
||||||
else if (infoSurface->flags&SDL_OPENGL)
|
|
||||||
CONS_Printf("%s", M_GetText(" Stored in an OpenGL context\n"));
|
|
||||||
else if (infoSurface->flags&SDL_PREALLOC)
|
|
||||||
CONS_Printf("%s", M_GetText(" Uses preallocated memory\n"));
|
CONS_Printf("%s", M_GetText(" Uses preallocated memory\n"));
|
||||||
else
|
else
|
||||||
CONS_Printf("%s", M_GetText(" Stored in system memory\n"));
|
CONS_Printf("%s", M_GetText(" Stored in system memory\n"));
|
||||||
|
|
||||||
if (infoSurface->flags&SDL_ASYNCBLIT)
|
|
||||||
CONS_Printf("%s", M_GetText(" Uses asynchronous blits if possible\n"));
|
|
||||||
else
|
|
||||||
CONS_Printf("%s", M_GetText(" Uses synchronous blits if possible\n"));
|
|
||||||
|
|
||||||
if (infoSurface->flags&SDL_ANYFORMAT)
|
|
||||||
CONS_Printf("%s", M_GetText(" Allows any pixel-format\n"));
|
|
||||||
|
|
||||||
if (infoSurface->flags&SDL_HWPALETTE)
|
|
||||||
CONS_Printf("%s", M_GetText(" Has exclusive palette access\n"));
|
|
||||||
else if (VidSur == infoSurface)
|
|
||||||
CONS_Printf("%s", M_GetText(" Has nonexclusive palette access\n"));
|
|
||||||
|
|
||||||
if (infoSurface->flags&SDL_DOUBLEBUF)
|
|
||||||
CONS_Printf("%s", M_GetText(" Double buffered\n"));
|
|
||||||
else if (VidSur == infoSurface)
|
|
||||||
CONS_Printf("%s", M_GetText(" No hardware flipping\n"));
|
|
||||||
|
|
||||||
if (infoSurface->flags&SDL_FULLSCREEN)
|
|
||||||
CONS_Printf("%s", M_GetText(" Full screen\n"));
|
|
||||||
else if (infoSurface->flags&SDL_RESIZABLE)
|
|
||||||
CONS_Printf("%s", M_GetText(" Resizable window\n"));
|
|
||||||
else if (VidSur == infoSurface)
|
|
||||||
CONS_Printf("%s", M_GetText(" Nonresizable window\n"));
|
|
||||||
|
|
||||||
if (infoSurface->flags&SDL_HWACCEL)
|
|
||||||
CONS_Printf("%s", M_GetText(" Uses hardware acceleration blit\n"));
|
|
||||||
if (infoSurface->flags&SDL_SRCCOLORKEY)
|
|
||||||
CONS_Printf("%s", M_GetText(" Use colorkey blitting\n"));
|
|
||||||
if (infoSurface->flags&SDL_RLEACCEL)
|
if (infoSurface->flags&SDL_RLEACCEL)
|
||||||
CONS_Printf("%s", M_GetText(" Colorkey RLE acceleration blit\n"));
|
CONS_Printf("%s", M_GetText(" Colorkey RLE acceleration blit\n"));
|
||||||
if (infoSurface->flags&SDL_SRCALPHA)
|
|
||||||
CONS_Printf("%s", M_GetText(" Use alpha blending acceleration blit\n"));
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void VID_Command_Info_f (void)
|
static void VID_Command_Info_f (void)
|
||||||
|
@ -579,23 +470,6 @@ static void VID_Command_Mode_f (void)
|
||||||
setmodeneeded = modenum+1; // request vid mode change
|
setmodeneeded = modenum+1; // request vid mode change
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
#if defined(RPC_NO_WINDOWS_H)
|
|
||||||
static VOID MainWndproc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|
||||||
{
|
|
||||||
UNREFERENCED_PARAMETER(hWnd);
|
|
||||||
UNREFERENCED_PARAMETER(message);
|
|
||||||
UNREFERENCED_PARAMETER(wParam);
|
|
||||||
switch (message)
|
|
||||||
{
|
|
||||||
case WM_SETTEXT:
|
|
||||||
COM_BufAddText((LPCSTR)lParam);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static inline void SDLJoyRemap(event_t *event)
|
static inline void SDLJoyRemap(event_t *event)
|
||||||
{
|
{
|
||||||
(void)event;
|
(void)event;
|
||||||
|
@ -954,218 +828,6 @@ void I_GetEvent(void)
|
||||||
// In order to make wheels act like buttons, we have to set their state to Up.
|
// In order to make wheels act like buttons, we have to set their state to Up.
|
||||||
// This is because wheel messages don't have an up/down state.
|
// This is because wheel messages don't have an up/down state.
|
||||||
gamekeydown[KEY_MOUSEWHEELDOWN] = gamekeydown[KEY_MOUSEWHEELUP] = 0;
|
gamekeydown[KEY_MOUSEWHEELDOWN] = gamekeydown[KEY_MOUSEWHEELUP] = 0;
|
||||||
|
|
||||||
#if 0
|
|
||||||
SDL_Event inputEvent;
|
|
||||||
static SDL_bool sdlquit = SDL_FALSE; //Alam: once, just once
|
|
||||||
event_t event;
|
|
||||||
|
|
||||||
if (!graphics_started)
|
|
||||||
return;
|
|
||||||
|
|
||||||
memset(&inputEvent, 0x00, sizeof(inputEvent));
|
|
||||||
while (SDL_PollEvent(&inputEvent))
|
|
||||||
{
|
|
||||||
memset(&event,0x00,sizeof (event_t));
|
|
||||||
switch (inputEvent.type)
|
|
||||||
{
|
|
||||||
case SDL_ACTIVEEVENT:
|
|
||||||
if (inputEvent.active.state & (SDL_APPACTIVE|SDL_APPINPUTFOCUS))
|
|
||||||
{
|
|
||||||
// pause music when alt-tab
|
|
||||||
if (inputEvent.active.gain /*&& !paused */)
|
|
||||||
{
|
|
||||||
static SDL_bool firsttimeonmouse = SDL_TRUE;
|
|
||||||
if (!firsttimeonmouse)
|
|
||||||
{
|
|
||||||
if (cv_usemouse.value) I_StartupMouse();
|
|
||||||
}
|
|
||||||
else firsttimeonmouse = SDL_FALSE;
|
|
||||||
//if (!netgame && !con_destlines) paused = false;
|
|
||||||
if (gamestate == GS_LEVEL)
|
|
||||||
if (!paused) I_ResumeSong(0); //resume it
|
|
||||||
}
|
|
||||||
else /*if (!paused)*/
|
|
||||||
{
|
|
||||||
if (!disable_mouse)
|
|
||||||
SDLforceUngrabMouse();
|
|
||||||
if (!netgame && gamestate == GS_LEVEL) paused = true;
|
|
||||||
memset(gamekeydown, 0, NUMKEYS);
|
|
||||||
//S_PauseSound();
|
|
||||||
if (gamestate == GS_LEVEL)
|
|
||||||
I_PauseSong(0); //pause it
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (MOUSE_MENU)
|
|
||||||
{
|
|
||||||
SDLdoUngrabMouse();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if ((SDL_APPMOUSEFOCUS&inputEvent.active.state) && USE_MOUSEINPUT && inputEvent.active.gain)
|
|
||||||
HalfWarpMouse(realwidth, realheight);
|
|
||||||
break;
|
|
||||||
case SDL_KEYDOWN:
|
|
||||||
case SDL_KEYUP:
|
|
||||||
/// \todo inputEvent.key.which?
|
|
||||||
if (inputEvent.type == SDL_KEYUP)
|
|
||||||
event.type = ev_keyup;
|
|
||||||
else if (inputEvent.type == SDL_KEYDOWN)
|
|
||||||
event.type = ev_keydown;
|
|
||||||
else break;
|
|
||||||
event.data1 = SDLatekey(inputEvent.key.keysym.sym);
|
|
||||||
if (event.data1) D_PostEvent(&event);
|
|
||||||
break;
|
|
||||||
case SDL_MOUSEMOTION:
|
|
||||||
/// \todo inputEvent.motion.which
|
|
||||||
if (MOUSE_MENU)
|
|
||||||
{
|
|
||||||
SDLdoUngrabMouse();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
//if (USE_MOUSEINPUT) TODO SDL2 stub
|
|
||||||
{
|
|
||||||
// If the event is from warping the pointer back to middle
|
|
||||||
// of the screen then ignore it.
|
|
||||||
if ((inputEvent.motion.x == realwidth/2) &&
|
|
||||||
(inputEvent.motion.y == realheight/2))
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
event.data2 = +inputEvent.motion.xrel;
|
|
||||||
event.data3 = -inputEvent.motion.yrel;
|
|
||||||
}
|
|
||||||
event.type = ev_mouse;
|
|
||||||
D_PostEvent(&event);
|
|
||||||
// Warp the pointer back to the middle of the window
|
|
||||||
// or we cannot move any further if it's at a border.
|
|
||||||
if ((inputEvent.motion.x < (realwidth/2 )-(realwidth/4 )) ||
|
|
||||||
(inputEvent.motion.y < (realheight/2)-(realheight/4)) ||
|
|
||||||
(inputEvent.motion.x > (realwidth/2 )+(realwidth/4 )) ||
|
|
||||||
(inputEvent.motion.y > (realheight/2)+(realheight/4) ) )
|
|
||||||
{
|
|
||||||
//if (SDL_GRAB_ON == SDL_WM_GrabInput(SDL_GRAB_QUERY) || !mousegrabok)
|
|
||||||
HalfWarpMouse(realwidth, realheight);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case SDL_MOUSEBUTTONDOWN:
|
|
||||||
case SDL_MOUSEBUTTONUP:
|
|
||||||
/// \todo inputEvent.button.which
|
|
||||||
if (USE_MOUSEINPUT)
|
|
||||||
{
|
|
||||||
if (inputEvent.type == SDL_MOUSEBUTTONUP)
|
|
||||||
event.type = ev_keyup;
|
|
||||||
else if (inputEvent.type == SDL_MOUSEBUTTONDOWN)
|
|
||||||
event.type = ev_keydown;
|
|
||||||
else break;
|
|
||||||
if (inputEvent.button.button==SDL_BUTTON_WHEELUP || inputEvent.button.button==SDL_BUTTON_WHEELDOWN)
|
|
||||||
{
|
|
||||||
if (inputEvent.type == SDL_MOUSEBUTTONUP)
|
|
||||||
event.data1 = 0; //Alam: dumb! this could be a real button with some mice
|
|
||||||
else
|
|
||||||
event.data1 = KEY_MOUSEWHEELUP + inputEvent.button.button - SDL_BUTTON_WHEELUP;
|
|
||||||
}
|
|
||||||
else if (inputEvent.button.button == SDL_BUTTON_MIDDLE)
|
|
||||||
event.data1 = KEY_MOUSE1+2;
|
|
||||||
else if (inputEvent.button.button == SDL_BUTTON_RIGHT)
|
|
||||||
event.data1 = KEY_MOUSE1+1;
|
|
||||||
else if (inputEvent.button.button <= MOUSEBUTTONS)
|
|
||||||
event.data1 = KEY_MOUSE1 + inputEvent.button.button - SDL_BUTTON_LEFT;
|
|
||||||
if (event.data1) D_PostEvent(&event);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case SDL_JOYAXISMOTION:
|
|
||||||
inputEvent.jaxis.which++;
|
|
||||||
inputEvent.jaxis.axis++;
|
|
||||||
event.data1 = event.data2 = event.data3 = INT32_MAX;
|
|
||||||
if (cv_usejoystick.value == inputEvent.jaxis.which)
|
|
||||||
{
|
|
||||||
event.type = ev_joystick;
|
|
||||||
}
|
|
||||||
else if (cv_usejoystick.value == inputEvent.jaxis.which)
|
|
||||||
{
|
|
||||||
event.type = ev_joystick2;
|
|
||||||
}
|
|
||||||
else break;
|
|
||||||
//axis
|
|
||||||
if (inputEvent.jaxis.axis > JOYAXISSET*2)
|
|
||||||
break;
|
|
||||||
//vaule
|
|
||||||
if (inputEvent.jaxis.axis%2)
|
|
||||||
{
|
|
||||||
event.data1 = inputEvent.jaxis.axis / 2;
|
|
||||||
event.data2 = SDLJoyAxis(inputEvent.jaxis.value, event.type);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
inputEvent.jaxis.axis--;
|
|
||||||
event.data1 = inputEvent.jaxis.axis / 2;
|
|
||||||
event.data3 = SDLJoyAxis(inputEvent.jaxis.value, event.type);
|
|
||||||
}
|
|
||||||
D_PostEvent(&event);
|
|
||||||
break;
|
|
||||||
case SDL_JOYBALLMOTION:
|
|
||||||
case SDL_JOYHATMOTION:
|
|
||||||
break; //NONE
|
|
||||||
case SDL_JOYBUTTONDOWN:
|
|
||||||
case SDL_JOYBUTTONUP:
|
|
||||||
inputEvent.jbutton.which++;
|
|
||||||
if (cv_usejoystick.value == inputEvent.jbutton.which)
|
|
||||||
event.data1 = KEY_JOY1;
|
|
||||||
else if (cv_usejoystick.value == inputEvent.jbutton.which)
|
|
||||||
event.data1 = KEY_2JOY1;
|
|
||||||
else break;
|
|
||||||
if (inputEvent.type == SDL_JOYBUTTONUP)
|
|
||||||
event.type = ev_keyup;
|
|
||||||
else if (inputEvent.type == SDL_JOYBUTTONDOWN)
|
|
||||||
event.type = ev_keydown;
|
|
||||||
else break;
|
|
||||||
if (inputEvent.jbutton.button < JOYBUTTONS)
|
|
||||||
event.data1 += inputEvent.jbutton.button;
|
|
||||||
else
|
|
||||||
break;
|
|
||||||
SDLJoyRemap(&event);
|
|
||||||
if (event.type != ev_console) D_PostEvent(&event);
|
|
||||||
break;
|
|
||||||
case SDL_QUIT:
|
|
||||||
if (!sdlquit)
|
|
||||||
{
|
|
||||||
sdlquit = SDL_TRUE;
|
|
||||||
M_QuitResponse('y');
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
#if defined(RPC_NO_WINDOWS_H)
|
|
||||||
case SDL_SYSWMEVENT:
|
|
||||||
MainWndproc(inputEvent.syswm.msg->hwnd,
|
|
||||||
inputEvent.syswm.msg->msg,
|
|
||||||
inputEvent.syswm.msg->wParam,
|
|
||||||
inputEvent.syswm.msg->lParam);
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
case SDL_VIDEORESIZE:
|
|
||||||
if (gamestate == GS_LEVEL || gamestate == GS_TITLESCREEN || gamestate == GS_EVALUATION)
|
|
||||||
setmodeneeded = VID_GetModeForSize(inputEvent.resize.w,inputEvent.resize.h)+1;
|
|
||||||
if (render_soft == rendermode)
|
|
||||||
{
|
|
||||||
SDLSetMode(realwidth, realheight, vid.bpp*8, surfaceFlagsW);
|
|
||||||
if (vidSurface) SDL_SetColors(vidSurface, localPalette, 0, 256);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
SDLSetMode(realwidth, realheight, vid.bpp*8, surfaceFlagsW);
|
|
||||||
if (!vidSurface)
|
|
||||||
I_Error("Could not reset vidmode: %s\n",SDL_GetError());
|
|
||||||
break;
|
|
||||||
case SDL_VIDEOEXPOSE:
|
|
||||||
exposevideo = SDL_TRUE;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//reset wheel like in win32, I don't understand it but works
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void I_StartupMouse(void)
|
void I_StartupMouse(void)
|
||||||
|
@ -1494,11 +1156,6 @@ void VID_PrepareModeList(void)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void SDLESSet(void)
|
|
||||||
{
|
|
||||||
SDL2STUB();
|
|
||||||
}
|
|
||||||
|
|
||||||
INT32 VID_SetMode(INT32 modeNum)
|
INT32 VID_SetMode(INT32 modeNum)
|
||||||
{
|
{
|
||||||
SDLdoUngrabMouse();
|
SDLdoUngrabMouse();
|
||||||
|
@ -1550,6 +1207,12 @@ INT32 VID_SetMode(INT32 modeNum)
|
||||||
static SDL_bool Impl_CreateWindow(SDL_bool fullscreen)
|
static SDL_bool Impl_CreateWindow(SDL_bool fullscreen)
|
||||||
{
|
{
|
||||||
int flags = 0;
|
int flags = 0;
|
||||||
|
|
||||||
|
if (rendermode == render_none) // dedicated
|
||||||
|
{
|
||||||
|
return SDL_TRUE; // Monster Iestyn -- not sure if it really matters what we return here tbh
|
||||||
|
}
|
||||||
|
|
||||||
if (window != NULL)
|
if (window != NULL)
|
||||||
{
|
{
|
||||||
return SDL_FALSE;
|
return SDL_FALSE;
|
||||||
|
@ -1568,38 +1231,43 @@ static SDL_bool Impl_CreateWindow(SDL_bool fullscreen)
|
||||||
#ifdef HWRENDER
|
#ifdef HWRENDER
|
||||||
if (rendermode == render_opengl)
|
if (rendermode == render_opengl)
|
||||||
{
|
{
|
||||||
window = SDL_CreateWindow("SRB2 "VERSIONSTRING, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
|
flags |= SDL_WINDOW_OPENGL;
|
||||||
realwidth, realheight, flags | SDL_WINDOW_OPENGL);
|
|
||||||
if (window != NULL)
|
|
||||||
{
|
|
||||||
sdlglcontext = SDL_GL_CreateContext(window);
|
|
||||||
if (sdlglcontext == NULL)
|
|
||||||
{
|
|
||||||
SDL_DestroyWindow(window);
|
|
||||||
I_Error("Failed to create a GL context: %s\n", SDL_GetError());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
SDL_GL_MakeCurrent(window, sdlglcontext);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else return SDL_FALSE;
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Create a window
|
||||||
|
window = SDL_CreateWindow("SRB2 "VERSIONSTRING, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
|
||||||
|
realwidth, realheight, flags);
|
||||||
|
|
||||||
|
if (window == NULL)
|
||||||
|
{
|
||||||
|
CONS_Printf(M_GetText("Couldn't create window: %s\n"), SDL_GetError());
|
||||||
|
return SDL_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Renderer-specific stuff
|
||||||
|
#ifdef HWRENDER
|
||||||
|
if (rendermode == render_opengl)
|
||||||
|
{
|
||||||
|
sdlglcontext = SDL_GL_CreateContext(window);
|
||||||
|
if (sdlglcontext == NULL)
|
||||||
|
{
|
||||||
|
SDL_DestroyWindow(window);
|
||||||
|
I_Error("Failed to create a GL context: %s\n", SDL_GetError());
|
||||||
|
}
|
||||||
|
SDL_GL_MakeCurrent(window, sdlglcontext);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
if (rendermode == render_soft)
|
if (rendermode == render_soft)
|
||||||
{
|
{
|
||||||
window = SDL_CreateWindow("SRB2 "VERSIONSTRING, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
|
renderer = SDL_CreateRenderer(window, -1, (usesdl2soft ? SDL_RENDERER_SOFTWARE : 0) | (cv_vidwait.value && !usesdl2soft ? SDL_RENDERER_PRESENTVSYNC : 0));
|
||||||
realwidth, realheight, flags);
|
if (renderer == NULL)
|
||||||
if (window != NULL)
|
|
||||||
{
|
{
|
||||||
renderer = SDL_CreateRenderer(window, -1, (usesdl2soft ? SDL_RENDERER_SOFTWARE : 0) | (cv_vidwait.value && !usesdl2soft ? SDL_RENDERER_PRESENTVSYNC : 0));
|
CONS_Printf(M_GetText("Couldn't create rendering context: %s\n"), SDL_GetError());
|
||||||
if (renderer != NULL)
|
return SDL_FALSE;
|
||||||
{
|
|
||||||
SDL_RenderSetLogicalSize(renderer, BASEVIDWIDTH, BASEVIDHEIGHT);
|
|
||||||
}
|
|
||||||
else return SDL_FALSE;
|
|
||||||
}
|
}
|
||||||
else return SDL_FALSE;
|
SDL_RenderSetLogicalSize(renderer, BASEVIDWIDTH, BASEVIDHEIGHT);
|
||||||
}
|
}
|
||||||
|
|
||||||
return SDL_TRUE;
|
return SDL_TRUE;
|
||||||
|
@ -1620,7 +1288,7 @@ static void Impl_SetWindowIcon(void)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
SDL2STUB();
|
//SDL2STUB(); // Monster Iestyn: why is this stubbed?
|
||||||
SDL_SetWindowIcon(window, icoSurface);
|
SDL_SetWindowIcon(window, icoSurface);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1718,7 +1386,6 @@ void I_StartupGraphics(void)
|
||||||
borderlesswindow = M_CheckParm("-borderless");
|
borderlesswindow = M_CheckParm("-borderless");
|
||||||
|
|
||||||
//SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY>>1,SDL_DEFAULT_REPEAT_INTERVAL<<2);
|
//SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY>>1,SDL_DEFAULT_REPEAT_INTERVAL<<2);
|
||||||
SDLESSet();
|
|
||||||
VID_Command_ModeList_f();
|
VID_Command_ModeList_f();
|
||||||
#ifdef HWRENDER
|
#ifdef HWRENDER
|
||||||
if (M_CheckParm("-opengl") || rendermode == render_opengl)
|
if (M_CheckParm("-opengl") || rendermode == render_opengl)
|
||||||
|
|
Loading…
Reference in a new issue