]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - mvm_cmds.c
vid_desktopfullscreen improvements; allow querying the desktop mode
[xonotic/darkplaces.git] / mvm_cmds.c
index 9a23640177f038636f3b38109af6426bd6e656fa..0e828304f72e4e3777840e47a35077ee2d2d403b 100644 (file)
@@ -176,12 +176,28 @@ static void VM_M_getresolution(prvm_prog_t *prog)
 
        fs = ((prog->argc <= 1) || ((int)PRVM_G_FLOAT(OFS_PARM1)));
 
-       if(nr < 0 || nr >= (fs ? video_resolutions_count : video_resolutions_hardcoded_count))
+       if(nr < -1 || nr >= (fs ? video_resolutions_count : video_resolutions_hardcoded_count))
        {
                PRVM_G_VECTOR(OFS_RETURN)[0] = 0;
                PRVM_G_VECTOR(OFS_RETURN)[1] = 0;
                PRVM_G_VECTOR(OFS_RETURN)[2] = 0;
        }
+       else if(nr == -1)
+       {
+               vid_mode_t *m = VID_GetDesktopMode();
+               if (m)
+               {
+                       PRVM_G_VECTOR(OFS_RETURN)[0] = m->width;
+                       PRVM_G_VECTOR(OFS_RETURN)[1] = m->height;
+                       PRVM_G_VECTOR(OFS_RETURN)[2] = m->pixelheight_num / (prvm_vec_t) m->pixelheight_denom;
+               }
+               else
+               {
+                       PRVM_G_VECTOR(OFS_RETURN)[0] = 0;
+                       PRVM_G_VECTOR(OFS_RETURN)[1] = 0;
+                       PRVM_G_VECTOR(OFS_RETURN)[2] = 0;
+               }
+       }
        else
        {
                video_resolution_t *r = &((fs ? video_resolutions : video_resolutions_hardcoded)[nr]);