vkQuake2 doxygen  1.0 dev
glw_imp.c File Reference
#include <assert.h>
#include <windows.h>
#include "../ref_gl/gl_local.h"
#include "glw_win.h"
#include "winquake.h"

Go to the source code of this file.

Macros

#define WINDOW_CLASS_NAME   "Quake 2"
 
#define OSR2_BUILD_NUMBER   1111
 

Functions

static qboolean GLimp_SwitchFullscreen (int width, int height)
 
qboolean GLimp_InitGL (void)
 
static qboolean VerifyDriver (void)
 
qboolean VID_CreateWindow (int width, int height, qboolean fullscreen)
 
rserr_t GLimp_SetMode (int *pwidth, int *pheight, int mode, qboolean fullscreen)
 
void GLimp_Shutdown (void)
 
qboolean GLimp_Init (void *hinstance, void *wndproc)
 
void GLimp_BeginFrame (float camera_separation)
 
void GLimp_EndFrame (void)
 
void GLimp_AppActivate (qboolean active)
 

Variables

glwstate_t glw_state
 
cvar_tvid_fullscreen
 
cvar_tvid_ref
 

Macro Definition Documentation

◆ OSR2_BUILD_NUMBER

#define OSR2_BUILD_NUMBER   1111

◆ WINDOW_CLASS_NAME

#define WINDOW_CLASS_NAME   "Quake 2"

Definition at line 62 of file glw_imp.c.

Function Documentation

◆ GLimp_AppActivate()

void GLimp_AppActivate ( qboolean  active)

Definition at line 578 of file glw_imp.c.

579 {
580  if ( active )
581  {
582  SetForegroundWindow( glw_state.hWnd );
583  ShowWindow( glw_state.hWnd, SW_RESTORE );
584  }
585  else
586  {
587  if ( vid_fullscreen->value )
588  ShowWindow( glw_state.hWnd, SW_MINIMIZE );
589  }
590 }

Referenced by GetRefAPI().

◆ GLimp_BeginFrame()

void GLimp_BeginFrame ( float  camera_separation)

Definition at line 528 of file glw_imp.c.

529 {
530  if ( gl_bitdepth->modified )
531  {
533  {
534  ri.Cvar_SetValue( "gl_bitdepth", 0 );
535  ri.Con_Printf( PRINT_ALL, "gl_bitdepth requires Win95 OSR2.x or WinNT 4.x\n" );
536  }
537  gl_bitdepth->modified = false;
538  }
539 
540  if ( camera_separation < 0 && gl_state.stereo_enabled )
541  {
542  qglDrawBuffer( GL_BACK_LEFT );
543  }
544  else if ( camera_separation > 0 && gl_state.stereo_enabled )
545  {
546  qglDrawBuffer( GL_BACK_RIGHT );
547  }
548  else
549  {
550  qglDrawBuffer( GL_BACK );
551  }
552 }

Referenced by R_BeginFrame().

◆ GLimp_EndFrame()

void GLimp_EndFrame ( void  )

Definition at line 561 of file glw_imp.c.

562 {
563  int err;
564 
565  err = qglGetError();
566  assert( err == GL_NO_ERROR );
567 
568  if ( stricmp( gl_drawbuffer->string, "GL_BACK" ) == 0 )
569  {
570  if ( !qwglSwapBuffers( glw_state.hDC ) )
571  ri.Sys_Error( ERR_FATAL, "GLimp_EndFrame() - SwapBuffers() failed!\n" );
572  }
573 }

Referenced by GetRefAPI(), and GL_DrawStereoPattern().

◆ GLimp_Init()

qboolean GLimp_Init ( void hinstance,
void wndproc 
)

Definition at line 321 of file glw_imp.c.

322 {
323 #define OSR2_BUILD_NUMBER 1111
324 
325  OSVERSIONINFO vinfo;
326 
327  vinfo.dwOSVersionInfoSize = sizeof(vinfo);
328 
330 
331  if ( GetVersionEx( &vinfo) )
332  {
333  if ( vinfo.dwMajorVersion > 4 )
334  {
336  }
337  else if ( vinfo.dwMajorVersion == 4 )
338  {
339  if ( vinfo.dwPlatformId == VER_PLATFORM_WIN32_NT )
340  {
342  }
343  else if ( vinfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS )
344  {
345  if ( LOWORD( vinfo.dwBuildNumber ) >= OSR2_BUILD_NUMBER )
346  {
348  }
349  }
350  }
351  }
352  else
353  {
354  ri.Con_Printf( PRINT_ALL, "GLimp_Init() - GetVersionEx failed\n" );
355  return false;
356  }
357 
358  glw_state.hInstance = ( HINSTANCE ) hinstance;
359  glw_state.wndproc = wndproc;
360 
361  return true;
362 }

