Clean up sdl_inited mess.

This commit is contained in:
theoddone33
2002-03-02 19:49:50 +00:00
parent 0c848d2ea8
commit e9d6466a65

View File

@@ -9,6 +9,7 @@
typedef enum typedef enum
{ FALSE = 0, TRUE = !FALSE } { FALSE = 0, TRUE = !FALSE }
BOOL; BOOL;
typedef enum vidstate_e { vid_null, vid_none, vid_soft, vid_gl } vidstate_t;
typedef Uint32 UINT32; typedef Uint32 UINT32;
typedef long long _int64; typedef long long _int64;
typedef long long LARGE_INTEGER; typedef long long LARGE_INTEGER;
@@ -34,7 +35,7 @@ int SurfaceX, SurfaceY;
static DWORD WindowWidth = 256; static DWORD WindowWidth = 256;
static DWORD WindowHeight = 224; static DWORD WindowHeight = 224;
static DWORD FullScreen = 0; static DWORD FullScreen = 0;
static int sdl_inited = 0; static vidstate_t sdl_state = vid_null;
static int UseOpenGL = 0; static int UseOpenGL = 0;
extern unsigned char cvidmode; extern unsigned char cvidmode;
DWORD BitDepth = 16; DWORD BitDepth = 16;
@@ -569,7 +570,7 @@ int startgame(void)
{ {
int status; int status;
if (!sdl_inited) if (sdl_state != vid_null)
{ {
if (SDL_Init(SDL_INIT_AUDIO | SDL_INIT_TIMER | if (SDL_Init(SDL_INIT_AUDIO | SDL_INIT_TIMER |
SDL_INIT_VIDEO | SDL_INIT_JOYSTICK) < 0) SDL_INIT_VIDEO | SDL_INIT_JOYSTICK) < 0)
@@ -577,12 +578,12 @@ int startgame(void)
fprintf(stderr, "Could not initialize SDL!\n"); fprintf(stderr, "Could not initialize SDL!\n");
return FALSE; return FALSE;
} }
sdl_inited = -1; sdl_state = vid_none;
} }
if (sdl_inited == 1) sw_end(); if (sdl_state == vid_soft) sw_end();
#ifdef __OPENGL__ #ifdef __OPENGL__
else if (sdl_inited == 2) gl_end(); else if (sdl_state == vid_gl) gl_end();
if (UseOpenGL) if (UseOpenGL)
{ {
@@ -595,13 +596,13 @@ int startgame(void)
} }
if (!status) return FALSE; if (!status) return FALSE;
sdl_inited = UseOpenGL + 1; sdl_state = (UseOpenGL ? vid_gl : vid_soft);
return TRUE; return TRUE;
} }
void LinuxExit(void) void LinuxExit(void)
{ {
if (sdl_inited) if (sdl_state != vid_null)
{ {
SDL_WM_GrabInput(SDL_GRAB_OFF); // probably redundant SDL_WM_GrabInput(SDL_GRAB_OFF); // probably redundant
SDL_Quit(); SDL_Quit();
@@ -754,7 +755,11 @@ void initwinvideo(void)
if (startgame() != TRUE) if (startgame() != TRUE)
{ {
/* Exit zsnes if SDL could not be initialized */
if (sdl_state == vid_null)
LinuxExit (); LinuxExit ();
else
return;
} }
if (newmode == 1) if (newmode == 1)
@@ -946,7 +951,9 @@ void UpdateVFrame(void)
void clearwin() void clearwin()
{ {
if (!sdl_inited) return; /* If we're vid_null and we get here, there's a problem */
/* elsewhere - DDOI */
if (sdl_state == vid_none) return;
#ifdef __OPENGL__ #ifdef __OPENGL__
if (UseOpenGL) if (UseOpenGL)
@@ -958,6 +965,9 @@ void clearwin()
void drawscreenwin(void) void drawscreenwin(void)
{ {
/* Just in case - DDOI */
if (sdl_state == vid_none) return;
#ifdef __OPENGL__ #ifdef __OPENGL__
if (UseOpenGL) if (UseOpenGL)
gl_drawwin(); gl_drawwin();