foxygit / doom Log in
commit f8459dfd65a3b8aa0457c45516ace2db51d2845f
Author:     Mike Swanson <mikeonthecomputer@gmail.com>
AuthorDate: Sun Oct 19 00:38:36 2014 -0700
Commit:     Mike Swanson <mikeonthecomputer@gmail.com>
CommitDate: Sun Oct 19 00:38:36 2014 -0700

    allow -geometry to specify fullscreen or windowed modes, like PrBoom

    This allows strings like "640x480w" to cause the engine to run in a
    window, while strings like "1280x800f" cause the engine to run in
    fullscreen mode.  This is inspired by the behavior of the PrBoom
    -geometry parameter.
---
 src/i_video.c | 22 +++++++++++++++++-----
 1 file changed, 17 insertions(+), 5 deletions(-)

diff --git a/src/i_video.c b/src/i_video.c
index b410a096..b7175db3 100644
--- a/src/i_video.c
+++ b/src/i_video.c
@@ -1691,21 +1691,33 @@ void I_GraphicsCheckCommandLine(void)

     //!
     // @category video
-    // @arg <WxY>
+    // @arg <WxY>[wf]
     //
-    // Specify the screen mode (when running fullscreen) or the window
-    // dimensions (when running in windowed mode).
+    // Specify the dimensions of the window or fullscreen mode.  An
+    // optional letter of w or f appended to the dimensions selects
+    // windowed or fullscreen mode.

     i = M_CheckParmWithArgs("-geometry", 1);

     if (i > 0)
     {
-        int w, h;
+        int w, h, s;
+        char f;

-        if (sscanf(myargv[i + 1], "%ix%i", &w, &h) == 2)
+        s = sscanf(myargv[i + 1], "%ix%i%1c", &w, &h, &f);
+        if (s == 2 || s == 3)
         {
             screen_width = w;
             screen_height = h;
+
+            if (s == 3 && f == 'f')
+            {
+                fullscreen = true;
+            }
+            else if (f == 'w')
+            {
+                fullscreen = false;
+            }
         }
     }