From dc8da67934ff7d1eb8de915e86d3981c1b2427eb Mon Sep 17 00:00:00 2001 From: sezero Date: Tue, 16 Feb 2010 09:10:43 +0000 Subject: [PATCH] gl_vidsdl.c (VID_Toggle): New proc for easy windowed-fullscreen toggling using SDL. Works only under X11. keys.c (Key_Event): Moved ALT-Enter windowed-fulscreen toggle handling to main() in main.c so that it works properly for now. main.c (main): Moved ALT-Enter windowed-fulscreen toggle handling from keys.c to main() so that it works properly for now. git-svn-id: svn+ssh://svn.code.sf.net/p/quakespasm/code/trunk@14 af15c1b1-3010-417e-b628-4374ebc0bcbd --- quakespasm/Quake/gl_vidsdl.c | 21 +++++++++++++++++++++ quakespasm/Quake/keys.c | 15 ++++----------- quakespasm/Quake/main.c | 6 ++++++ 3 files changed, 31 insertions(+), 11 deletions(-) diff --git a/quakespasm/Quake/gl_vidsdl.c b/quakespasm/Quake/gl_vidsdl.c index 27627ec5..2edba743 100644 --- a/quakespasm/Quake/gl_vidsdl.c +++ b/quakespasm/Quake/gl_vidsdl.c @@ -1413,6 +1413,27 @@ void VID_Init (void) // is removed, we get 800x600. } +// new proc by S.A., called by alt-return key binding. +void VID_Toggle (void) +{ + // VID_Restart (); + + S_ClearBuffer (); + + if ( SDL_WM_ToggleFullScreen(draw_context) == 1 ) + { + Sbar_Changed(); // Sbar seems to need refreshing + windowed=!windowed; + if ((int)vid_fullscreen.value == 0) + Cvar_Set ("vid_fullscreen", "1"); + else + Cvar_Set ("vid_fullscreen", "0"); + } else { + Con_Printf ("SDL_WM_ToggleFullScreen failed\n"); + } +} + + /* ================ VID_SyncCvars -- johnfitz -- set vid cvars to match current video mode diff --git a/quakespasm/Quake/keys.c b/quakespasm/Quake/keys.c index 6a946c0e..7a074b5d 100644 --- a/quakespasm/Quake/keys.c +++ b/quakespasm/Quake/keys.c @@ -1023,17 +1023,10 @@ void Key_Event (int key, qboolean down) } // johnfitz -- alt-enter to toggle fullscreen. FIXME -- this does NOT work -#if 0 - if (!down && (key == K_ENTER) && keydown[K_ALT]) - { - extern cvar_t vid_fullscreen; - if (vid_fullscreen.value) - Cvar_Set ("vid_fullscreen", "0"); - else - Cvar_Set ("vid_fullscreen", "1"); - VID_Restart (); - } -#endif +// But this hack (from sf.net/uhexen2) for SDLFitz works for me. S.A +// *** moved to main.c so that it works properly *** +// if (!down && (key == K_ENTER) && keydown[K_ALT]) +// VID_Toggle(); // johnfitz // diff --git a/quakespasm/Quake/main.c b/quakespasm/Quake/main.c index a0219f17..e2f26440 100644 --- a/quakespasm/Quake/main.c +++ b/quakespasm/Quake/main.c @@ -117,6 +117,12 @@ int main(int argc, char *argv[]) if (event.key.type == SDL_KEYDOWN) Con_ToggleConsole_f(); } + else if ((event.key.keysym.sym == SDLK_RETURN) && + (event.key.keysym.mod & KMOD_ALT)) + { + if (event.key.type == SDL_KEYDOWN) + VID_Toggle(); + } else { Key_Event(Key_Map(&(event.key)), event.key.type == SDL_KEYDOWN);