Referenced by R_Init().

◆ GLimp_InitGL()

qboolean GLimp_InitGL ( void  )

Definition at line 364 of file glw_imp.c.

365 {
366  PIXELFORMATDESCRIPTOR pfd =
367  {
368  sizeof(PIXELFORMATDESCRIPTOR), // size of this pfd
369  1, // version number
370  PFD_DRAW_TO_WINDOW | // support window
371  PFD_SUPPORT_OPENGL | // support OpenGL
372  PFD_DOUBLEBUFFER, // double buffered
373  PFD_TYPE_RGBA, // RGBA type
374  24, // 24-bit color depth
375  0, 0, 0, 0, 0, 0, // color bits ignored
376  0, // no alpha buffer
377  0, // shift bit ignored
378  0, // no accumulation buffer
379  0, 0, 0, 0, // accum bits ignored
380  32, // 32-bit z-buffer
381  0, // no stencil buffer
382  0, // no auxiliary buffer
383  PFD_MAIN_PLANE, // main layer
384  0, // reserved
385  0, 0, 0 // layer masks ignored
386  };
387  int pixelformat;
388  cvar_t *stereo;
389 
390  stereo = ri.Cvar_Get( "cl_stereo", "0", 0 );
391 
392  /*
393  ** set PFD_STEREO if necessary
394  */
395  if ( stereo->value != 0 )
396  {
397  ri.Con_Printf( PRINT_ALL, "...attempting to use stereo\n" );
398  pfd.dwFlags |= PFD_STEREO;
399  gl_state.stereo_enabled = true;
400  }
401  else
402  {
403  gl_state.stereo_enabled = false;
404  }
405 
406  /*
407  ** figure out if we're running on a minidriver or not
408  */
409  if ( strstr( gl_driver->string, "opengl32" ) != 0 )
410  glw_state.minidriver = false;
411  else
412  glw_state.minidriver = true;
413 
414  /*
415  ** Get a DC for the specified window
416  */
417  if ( glw_state.hDC != NULL )
418  ri.Con_Printf( PRINT_ALL, "GLimp_Init() - non-NULL DC exists\n" );
419 
420  if ( ( glw_state.hDC = GetDC( glw_state.hWnd ) ) == NULL )
421  {
422  ri.Con_Printf( PRINT_ALL, "GLimp_Init() - GetDC failed\n" );
423  return false;
424  }
425 
426  if ( glw_state.minidriver )
427  {
428  if ( (pixelformat = qwglChoosePixelFormat( glw_state.hDC, &pfd)) == 0 )
429  {
430  ri.Con_Printf (PRINT_ALL, "GLimp_Init() - qwglChoosePixelFormat failed\n");
431  return false;
432  }
433  if ( qwglSetPixelFormat( glw_state.hDC, pixelformat, &pfd) == FALSE )
434  {
435  ri.Con_Printf (PRINT_ALL, "GLimp_Init() - qwglSetPixelFormat failed\n");
436  return false;
437  }
438  qwglDescribePixelFormat( glw_state.hDC, pixelformat, sizeof( pfd ), &pfd );
439  }
440  else
441  {
442  if ( ( pixelformat = ChoosePixelFormat( glw_state.hDC, &pfd)) == 0 )
443  {
444  ri.Con_Printf (PRINT_ALL, "GLimp_Init() - ChoosePixelFormat failed\n");
445  return false;
446  }
447  if ( SetPixelFormat( glw_state.hDC, pixelformat, &pfd) == FALSE )
448  {
449  ri.Con_Printf (PRINT_ALL, "GLimp_Init() - SetPixelFormat failed\n");
450  return false;
451  }
452  DescribePixelFormat( glw_state.hDC, pixelformat, sizeof( pfd ), &pfd );
453 
454  if ( !( pfd.dwFlags & PFD_GENERIC_ACCELERATED ) )
455  {
456  extern cvar_t *gl_allow_software;
457 
458  if ( gl_allow_software->value )
459  glw_state.mcd_accelerated = true;
460  else
461  glw_state.mcd_accelerated = false;
462  }
463  else
464  {
465  glw_state.mcd_accelerated = true;
466  }
467  }
468 
469  /*
470  ** report if stereo is desired but unavailable
471  */
472  if ( !( pfd.dwFlags & PFD_STEREO ) && ( stereo->value != 0 ) )
473  {
474  ri.Con_Printf( PRINT_ALL, "...failed to select stereo pixel format\n" );
475  ri.Cvar_SetValue( "cl_stereo", 0 );
476  gl_state.stereo_enabled = false;
477  }
478 
479  /*
480  ** startup the OpenGL subsystem by creating a context and making
481  ** it current
482  */
483  if ( ( glw_state.hGLRC = qwglCreateContext( glw_state.hDC ) ) == 0 )
484  {
485  ri.Con_Printf (PRINT_ALL, "GLimp_Init() - qwglCreateContext failed\n");
486 
487  goto fail;
488  }
489 
490  if ( !qwglMakeCurrent( glw_state.hDC, glw_state.hGLRC ) )
491  {
492  ri.Con_Printf (PRINT_ALL, "GLimp_Init() - qwglMakeCurrent failed\n");
493 
494  goto fail;
495  }
496 
497  if ( !VerifyDriver() )
498  {
499  ri.Con_Printf( PRINT_ALL, "GLimp_Init() - no hardware acceleration detected\n" );
500  goto fail;
501  }
502 
503  /*
504  ** print out PFD specifics
505  */
506  ri.Con_Printf( PRINT_ALL, "GL PFD: color(%d-bits) Z(%d-bit)\n", ( int ) pfd.cColorBits, ( int ) pfd.cDepthBits );
507 
508  return true;
509 
510 fail:
511  if ( glw_state.hGLRC )
512  {
513  qwglDeleteContext( glw_state.hGLRC );
514  glw_state.hGLRC = NULL;
515  }
516 
517  if ( glw_state.hDC )
518  {
519  ReleaseDC( glw_state.hWnd, glw_state.hDC );
520  glw_state.hDC = NULL;
521  }
522  return false;
523 }

