diff options
author | Simon Howard | 2011-02-12 15:38:08 +0000 |
---|---|---|
committer | Simon Howard | 2011-02-12 15:38:08 +0000 |
commit | a9996b41e954d85fde5ec5188bbf6a7f4df88011 (patch) | |
tree | 113669ff889c9184aaa28224317c8b04c2c5bfeb /src/i_video.c | |
parent | 7d7b5087d2288fc6e2493448968f7d786043b389 (diff) | |
parent | a366f68b2959282b22ab6f08569a253f0540745c (diff) | |
download | chocolate-doom-a9996b41e954d85fde5ec5188bbf6a7f4df88011.tar.gz chocolate-doom-a9996b41e954d85fde5ec5188bbf6a7f4df88011.tar.bz2 chocolate-doom-a9996b41e954d85fde5ec5188bbf6a7f4df88011.zip |
Merge from trunk.
Subversion-branch: /branches/raven-branch
Subversion-revision: 2258
Diffstat (limited to 'src/i_video.c')
-rw-r--r-- | src/i_video.c | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/src/i_video.c b/src/i_video.c index 243663d5..9d70e88e 100644 --- a/src/i_video.c +++ b/src/i_video.c @@ -148,7 +148,7 @@ static char *window_title = ""; // This is used when we are rendering in 32-bit screen mode. // When in a real 8-bit screen mode, screenbuffer == screen. -static SDL_Surface *screenbuffer; +static SDL_Surface *screenbuffer = NULL; // palette @@ -1625,7 +1625,7 @@ static void CheckCommandLine(void) // Specify the screen width, in pixels. // - i = M_CheckParm("-width"); + i = M_CheckParmWithArgs("-width", 1); if (i > 0) { @@ -1639,7 +1639,7 @@ static void CheckCommandLine(void) // Specify the screen height, in pixels. // - i = M_CheckParm("-height"); + i = M_CheckParmWithArgs("-height", 1); if (i > 0) { @@ -1653,7 +1653,7 @@ static void CheckCommandLine(void) // Specify the color depth of the screen, in bits per pixel. // - i = M_CheckParm("-bpp"); + i = M_CheckParmWithArgs("-bpp", 1); if (i > 0) { @@ -1680,7 +1680,7 @@ static void CheckCommandLine(void) // Specify the screen mode (when running fullscreen) or the window // dimensions (when running in windowed mode). - i = M_CheckParm("-geometry"); + i = M_CheckParmWithArgs("-geometry", 1); if (i > 0) { @@ -1851,6 +1851,14 @@ static void SetVideoMode(screen_mode_t *mode, int w, int h) doompal = W_CacheLumpName(DEH_String("PLAYPAL"), PU_CACHE); + // If we are already running and in a true color mode, we need + // to free the screenbuffer surface before setting the new mode. + + if (screenbuffer != NULL && screen != screenbuffer) + { + SDL_FreeSurface(screenbuffer); + } + // Generate lookup tables before setting the video mode. if (mode != NULL && mode->InitMode != NULL) @@ -1873,7 +1881,13 @@ static void SetVideoMode(screen_mode_t *mode, int w, int h) } else { + // In windowed mode, the window can be resized while the game is + // running. This feature is disabled on OS X, as it adds an ugly + // scroll handle to the corner of the screen. + +#ifndef __MACOSX__ flags |= SDL_RESIZABLE; +#endif } screen = SDL_SetVideoMode(w, h, screen_bpp, flags); |