//=============================================================================
/* VIDEO MENU */
-#define VIDEO_ITEMS 4
+#define VIDEO_ITEMS 5
int video_cursor = 0;
-int video_cursor_table[] = {56, 68, 80, 100};
+int video_cursor_table[] = {56, 68, 80, 100, 120};
// note: if modes are added to the beginning of this list, update the
// video_resolution = x; in M_Menu_Video_f below
unsigned short video_resolutions[][2] = {{320,240}, {400,300}, {512,384}, {640,480}, {800,600}, {1024,768}, {1152,864}, {1280,960}, {1280,1024}, {1600,1200}, {1792,1344}, {1920,1440}, {2048,1536}, {0,0}};
// "Apply" button
M_Print(220, video_cursor_table[3], "Apply");
+ // Vertical Sync
+ M_Print(16, video_cursor_table[4], " Vertical Sync");
+ M_DrawCheckbox(220, video_cursor_table[4], vid_vsync.integer);
+
// Cursor
M_DrawCharacter(200, video_cursor_table[video_cursor], 12+((int)(realtime*4)&1));
}
case 2:
Cvar_SetValueQuick (&vid_fullscreen, !vid_fullscreen.integer);
break;
+
+ case 4:
+ Cvar_SetValueQuick (&vid_vsync, !vid_vsync.integer);
+ break;
}
}
cvar_t vid_height = {CVAR_SAVE, "vid_height", "480"};
cvar_t vid_bitsperpixel = {CVAR_SAVE, "vid_bitsperpixel", "32"};
+cvar_t vid_vsync = {CVAR_SAVE, "vid_vsync", "1"};
cvar_t vid_mouse = {CVAR_SAVE, "vid_mouse", "1"};
cvar_t gl_combine = {CVAR_SAVE, "gl_combine", "1"};
cvar_t gl_finish = {0, "gl_finish", "0"};
Cvar_RegisterVariable(&vid_width);
Cvar_RegisterVariable(&vid_height);
Cvar_RegisterVariable(&vid_bitsperpixel);
+ Cvar_RegisterVariable(&vid_vsync);
Cvar_RegisterVariable(&vid_mouse);
Cvar_RegisterVariable(&gl_combine);
Cvar_RegisterVariable(&gl_finish);
{
HDC hdc;
int vid_usemouse;
+ static int old_vsync = -1;
+
+ if (old_vsync != vid_vsync.integer)
+ {
+ old_vsync = bound(0, vid_vsync.integer, 1);
+ Cvar_SetValueQuick(&vid_vsync, old_vsync);
+ qwglSwapIntervalEXT (old_vsync);
+ }
+
if (r_render.integer && !scr_skipupdate)
{
if (r_speeds.integer || gl_finish.integer)