Referenced by VID_CreateWindow().

◆ GLimp_SetMode()

rserr_t GLimp_SetMode ( int pwidth,
int pheight,
int  mode,
qboolean  fullscreen 
)

Definition at line 185 of file glw_imp.c.

186 {
187  int width, height;
188  const char *win_fs[] = { "W", "FS" };
189 
190  ri.Con_Printf( PRINT_ALL, "Initializing OpenGL display\n");
191 
192  ri.Con_Printf (PRINT_ALL, "...setting mode %d:", mode );
193 
194  if ( !ri.Vid_GetModeInfo( &width, &height, mode ) )
195  {
196  ri.Con_Printf( PRINT_ALL, " invalid mode\n" );
197  return rserr_invalid_mode;
198  }
199 
200  ri.Con_Printf( PRINT_ALL, " %d %d %s\n", width, height, win_fs[fullscreen] );
201 
202  // destroy the existing window
203  if (glw_state.hWnd)
204  {
205  GLimp_Shutdown ();
206  }
207 
208  // do a CDS if needed
209  if ( fullscreen )
210  {
211  ri.Con_Printf( PRINT_ALL, "...attempting fullscreen\n" );
212 
213  if ( gl_bitdepth->value != 0 )
214  {
215  ri.Con_Printf( PRINT_ALL, "...using gl_bitdepth of %d\n", ( int ) gl_bitdepth->value );
216  }
217  else
218  {
219  HDC hdc = GetDC( NULL );
220  int bitspixel = GetDeviceCaps( hdc, BITSPIXEL );
221 
222  ri.Con_Printf( PRINT_ALL, "...using desktop display depth of %d\n", bitspixel );
223 
224  ReleaseDC( 0, hdc );
225  }
226 
227  ri.Con_Printf( PRINT_ALL, "...calling CDS: " );
228  if ( VID_CreateWindow(width, height, true) )
229  {
230  *pwidth = width;
231  *pheight = height;
232 
233  gl_state.fullscreen = true;
234 
235  ri.Con_Printf( PRINT_ALL, "ok\n" );
236  return rserr_ok;
237  }
238  else
239  {
240  ri.Con_Printf( PRINT_ALL, " failed\n" );
241  ri.Con_Printf( PRINT_ALL, "...setting windowed mode\n" );
242 
243  DestroyWindow(glw_state.hWnd);
244  UnregisterClass(WINDOW_CLASS_NAME, glw_state.hInstance);
245  VID_CreateWindow(width, height, false);
246 
247  *pwidth = width;
248  *pheight = height;
249  gl_state.fullscreen = false;
251  }
252  }
253  else
254  {
255  ri.Con_Printf( PRINT_ALL, "...setting windowed mode\n" );
256 
257  *pwidth = width;
258  *pheight = height;
259  gl_state.fullscreen = false;
260  if ( !VID_CreateWindow (width, height, false) )
261  return rserr_invalid_mode;
262  }
263 
264  return rserr_ok;
265 }

