summaryrefslogtreecommitdiff
path: root/src/i_video.c
diff options
context:
space:
mode:
authorSimon Howard2011-02-12 15:38:08 +0000
committerSimon Howard2011-02-12 15:38:08 +0000
commita9996b41e954d85fde5ec5188bbf6a7f4df88011 (patch)
tree113669ff889c9184aaa28224317c8b04c2c5bfeb /src/i_video.c
parent7d7b5087d2288fc6e2493448968f7d786043b389 (diff)
parenta366f68b2959282b22ab6f08569a253f0540745c (diff)
downloadchocolate-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.c24
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);