foxygit / doom Log in
commit d70c830b4d089e749ff5aa84a3d479be7911995a
Author:     Simon Howard <fraggle@gmail.com>
AuthorDate: Sat Apr 12 17:14:37 2014 -0400
Commit:     Simon Howard <fraggle@gmail.com>
CommitDate: Sat Apr 12 17:14:37 2014 -0400

    video: Change default for screen_bpp to 0.

    Some machines don't work well with 8-bit screen depths any more. It's
    better to default to just using the machine's native color depth
    instead. Change the default to 0 (for SDL_SetVideoMode this means "use
    native color depth"), auto-adjust to native color depth on startup if
    screen_bpp=0 (so that debug messages at least make sense) and document
    for the config file value that a value of zero means "use native".
---
 src/i_video.c       | 15 ++++++++++++++-
 src/m_config.c      |  2 ++
 src/setup/display.c |  2 +-
 3 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/src/i_video.c b/src/i_video.c
index 7c739c17..5debedb8 100644
--- a/src/i_video.c
+++ b/src/i_video.c
@@ -194,7 +194,7 @@ int screen_height = SCREENHEIGHT;

 // Color depth.

-int screen_bpp = 8;
+int screen_bpp = 0;

 // Automatically adjust video settings if the selected mode is
 // not a valid video mode.
@@ -1462,6 +1462,19 @@ static void AutoAdjustColorDepth(void)
     const SDL_VideoInfo *info;
     int flags;

+    // If screen_bpp=0, we should use the current (default) pixel depth.
+    // Fetch it from SDL.
+
+    if (screen_bpp == 0)
+    {
+        info = SDL_GetVideoInfo();
+
+        if (info != NULL && info->vfmt != NULL)
+        {
+            screen_bpp = info->vfmt->BitsPerPixel;
+        }
+    }
+
     if (fullscreen)
     {
         flags = SDL_FULLSCREEN;
diff --git a/src/m_config.c b/src/m_config.c
index 8bfbde9f..02817041 100644
--- a/src/m_config.c
+++ b/src/m_config.c
@@ -747,6 +747,8 @@ static default_t extra_defaults_list[] =

     //!
     // Color depth of the screen, in bits.
+    // If this is set to zero, the color depth will be automatically set
+    // on startup to the machine's default/native color depth.
     //

     CONFIG_VARIABLE_INT(screen_bpp),
diff --git a/src/setup/display.c b/src/setup/display.c
index da440fce..4e2231d7 100644
--- a/src/setup/display.c
+++ b/src/setup/display.c
@@ -106,7 +106,7 @@ static int aspect_ratio_correct = 1;
 static int fullscreen = 1;
 static int screen_width = 320;
 static int screen_height = 200;
-static int screen_bpp = 8;
+static int screen_bpp = 0;
 static int startup_delay = 1000;
 static int usegamma = 0;