Referenced by R_SetMode().

◆ GLimp_Shutdown()

void GLimp_Shutdown ( void  )

Definition at line 276 of file glw_imp.c.

277 {
278  if ( qwglMakeCurrent && !qwglMakeCurrent( NULL, NULL ) )
279  ri.Con_Printf( PRINT_ALL, "ref_gl::R_Shutdown() - wglMakeCurrent failed\n");
280  if ( glw_state.hGLRC )
281  {
282  if ( qwglDeleteContext && !qwglDeleteContext( glw_state.hGLRC ) )
283  ri.Con_Printf( PRINT_ALL, "ref_gl::R_Shutdown() - wglDeleteContext failed\n");
284  glw_state.hGLRC = NULL;
285  }
286  if (glw_state.hDC)
287  {
288  if ( !ReleaseDC( glw_state.hWnd, glw_state.hDC ) )
289  ri.Con_Printf( PRINT_ALL, "ref_gl::R_Shutdown() - ReleaseDC failed\n" );
290  glw_state.hDC = NULL;
291  }
292  if (glw_state.hWnd)
293  {
294  DestroyWindow ( glw_state.hWnd );
295  glw_state.hWnd = NULL;
296  }
297 
298  if ( glw_state.log_fp )
299  {
300  fclose( glw_state.log_fp );
301  glw_state.log_fp = 0;
302  }
303 
304  UnregisterClass (WINDOW_CLASS_NAME, glw_state.hInstance);
305 
306  if ( gl_state.fullscreen )
307  {
308  ChangeDisplaySettingsEx( glw_state.monInfo.szDevice, NULL, NULL, 0, NULL );
309  gl_state.fullscreen = false;
310  }
311 }

Referenced by GLimp_SetMode(), and R_Shutdown().

◆ GLimp_SwitchFullscreen()

static qboolean GLimp_SwitchFullscreen ( int  width,
int  height 
)
static

◆ VerifyDriver()

static qboolean VerifyDriver ( void  )
static

Definition at line 47 of file glw_imp.c.

48 {
49  char buffer[1024];
50 
51  strcpy( buffer, qglGetString( GL_RENDERER ) );
52  strlwr( buffer );
53  if ( strcmp( buffer, "gdi generic" ) == 0 )
55  return false;
56  return true;
57 }

Referenced by GLimp_InitGL().

◆ VID_CreateWindow()

qboolean VID_CreateWindow ( int  width,
int  height,
qboolean  fullscreen 
)

Definition at line 64 of file glw_imp.c.

65 {
66  WNDCLASS wc;
67  RECT r;
69  int stylebits;
70  int x, y, w, h;
71  int exstyle;
72 
73  /* Register the frame class */
74  wc.style = 0;
75  wc.lpfnWndProc = (WNDPROC)glw_state.wndproc;
76  wc.cbClsExtra = 0;
77  wc.cbWndExtra = 0;
78  wc.hInstance = glw_state.hInstance;
79  wc.hIcon = 0;
80  wc.hCursor = LoadCursor (NULL,IDC_ARROW);
81  wc.hbrBackground = (void *)COLOR_GRAYTEXT;
82  wc.lpszMenuName = 0;
83  wc.lpszClassName = WINDOW_CLASS_NAME;
84 
85  if (!RegisterClass (&wc) )
86  ri.Sys_Error (ERR_FATAL, "Couldn't register window class");
87 
88  if (fullscreen)
89  {
90  exstyle = WS_EX_TOPMOST;
91  stylebits = WS_POPUP|WS_VISIBLE;
92  }
93  else
94  {
95  exstyle = 0;
96  stylebits = WINDOW_STYLE;
97  }
98 
99  r.left = 0;
100  r.top = 0;
101  r.right = width;
102  r.bottom = height;
103 
104  AdjustWindowRect (&r, stylebits, FALSE);
105 
106  w = r.right - r.left;
107  h = r.bottom - r.top;
108 
109  vid_xpos = ri.Cvar_Get ("vid_xpos", "0", 0);
110  vid_ypos = ri.Cvar_Get ("vid_ypos", "0", 0);
111  x = vid_xpos->value;
112  y = vid_ypos->value;
113 
114  glw_state.hWnd = CreateWindowEx (
115  exstyle,
117  "Quake 2 (OpenGL) "CPUSTRING,
118  stylebits,
119  x, y, w, h,
120  NULL,
121  NULL,
123  NULL);
124 
125  if (!glw_state.hWnd)
126  ri.Sys_Error (ERR_FATAL, "Couldn't create window");
127 
128  memset( &glw_state.monInfo, 0, sizeof(MONITORINFOEX) );
129  glw_state.monInfo.cbSize = sizeof(MONITORINFOEX);
130  GetMonitorInfo( MonitorFromWindow(glw_state.hWnd, MONITOR_DEFAULTTOPRIMARY), (LPMONITORINFO)&glw_state.monInfo );
131 
132  if (fullscreen)
133  {
134  DEVMODE dm;
135  memset(&dm, 0, sizeof(dm));
136 
137  dm.dmSize = sizeof(dm);
138  dm.dmPelsWidth = width;
139  dm.dmPelsHeight = height;
140  dm.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT;
141 
142  if (gl_bitdepth->value != 0)
143  {
144  dm.dmBitsPerPel = gl_bitdepth->value;
145  dm.dmFields |= DM_BITSPERPEL;
146  }
147 
148  if ( ChangeDisplaySettingsEx( glw_state.monInfo.szDevice, &dm, NULL, CDS_FULLSCREEN, NULL ) != DISP_CHANGE_SUCCESSFUL )
149  {
150  return false;
151  }
152 
153  GetMonitorInfo( MonitorFromWindow(glw_state.hWnd, MONITOR_DEFAULTTOPRIMARY), (LPMONITORINFO)&glw_state.monInfo );
154  SetWindowPos( glw_state.hWnd, NULL, glw_state.monInfo.rcMonitor.left, glw_state.monInfo.rcMonitor.top, width, height,
155  SWP_NOACTIVATE | SWP_NOCOPYBITS | SWP_NOOWNERZORDER | SWP_NOREPOSITION | SWP_NOZORDER );
156  }
157  else
158  {
159  ChangeDisplaySettingsEx( glw_state.monInfo.szDevice, NULL, NULL, 0, NULL );
160  }
161 
162  ShowWindow( glw_state.hWnd, SW_SHOW );
163  UpdateWindow( glw_state.hWnd );
164 
165  // init all the gl stuff for the window
166  if (!GLimp_InitGL ())
167  {
168  ri.Con_Printf( PRINT_ALL, "VID_CreateWindow() - GLimp_InitGL failed\n");
169  return false;
170  }
171 
172  SetForegroundWindow( glw_state.hWnd );
173  SetFocus( glw_state.hWnd );
174 
175  // let the sound and input subsystems know about the new window
177 
178  return true;
179 }

Referenced by GLimp_SetMode().

Variable Documentation

◆ glw_state

◆ vid_fullscreen

cvar_t* vid_fullscreen

◆ vid_ref

cvar_t* vid_ref

Definition at line 44 of file vid_dll.c.

vid_fullscreen
cvar_t * vid_fullscreen
Definition: vid_dll.c:47
VID_CreateWindow
qboolean VID_CreateWindow(int width, int height, qboolean fullscreen)
Definition: glw_imp.c:64
GLimp_Shutdown
void GLimp_Shutdown(void)
Definition: glw_imp.c:276
height
GLsizei height
Definition: qgl_win.c:69
glstate_t::stereo_enabled
qboolean stereo_enabled
Definition: gl_local.h:422
glw_state
glwstate_t glw_state
Definition: glw_imp.c:42
glwstate_t::hDC
HDC hDC
Definition: glw_win.h:32
gl_state
glstate_t gl_state
Definition: gl_rmain.c:42
ri
refimport_t ri
Definition: r_main.c:25
refimport_t::Vid_NewWindow
void(* Vid_NewWindow)(int width, int height)
Definition: ref.h:222
gl_driver
static cvar_t * gl_driver
Definition: vid_menu.c:38
cvar_s::modified
qboolean modified
Definition: q_shared.h:330
qglGetString
const GLubyte *APIENTRY * qglGetString(GLenum name)
refimport_t::Cvar_Get
cvar_t *(* Cvar_Get)(char *name, char *value, int flags)
Definition: ref.h:216
cvar_s::string
char * string
Definition: q_shared.h:327
x
GLint GLenum GLint x
Definition: qgl_win.c:116
glwstate_t::log_fp
FILE * log_fp
Definition: glw_win.h:43
buffer
GLenum GLfloat * buffer
Definition: qgl_win.c:151
width
GLint GLsizei width
Definition: qgl_win.c:115
cvar_s
Definition: q_shared.h:324
refimport_t::Vid_GetModeInfo
qboolean(* Vid_GetModeInfo)(int *width, int *height, int mode)
Definition: ref.h:220
refimport_t::Con_Printf
void(* Con_Printf)(int print_level, char *str,...)
Definition: ref.h:202
PRINT_ALL
#define PRINT_ALL
Definition: qcommon.h:751
gl_drawbuffer
cvar_t * gl_drawbuffer
Definition: gl_rmain.c:111
gl_allow_software
cvar_t * gl_allow_software
Definition: gl_rmain.c:92
GLimp_InitGL
qboolean GLimp_InitGL(void)
Definition: glw_imp.c:364
r
GLdouble GLdouble r
Definition: qgl_win.c:336
HDC
HDC(WINAPI *qwglGetCurrentDC)(VOID)
rserr_invalid_mode
@ rserr_invalid_mode
Definition: r_local.h:108
glwstate_t::hGLRC
HGLRC hGLRC
Definition: glw_win.h:35
glwstate_t::hWnd
HWND hWnd
Definition: glw_win.h:33
refimport_t::Sys_Error
void(* Sys_Error)(int err_level, char *str,...)
Definition: ref.h:194
glwstate_t::hInstance
HINSTANCE hInstance
Definition: glw_win.h:29
cvar_s::value
float value
Definition: q_shared.h:331
glwstate_t::monInfo
MONITORINFOEX monInfo
Definition: glw_win.h:34
gl_bitdepth
cvar_t * gl_bitdepth
Definition: gl_rmain.c:110
NULL
#define NULL
Definition: q_shared.h:67
glwstate_t::allowdisplaydepthchange
qboolean allowdisplaydepthchange
Definition: glw_win.h:40
glwstate_t::minidriver
qboolean minidriver
Definition: glw_win.h:39
ERR_FATAL
#define ERR_FATAL
Definition: qcommon.h:743
y
GLint y
Definition: qgl_win.c:115
WINDOW_STYLE
#define WINDOW_STYLE
Definition: winquake.h:28
rserr_ok
@ rserr_ok
Definition: r_local.h:105
glstate_t::fullscreen
qboolean fullscreen
Definition: gl_local.h:410
WINDOW_CLASS_NAME
#define WINDOW_CLASS_NAME
Definition: glw_imp.c:62
OSR2_BUILD_NUMBER
#define OSR2_BUILD_NUMBER
glwstate_t::mcd_accelerated
qboolean mcd_accelerated
Definition: glw_win.h:41
glwstate_t::wndproc
void * wndproc
Definition: glw_win.h:30
vid_xpos
cvar_t * vid_xpos
Definition: vid_dll.c:45
VerifyDriver
static qboolean VerifyDriver(void)
Definition: glw_imp.c:47
w
GLdouble GLdouble GLdouble w
Definition: qgl_win.c:291
FALSE
#define FALSE
Definition: stb_vorbis.c:618
refimport_t::Cvar_SetValue
void(* Cvar_SetValue)(char *name, float value)
Definition: ref.h:218
mode
GLenum mode
Definition: qgl_win.c:113
vid_ypos
cvar_t * vid_ypos
Definition: vid_dll.c:46
CPUSTRING
#define CPUSTRING
Definition: qcommon.h:86
rserr_invalid_fullscreen
@ rserr_invalid_fullscreen
Definition: r_local.h:107