mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-25 03:00:46 +00:00
Clean up sdlayer a bit
git-svn-id: https://svn.eduke32.com/eduke32@4432 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
82f5a3f39c
commit
45dec87cf0
1 changed files with 167 additions and 158 deletions
|
@ -18,7 +18,7 @@
|
|||
#include "build.h"
|
||||
#include "osd.h"
|
||||
|
||||
#if (SDL_MAJOR_VERSION == 1 && SDL_MINOR_VERSION < 3) // SDL 1.2
|
||||
#if SDL_MAJOR_VERSION==1 // SDL 1.2
|
||||
// for SDL_WaitEventTimeout defined below
|
||||
#include <SDL/SDL_events.h>
|
||||
#endif
|
||||
|
@ -70,6 +70,7 @@ char quitevent=0, appactive=1, novideo=0;
|
|||
// video
|
||||
static SDL_Surface *sdl_surface/*=NULL*/;
|
||||
static SDL_Surface *sdl_buffersurface=NULL;
|
||||
|
||||
#if SDL_MAJOR_VERSION==2
|
||||
static SDL_Palette *sdl_palptr=NULL;
|
||||
static SDL_Window *sdl_window=NULL;
|
||||
|
@ -77,6 +78,7 @@ static SDL_GLContext sdl_context=NULL;
|
|||
static SDL_Texture *sdl_texture=NULL;
|
||||
static SDL_Renderer *sdl_renderer=NULL;
|
||||
#endif
|
||||
|
||||
int32_t xres=-1, yres=-1, bpp=0, fullscreen=0, bytesperline;
|
||||
intptr_t frameplace=0;
|
||||
int32_t lockcount=0;
|
||||
|
@ -119,17 +121,13 @@ HWND win_gethwnd(void)
|
|||
|
||||
#if SDL_MAJOR_VERSION==1
|
||||
if (SDL_GetWMInfo(&wmInfo) != 1)
|
||||
#else
|
||||
if (SDL_GetWindowWMInfo(sdl_window, &wmInfo) != SDL_TRUE)
|
||||
#endif
|
||||
{
|
||||
// initprintf("win_gethwnd: SDL_GetWindowWMInfo() failed: %s\n", SDL_GetError());
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if SDL_MAJOR_VERSION==1
|
||||
return wmInfo.window;
|
||||
#else
|
||||
if (SDL_GetWindowWMInfo(sdl_window, &wmInfo) != SDL_TRUE)
|
||||
return 0;
|
||||
|
||||
if (wmInfo.subsystem == SDL_SYSWM_WINDOWS)
|
||||
return wmInfo.info.win.window;
|
||||
#endif
|
||||
|
@ -294,7 +292,7 @@ void setvsync(int32_t sync)
|
|||
if (vsync_render == sync) return;
|
||||
vsync_render = sync;
|
||||
|
||||
# if (SDL_MAJOR_VERSION == 1 && SDL_MINOR_VERSION < 3)
|
||||
# if SDL_MAJOR_VERSION == 1
|
||||
resetvideomode();
|
||||
if (setgamemode(fullscreen,xdim,ydim,bpp))
|
||||
OSD_Printf("restartvid: Reset failed...\n");
|
||||
|
@ -600,19 +598,25 @@ int32_t initinput(void)
|
|||
mousegrab = 0;
|
||||
|
||||
memset(key_names,0,sizeof(key_names));
|
||||
#if (SDL_MAJOR_VERSION == 1 && SDL_MINOR_VERSION < 3)
|
||||
for (i=0; i<SDLK_LAST; i++)
|
||||
{
|
||||
if (!keytranslation[i]) continue;
|
||||
Bstrncpyz(key_names[ keytranslation[i] ], SDL_GetKeyName((SDLKey)i), sizeof(key_names[i]));
|
||||
}
|
||||
|
||||
|
||||
#if SDL_MAJOR_VERSION == 1
|
||||
i = SDLK_LAST-1;
|
||||
#else
|
||||
for (i=0; i<SDL_NUM_SCANCODES; i++)
|
||||
i = SDL_NUM_SCANCODES-1;
|
||||
#endif
|
||||
|
||||
for (; i>=0; i--)
|
||||
{
|
||||
if (!keytranslation[i]) continue;
|
||||
Bstrncpyz(key_names[ keytranslation[i] ], SDL_GetKeyName(SDL_SCANCODE_TO_KEYCODE(i)), sizeof(key_names[i]));
|
||||
}
|
||||
Bstrncpyz(key_names[ keytranslation[i] ],
|
||||
#if SDL_MAJOR_VERSION == 1
|
||||
SDL_GetKeyName((SDLKey)i),
|
||||
#else
|
||||
SDL_GetKeyName(SDL_SCANCODE_TO_KEYCODE(i)),
|
||||
#endif
|
||||
sizeof(key_names[i]));
|
||||
}
|
||||
|
||||
if (!SDL_InitSubSystem(SDL_INIT_JOYSTICK))
|
||||
{
|
||||
|
@ -798,6 +802,7 @@ void uninitmouse(void)
|
|||
|
||||
static inline char grabmouse_low(char a)
|
||||
{
|
||||
#if !defined __ANDROID__ && (!defined DEBUGGINGAIDS || defined _WIN32 || defined __APPLE__)
|
||||
#if SDL_MAJOR_VERSION==1
|
||||
SDL_ShowCursor(a ? SDL_DISABLE : SDL_ENABLE);
|
||||
return (SDL_WM_GrabInput(a ? SDL_GRAB_ON : SDL_GRAB_OFF) != (a ? SDL_GRAB_ON : SDL_GRAB_OFF));
|
||||
|
@ -808,6 +813,7 @@ static inline char grabmouse_low(char a)
|
|||
SDL_SetWindowGrab(sdl_window, a ? SDL_TRUE : SDL_FALSE);
|
||||
return SDL_SetRelativeMouseMode(a ? SDL_TRUE : SDL_FALSE);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
//
|
||||
|
@ -950,7 +956,7 @@ uint32_t getticks(void)
|
|||
// high-resolution timers for profiling
|
||||
uint64_t getu64ticks(void)
|
||||
{
|
||||
#if (SDL_MAJOR_VERSION == 1 && SDL_MINOR_VERSION < 3) // SDL 1.2
|
||||
#if (SDL_MAJOR_VERSION == 1) // SDL 1.2
|
||||
# if defined _WIN32
|
||||
return win_getu64ticks();
|
||||
# elif defined __APPLE__
|
||||
|
@ -974,14 +980,14 @@ uint64_t getu64ticks(void)
|
|||
# pragma message "Using low-resolution (1ms) timer for getu64ticks. Profiling will work badly."
|
||||
return SDL_GetTicks();
|
||||
# endif
|
||||
#else
|
||||
#else // SDL 2.0
|
||||
return SDL_GetPerformanceCounter();
|
||||
#endif
|
||||
}
|
||||
|
||||
uint64_t getu64tickspersec(void)
|
||||
{
|
||||
#if (SDL_MAJOR_VERSION == 1 && SDL_MINOR_VERSION < 3) // SDL 1.2
|
||||
#if (SDL_MAJOR_VERSION == 1) // SDL 1.2
|
||||
# if defined _WIN32
|
||||
return win_timerfreq;
|
||||
# elif defined __APPLE__
|
||||
|
@ -996,7 +1002,7 @@ uint64_t getu64tickspersec(void)
|
|||
# else
|
||||
return 1000;
|
||||
# endif
|
||||
#else // SDL 1.3
|
||||
#else // SDL 2.0
|
||||
return SDL_GetPerformanceFrequency();
|
||||
#endif
|
||||
}
|
||||
|
@ -1061,17 +1067,39 @@ static int sortmodes(const void *a_, const void *b_)
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define ADDMODE(x,y,c,f) do { \
|
||||
if (validmodecnt<MAXVALIDMODES) { \
|
||||
int32_t mn; \
|
||||
for(mn=0;mn<validmodecnt;mn++) \
|
||||
if (validmode[mn].xdim==x && validmode[mn].ydim==y && \
|
||||
validmode[mn].bpp==c && validmode[mn].fs==f) break; \
|
||||
if (mn==validmodecnt) { \
|
||||
validmode[validmodecnt].xdim=x; \
|
||||
validmode[validmodecnt].ydim=y; \
|
||||
validmode[validmodecnt].bpp=c; \
|
||||
validmode[validmodecnt].fs=f; \
|
||||
validmodecnt++; \
|
||||
/*initprintf(" - %dx%d %d-bit %s\n", x, y, c, (f&1)?"fullscreen":"windowed");*/ \
|
||||
} \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define CHECK(w,h) if ((w < maxx) && (h < maxy))
|
||||
|
||||
|
||||
static char modeschecked=0;
|
||||
|
||||
#if SDL_MAJOR_VERSION==1
|
||||
void getvalidmodes(void)
|
||||
{
|
||||
int32_t i, maxx=0, maxy=0;
|
||||
#if SDL_MAJOR_VERSION==1
|
||||
int32_t j;
|
||||
static int32_t cdepths[] =
|
||||
static int32_t cdepths [] =
|
||||
{
|
||||
8,
|
||||
#ifdef USE_OPENGL
|
||||
16,24,32,
|
||||
16, 24, 32,
|
||||
#endif
|
||||
0
|
||||
};
|
||||
|
@ -1081,36 +1109,13 @@ void getvalidmodes(void)
|
|||
pf.palette = NULL;
|
||||
pf.BitsPerPixel = 8;
|
||||
pf.BytesPerPixel = 1;
|
||||
#else
|
||||
SDL_DisplayMode dispmode;
|
||||
#endif
|
||||
|
||||
if (modeschecked || novideo) return;
|
||||
|
||||
validmodecnt=0;
|
||||
// initprintf("Detecting video modes:\n");
|
||||
|
||||
#define ADDMODE(x,y,c,f) do { \
|
||||
if (validmodecnt<MAXVALIDMODES) { \
|
||||
int32_t mn; \
|
||||
for(mn=0;mn<validmodecnt;mn++) \
|
||||
if (validmode[mn].xdim==x && validmode[mn].ydim==y && \
|
||||
validmode[mn].bpp==c && validmode[mn].fs==f) break; \
|
||||
if (mn==validmodecnt) { \
|
||||
validmode[validmodecnt].xdim=x; \
|
||||
validmode[validmodecnt].ydim=y; \
|
||||
validmode[validmodecnt].bpp=c; \
|
||||
validmode[validmodecnt].fs=f; \
|
||||
validmodecnt++; \
|
||||
/*initprintf(" - %dx%d %d-bit %s\n", x, y, c, (f&1)?"fullscreen":"windowed");*/ \
|
||||
} \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define CHECK(w,h) if ((w < maxx) && (h < maxy))
|
||||
// initprintf("Detecting video modes:\n");
|
||||
|
||||
// do fullscreen modes first
|
||||
#if SDL_MAJOR_VERSION==1
|
||||
for (j=0; cdepths[j]; j++)
|
||||
{
|
||||
# ifdef USE_OPENGL
|
||||
|
@ -1122,16 +1127,16 @@ void getvalidmodes(void)
|
|||
// We convert paletted contents to non-paletted
|
||||
modes = SDL_ListModes((cdepths[j] == 8) ? NULL : &pf, SURFACE_FLAGS | SDL_FULLSCREEN);
|
||||
|
||||
if (modes == (SDL_Rect **)0)
|
||||
if (modes == (SDL_Rect **) 0)
|
||||
{
|
||||
if (cdepths[j] > 8) cdepths[j] = -1;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (modes == (SDL_Rect **)-1)
|
||||
if (modes == (SDL_Rect **) -1)
|
||||
{
|
||||
for (i=0; defaultres[i][0]; i++)
|
||||
ADDMODE(defaultres[i][0],defaultres[i][1],cdepths[j],1);
|
||||
ADDMODE(defaultres[i][0], defaultres[i][1], cdepths[j], 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1149,7 +1154,43 @@ void getvalidmodes(void)
|
|||
}
|
||||
}
|
||||
}
|
||||
#else // here SDL_MAJOR_VERSION==2
|
||||
|
||||
if (maxx == 0 && maxy == 0)
|
||||
{
|
||||
initprintf("No fullscreen modes available!\n");
|
||||
maxx = MAXXDIM; maxy = MAXYDIM;
|
||||
}
|
||||
|
||||
// add windowed modes next
|
||||
for (j=0; cdepths[j]; j++)
|
||||
{
|
||||
#ifdef USE_OPENGL
|
||||
if (nogl && cdepths[j] > 8) continue;
|
||||
#endif
|
||||
if (cdepths[j] < 0) continue;
|
||||
for (i=0; defaultres[i][0]; i++)
|
||||
CHECK(defaultres[i][0], defaultres[i][1])
|
||||
ADDMODE(defaultres[i][0], defaultres[i][1], cdepths[j], 0);
|
||||
}
|
||||
|
||||
qsort((void *) validmode, validmodecnt, sizeof(struct validmode_t), &sortmodes);
|
||||
|
||||
modeschecked=1;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
void getvalidmodes(void)
|
||||
{
|
||||
int32_t i, maxx=0, maxy=0;
|
||||
SDL_DisplayMode dispmode;
|
||||
|
||||
if (modeschecked || novideo) return;
|
||||
|
||||
validmodecnt=0;
|
||||
// initprintf("Detecting video modes:\n");
|
||||
|
||||
// do fullscreen modes first
|
||||
for (i=0; i<SDL_GetNumDisplayModes(0); i++)
|
||||
{
|
||||
SDL_GetDisplayMode(0, i, &dispmode);
|
||||
|
@ -1167,7 +1208,6 @@ void getvalidmodes(void)
|
|||
maxy = dispmode.h;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
if (maxx == 0 && maxy == 0)
|
||||
{
|
||||
initprintf("No fullscreen modes available!\n");
|
||||
|
@ -1175,39 +1215,26 @@ void getvalidmodes(void)
|
|||
}
|
||||
|
||||
// add windowed modes next
|
||||
#if SDL_MAJOR_VERSION==1
|
||||
for (j=0; cdepths[j]; j++)
|
||||
{
|
||||
#ifdef USE_OPENGL
|
||||
if (nogl && cdepths[j] > 8) continue;
|
||||
#endif
|
||||
if (cdepths[j] < 0) continue;
|
||||
for (i=0; defaultres[i][0]; i++)
|
||||
CHECK(defaultres[i][0],defaultres[i][1])
|
||||
ADDMODE(defaultres[i][0],defaultres[i][1],cdepths[j],0);
|
||||
}
|
||||
#else // here SDL_MAJOR_VERSION==2
|
||||
for (i=0; defaultres[i][0]; i++)
|
||||
CHECK(defaultres[i][0],defaultres[i][1])
|
||||
{
|
||||
CHECK(defaultres[i][0], defaultres[i][1])
|
||||
{
|
||||
// HACK: 8-bit == Software, 32-bit == OpenGL
|
||||
ADDMODE(defaultres[i][0],defaultres[i][1],8,0);
|
||||
ADDMODE(defaultres[i][0], defaultres[i][1], 8, 0);
|
||||
#ifdef USE_OPENGL
|
||||
if (!nogl)
|
||||
ADDMODE(defaultres[i][0],defaultres[i][1],32,0);
|
||||
ADDMODE(defaultres[i][0], defaultres[i][1], 32, 0);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
qsort((void *) validmode, validmodecnt, sizeof(struct validmode_t), &sortmodes);
|
||||
|
||||
modeschecked=1;
|
||||
}
|
||||
#endif
|
||||
|
||||
#undef CHECK
|
||||
#undef ADDMODE
|
||||
|
||||
qsort((void *)validmode, validmodecnt, sizeof(struct validmode_t), &sortmodes);
|
||||
|
||||
modeschecked=1;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// checkvideomode() -- makes sure the video mode passed is legal
|
||||
//
|
||||
|
@ -1305,7 +1332,7 @@ int32_t setvideomode(int32_t x, int32_t y, int32_t c, int32_t fs)
|
|||
int32_t regrab = 0;
|
||||
#ifdef USE_OPENGL
|
||||
static int32_t warnonce = 0;
|
||||
# if (SDL_MAJOR_VERSION == 1 && SDL_MINOR_VERSION < 3)
|
||||
# if (SDL_MAJOR_VERSION == 1)
|
||||
static int32_t ovsync = 1;
|
||||
# endif
|
||||
#endif
|
||||
|
@ -1376,7 +1403,7 @@ int32_t setvideomode(int32_t x, int32_t y, int32_t c, int32_t fs)
|
|||
{ SDL_GL_MULTISAMPLEBUFFERS, glmultisample > 0 },
|
||||
{ SDL_GL_MULTISAMPLESAMPLES, glmultisample },
|
||||
{ SDL_GL_STENCIL_SIZE, 1 },
|
||||
# if (SDL_MAJOR_VERSION == 1 && SDL_MINOR_VERSION < 3)
|
||||
# if SDL_MAJOR_VERSION == 1
|
||||
{ SDL_GL_SWAP_CONTROL, vsync_render },
|
||||
# endif
|
||||
};
|
||||
|
@ -1407,7 +1434,7 @@ int32_t setvideomode(int32_t x, int32_t y, int32_t c, int32_t fs)
|
|||
/* HACK: changing SDL GL attribs only works before surface creation,
|
||||
so we have to create a new surface in a different format first
|
||||
to force the surface we WANT to be recreated instead of reused. */
|
||||
# if (SDL_MAJOR_VERSION == 1 && SDL_MINOR_VERSION < 3)
|
||||
# if SDL_MAJOR_VERSION == 1
|
||||
if (vsync_render != ovsync)
|
||||
{
|
||||
if (sdl_surface)
|
||||
|
@ -1464,7 +1491,7 @@ int32_t setvideomode(int32_t x, int32_t y, int32_t c, int32_t fs)
|
|||
#endif // defined USE_OPENGL
|
||||
{
|
||||
initprintf("Setting video mode %dx%d (%d-bpp %s)\n",
|
||||
x,y,c, ((fs&1) ? "fullscreen" : "windowed"));
|
||||
x, y, c, ((fs&1) ? "fullscreen" : "windowed"));
|
||||
#if SDL_MAJOR_VERSION==1
|
||||
// We convert paletted contents to non-paletted
|
||||
sdl_surface = SDL_SetVideoMode(x, y, 0, SURFACE_FLAGS | ((fs&1)?SDL_FULLSCREEN:0));
|
||||
|
@ -1477,61 +1504,52 @@ int32_t setvideomode(int32_t x, int32_t y, int32_t c, int32_t fs)
|
|||
if (!sdl_buffersurface)
|
||||
{
|
||||
initprintf("Unable to set video mode: SDL_CreateRGBSurface failed: %s\n",
|
||||
SDL_GetError());
|
||||
SDL_GetError());
|
||||
return -1;
|
||||
}
|
||||
#else
|
||||
|
||||
#define SDL2_VIDEO_ERR(XX) { initprintf("Unable to set video mode: " XX " failed: %s\n", SDL_GetError()); destroy_window_resources(); return -1; }
|
||||
#define SDL2_VIDEO_FALLBACK(XX) { initprintf("Falling back to SDL_GetWindowSurface: " XX " failed: %s\n", SDL_GetError()); }
|
||||
#define SDL2_RENDERER_DESTROY(XX) SDL_DestroyRenderer(XX), XX = NULL
|
||||
|
||||
// init
|
||||
sdl_window = SDL_CreateWindow("", SDL_WINDOWPOS_UNDEFINED,SDL_WINDOWPOS_UNDEFINED,
|
||||
x,y, ((fs&1)?SDL_WINDOW_FULLSCREEN:0));
|
||||
sdl_window = SDL_CreateWindow("", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,
|
||||
x, y, ((fs&1) ? SDL_WINDOW_FULLSCREEN : 0));
|
||||
if (!sdl_window)
|
||||
{
|
||||
initprintf("Unable to set video mode: SDL_CreateWindow failed: %s\n",
|
||||
SDL_GetError());
|
||||
return -1;
|
||||
}
|
||||
SDL2_VIDEO_ERR("SDL_CreateWindow");
|
||||
|
||||
sdl_renderer = SDL_CreateRenderer(sdl_window, -1, 0);
|
||||
if (!sdl_renderer)
|
||||
{
|
||||
initprintf("Falling back to SDL_GetWindowSurface: SDL_CreateRenderer failed: %s\n",
|
||||
SDL_GetError());
|
||||
}
|
||||
SDL2_VIDEO_FALLBACK("SDL_CreateRenderer")
|
||||
else
|
||||
{
|
||||
SDL_RendererInfo sdl_rendererinfo;
|
||||
SDL_GetRendererInfo(sdl_renderer, &sdl_rendererinfo);
|
||||
if (sdl_rendererinfo.flags & SDL_RENDERER_SOFTWARE) // this would be useless
|
||||
{
|
||||
SDL_DestroyRenderer(sdl_renderer);
|
||||
sdl_renderer = NULL;
|
||||
}
|
||||
SDL2_RENDERER_DESTROY(sdl_renderer);
|
||||
else
|
||||
{
|
||||
sdl_texture = SDL_CreateTexture(sdl_renderer, SDL_PIXELFORMAT_ARGB8888,
|
||||
SDL_TEXTUREACCESS_STATIC, x, y);
|
||||
SDL_TEXTUREACCESS_STATIC, x, y);
|
||||
if (!sdl_texture)
|
||||
{
|
||||
initprintf("Falling back to SDL_GetWindowSurface: SDL_CreateTexture failed: %s\n",
|
||||
SDL_GetError());
|
||||
SDL_DestroyRenderer(sdl_renderer);
|
||||
sdl_renderer = NULL;
|
||||
SDL2_VIDEO_FALLBACK("SDL_CreateTexture");
|
||||
SDL2_RENDERER_DESTROY(sdl_renderer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (sdl_renderer && sdl_texture)
|
||||
{
|
||||
sdl_surface = SDL_CreateRGBSurface(0, x, y, 32, 0, 0, 0, 0);
|
||||
if (!sdl_surface)
|
||||
if (sdl_texture)
|
||||
{
|
||||
initprintf("Falling back to SDL_GetWindowSurface: SDL_CreateRGBSurface failed: %s\n",
|
||||
SDL_GetError());
|
||||
SDL_DestroyTexture(sdl_texture);
|
||||
sdl_texture = NULL;
|
||||
SDL_DestroyRenderer(sdl_renderer);
|
||||
sdl_renderer = NULL;
|
||||
sdl_surface = SDL_CreateRGBSurface(0, x, y, 32, 0, 0, 0, 0);
|
||||
|
||||
if (!sdl_surface)
|
||||
{
|
||||
SDL2_VIDEO_FALLBACK("SDL_CreateRGBSurface");
|
||||
SDL_DestroyTexture(sdl_texture);
|
||||
sdl_texture = NULL;
|
||||
SDL2_RENDERER_DESTROY(sdl_renderer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1539,28 +1557,24 @@ int32_t setvideomode(int32_t x, int32_t y, int32_t c, int32_t fs)
|
|||
{
|
||||
sdl_surface = SDL_GetWindowSurface(sdl_window);
|
||||
if (!sdl_surface)
|
||||
{
|
||||
initprintf("Unable to set video mode: SDL_GetWindowSurface failed: %s\n",
|
||||
SDL_GetError());
|
||||
destroy_window_resources();
|
||||
return -1;
|
||||
}
|
||||
SDL2_VIDEO_ERR("SDL_GetWindowSurface");
|
||||
}
|
||||
|
||||
sdl_buffersurface = SDL_CreateRGBSurface(0, x, y, c, 0, 0, 0, 0);
|
||||
|
||||
if (!sdl_buffersurface)
|
||||
{
|
||||
initprintf("Unable to set video mode: SDL_CreateRGBSurface failed: %s\n",
|
||||
SDL_GetError());
|
||||
destroy_window_resources();
|
||||
return -1;
|
||||
}
|
||||
SDL2_VIDEO_ERR("SDL_CreateRGBSurface");
|
||||
|
||||
if (!sdl_palptr)
|
||||
sdl_palptr = SDL_AllocPalette(256);
|
||||
|
||||
if (SDL_SetSurfacePalette(sdl_buffersurface, sdl_palptr) < 0)
|
||||
initprintf("SDL_SetSurfacePalette failed: %s\n", SDL_GetError());
|
||||
|
||||
#undef SDL2_VIDEO_ERR
|
||||
#undef SDL2_VIDEO_FALLBACK
|
||||
#undef SDL2_RENDERER_DESTROY
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -1593,17 +1607,14 @@ int32_t setvideomode(int32_t x, int32_t y, int32_t c, int32_t fs)
|
|||
//sprintf(t, "%s (%dx%d %s)", apptitle, x, y, ((fs) ? "fullscreen" : "windowed"));
|
||||
#if SDL_MAJOR_VERSION == 1
|
||||
SDL_WM_SetCaption(apptitle, 0);
|
||||
|
||||
if (appicon)
|
||||
SDL_WM_SetIcon(appicon, 0);
|
||||
#else
|
||||
SDL_SetWindowTitle(sdl_window, apptitle);
|
||||
#endif
|
||||
}
|
||||
|
||||
if (appicon)
|
||||
{
|
||||
#if SDL_MAJOR_VERSION==1
|
||||
SDL_WM_SetIcon(appicon, 0);
|
||||
#else
|
||||
SDL_SetWindowIcon(sdl_window, appicon);
|
||||
if (appicon)
|
||||
SDL_SetWindowIcon(sdl_window, appicon);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -1888,11 +1899,11 @@ void showframe(int32_t w)
|
|||
if (palfadedelta)
|
||||
fullscreen_tint_gl(palfadergb.r, palfadergb.g, palfadergb.b, palfadedelta);
|
||||
|
||||
# if SDL_MAJOR_VERSION==1
|
||||
#if SDL_MAJOR_VERSION==1
|
||||
SDL_GL_SwapBuffers();
|
||||
# else
|
||||
#else
|
||||
SDL_GL_SwapWindow(sdl_window);
|
||||
# endif
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
@ -1905,25 +1916,30 @@ void showframe(int32_t w)
|
|||
while (lockcount) enddrawing();
|
||||
}
|
||||
|
||||
#if SDL_MAJOR_VERSION==1
|
||||
// deferred palette updating
|
||||
if (needpalupdate)
|
||||
{
|
||||
#if SDL_MAJOR_VERSION==1
|
||||
SDL_SetColors(sdl_buffersurface, sdlayer_pal, 0, 256);
|
||||
// same as:
|
||||
//SDL_SetPalette(sdl_buffersurface, SDL_LOGPAL|SDL_PHYSPAL, pal, 0, 256);
|
||||
#else
|
||||
if (SDL_SetPaletteColors(sdl_palptr, sdlayer_pal, 0, 256) < 0)
|
||||
initprintf("SDL_SetPaletteColors failed: %s\n", SDL_GetError());
|
||||
#endif
|
||||
needpalupdate = 0;
|
||||
}
|
||||
|
||||
SDL_BlitSurface(sdl_buffersurface, NULL, sdl_surface, NULL);
|
||||
|
||||
#if SDL_MAJOR_VERSION==1
|
||||
SDL_Flip(sdl_surface);
|
||||
#else
|
||||
// deferred palette updating
|
||||
if (needpalupdate)
|
||||
{
|
||||
if (SDL_SetPaletteColors(sdl_palptr, sdlayer_pal, 0, 256) < 0)
|
||||
initprintf("SDL_SetPaletteColors failed: %s\n", SDL_GetError());
|
||||
needpalupdate = 0;
|
||||
}
|
||||
|
||||
SDL_BlitSurface(sdl_buffersurface, NULL, sdl_surface, NULL);
|
||||
|
||||
if (sdl_renderer && sdl_texture)
|
||||
{
|
||||
SDL_UpdateTexture(sdl_texture, NULL, sdl_surface->pixels, sdl_surface->pitch);
|
||||
|
@ -1942,7 +1958,6 @@ void showframe(int32_t w)
|
|||
#endif
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// setpalette() -- set palette values
|
||||
//
|
||||
|
@ -2020,18 +2035,16 @@ int32_t setgamma(void)
|
|||
|
||||
gammaTable[i] = gammaTable[i + 256] = gammaTable[i + 512] = (uint16_t)max(0.f,(double)min(0xffff,val*256));
|
||||
}
|
||||
|
||||
#if SDL_MAJOR_VERSION==1
|
||||
i = SDL_SetGammaRamp(&gammaTable[0],&gammaTable[256],&gammaTable[512]);
|
||||
if (i != -1)
|
||||
#else
|
||||
i = INT32_MIN;
|
||||
if (sdl_window)
|
||||
i = SDL_SetWindowGammaRamp(
|
||||
sdl_window,&gammaTable[0],&gammaTable[256],&gammaTable[512]);
|
||||
#endif
|
||||
|
||||
#if SDL_MAJOR_VERSION==1
|
||||
if (i != -1)
|
||||
#else
|
||||
if (i < 0)
|
||||
{
|
||||
if (i != INT32_MIN)
|
||||
|
@ -2112,7 +2125,7 @@ int32_t handleevents(void)
|
|||
{
|
||||
switch (ev.type)
|
||||
{
|
||||
#if (SDL_MAJOR_VERSION > 1 || (SDL_MAJOR_VERSION == 1 && SDL_MINOR_VERSION > 2))
|
||||
#if SDL_MAJOR_VERSION==2
|
||||
case SDL_TEXTINPUT:
|
||||
j = 0;
|
||||
do
|
||||
|
@ -2221,25 +2234,21 @@ int32_t handleevents(void)
|
|||
{
|
||||
case SDL_WINDOWEVENT_FOCUS_GAINED:
|
||||
appactive = 1;
|
||||
# if !defined DEBUGGINGAIDS || defined _WIN32
|
||||
if (mousegrab && moustat)
|
||||
grabmouse_low(1);
|
||||
# endif
|
||||
# ifdef _WIN32
|
||||
#ifdef _WIN32
|
||||
if (backgroundidle)
|
||||
SetPriorityClass(GetCurrentProcess(), NORMAL_PRIORITY_CLASS);
|
||||
# endif
|
||||
#endif
|
||||
break;
|
||||
case SDL_WINDOWEVENT_FOCUS_LOST:
|
||||
appactive = 0;
|
||||
# if !defined DEBUGGINGAIDS || defined _WIN32
|
||||
if (mousegrab && moustat)
|
||||
grabmouse_low(0);
|
||||
# endif
|
||||
# ifdef _WIN32
|
||||
#ifdef _WIN32
|
||||
if (backgroundidle)
|
||||
SetPriorityClass(GetCurrentProcess(), IDLE_PRIORITY_CLASS);
|
||||
# endif
|
||||
#endif
|
||||
break;
|
||||
case SDL_WINDOWEVENT_MOVED:
|
||||
if (windowpos)
|
||||
|
@ -2251,7 +2260,7 @@ int32_t handleevents(void)
|
|||
}
|
||||
break;
|
||||
// #warning Using SDL 1.3 or 2.X
|
||||
#else // SDL 1.3+ ^^^ | vvv SDL 1.2
|
||||
#else // SDL 2.0 ^^^ | vvv SDL 1.2
|
||||
// #warning Using SDL 1.2
|
||||
case SDL_KEYDOWN:
|
||||
case SDL_KEYUP:
|
||||
|
@ -2500,7 +2509,7 @@ int32_t handleevents(void)
|
|||
return rv;
|
||||
}
|
||||
|
||||
#if (SDL_MAJOR_VERSION == 1 && SDL_MINOR_VERSION < 3) // SDL 1.2
|
||||
#if SDL_MAJOR_VERSION==1 // SDL 1.2
|
||||
// from SDL HG, modified
|
||||
int32_t SDL_WaitEventTimeout(SDL_Event *event, int32_t timeout)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue