/* ================= Sys_In_Restart_f Restart the input subsystem ================= */ void Sys_In_Restart_f( void ) { #ifndef DEDICATED if( !SDL_WasInit( SDL_INIT_VIDEO ) ) { Com_Printf( "in_restart: Cannot restart input while video is shutdown\n" ); return; } #endif IN_Restart( ); }
/* =============== GLimp_EndFrame Responsible for doing a swapbuffers =============== */ void GLimp_EndFrame( void ) { #ifdef HAVE_GLES EGL_SwapBuffers(); #else // don't flip if drawing to front buffer if ( Q_stricmp( r_drawBuffer->string, "GL_FRONT" ) != 0 ) { SDL_GL_SwapBuffers(); } #endif if( r_fullscreen->modified ) { qboolean fullscreen; qboolean needToToggle = qtrue; qboolean sdlToggled = qfalse; SDL_Surface *s = SDL_GetVideoSurface( ); if( s ) { // Find out the current state fullscreen = !!( s->flags & SDL_FULLSCREEN ); if( r_fullscreen->integer && Cvar_VariableIntegerValue( "in_nograb" ) ) { ri.Printf( PRINT_ALL, "Fullscreen not allowed with in_nograb 1\n"); ri.Cvar_Set( "r_fullscreen", "0" ); r_fullscreen->modified = qfalse; } // Is the state we want different from the current state? needToToggle = !!r_fullscreen->integer != fullscreen; if( needToToggle ) sdlToggled = SDL_WM_ToggleFullScreen( s ); } if( needToToggle ) { // SDL_WM_ToggleFullScreen didn't work, so do it the slow way if( !sdlToggled ) Cbuf_AddText( "vid_restart" ); IN_Restart( ); } r_fullscreen->modified = qfalse; } }
/** * @brief Restart the input subsystem */ void Sys_In_Restart_f(void) { IN_Restart(); }
/** * @brief Responsible for doing a swapbuffers */ void GLimp_EndFrame(void) { // don't flip if drawing to front buffer //FIXME: remove this nonesense if (Q_stricmp(Cvar_VariableString("r_drawBuffer"), "GL_FRONT") != 0) { SDL_GL_SwapWindow(main_window); } if (r_fullscreen->modified) { qboolean fullscreen; qboolean needToToggle; // Find out the current state fullscreen = !!(SDL_GetWindowFlags(main_window) & SDL_WINDOW_FULLSCREEN); if (r_fullscreen->integer && Cvar_VariableIntegerValue("in_nograb")) { Com_Printf("Fullscreen not allowed with in_nograb 1\n"); Cvar_Set("r_fullscreen", "0"); r_fullscreen->modified = qfalse; } // Is the state we want different from the current state? needToToggle = !!r_fullscreen->integer != fullscreen; if (needToToggle) { // SDL_WM_ToggleFullScreen didn't work, so do it the slow way if (!(SDL_SetWindowFullscreen(main_window, r_fullscreen->integer) >= 0)) // !sdlToggled { Cbuf_ExecuteText(EXEC_APPEND, "vid_restart\n"); } IN_Restart(); } #ifdef MACOS_X_GAMMA_RESET_FIX // OS X 10.9 has a bug where toggling in or out of fullscreen mode // will cause the gamma to reset to the system default after an unknown // short delay. This little fix simply causes the gamma to be reset // again after a hopefully-long-enough-delay of 3 seconds. // Radar 15961845 gammaResetTime = CL_ScaledMilliseconds() + 3000; #endif r_fullscreen->modified = qfalse; } #ifdef MACOS_X_GAMMA_RESET_FIX if ((gammaResetTime != 0) && (gammaResetTime < CL_ScaledMilliseconds())) { // Circuitous way of resetting the gamma to its current value. char old[6] = { 0 }; Q_strncpyz(old, va("%i", Cvar_VariableIntegerValue("r_gamma")), 5); if (strlen(old)) { Cvar_Set("r_gamma", "1"); Cvar_Set("r_gamma", old); } gammaResetTime = 0; } #endif }