X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=vid_sdl.c;h=d18b5a42506c640b52b5c23275cfbd4c3b3c8a6c;hb=fc34acefa87b04995e510158ebeaebed02985325;hp=fe1a3605c71565421eb71faee583db337927ab1f;hpb=144f44c523edfab569e960288dd6d84ad7f4d5f4;p=xonotic%2Fdarkplaces.git diff --git a/vid_sdl.c b/vid_sdl.c index fe1a3605..d18b5a42 100644 --- a/vid_sdl.c +++ b/vid_sdl.c @@ -22,6 +22,10 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "quakedef.h" +#ifdef WIN32 +#define SDL_R_RESTART +#endif + // Tell startup code that we have a client int cl_available = true; @@ -336,6 +340,20 @@ static int Sys_EventFilter( SDL_Event *event ) return 1; } +#ifdef SDL_R_RESTART +static qboolean sdl_needs_restart; +static void sdl_start(void) +{ +} +static void sdl_shutdown(void) +{ + sdl_needs_restart = false; +} +static void sdl_newmap(void) +{ +} +#endif + static keynum_t buttonremap[18] = { K_MOUSE1, @@ -399,12 +417,21 @@ void Sys_SendKeyEvents( void ) vid.width = event.resize.w; vid.height = event.resize.h; SDL_SetVideoMode(vid.width, vid.height, video_bpp, video_flags); +#ifdef SDL_R_RESTART + // better not call R_Modules_Restart from here directly, as this may wreak havoc... + // so, let's better queue it for next frame + if(!sdl_needs_restart) + { + Cbuf_AddText("\nr_restart\n"); + sdl_needs_restart = true; + } +#endif } break; } // enable/disable sound on focus gain/loss - if (!vid_hidden && (vid_activewindow || !snd_mutewhenidle.integer)) + if ((!vid_hidden && vid_activewindow) || !snd_mutewhenidle.integer) { if (!sound_active) { @@ -435,6 +462,7 @@ void *GL_GetProcAddress(const char *name) static int Sys_EventFilter( SDL_Event *event ); static qboolean vid_sdl_initjoysticksystem = false; + void VID_Init (void) { Cvar_RegisterVariable(&joy_detected); @@ -458,6 +486,10 @@ void VID_Init (void) Cvar_RegisterVariable(&joy_sensitivitypitch); Cvar_RegisterVariable(&joy_sensitivityyaw); //Cvar_RegisterVariable(&joy_sensitivityroll); + +#ifdef SDL_R_RESTART + R_RegisterModule("SDL", sdl_start, sdl_shutdown, sdl_newmap); +#endif if (SDL_Init(SDL_INIT_VIDEO) < 0) Sys_Error ("Failed to init SDL video subsystem: %s", SDL_GetError()); @@ -471,7 +503,7 @@ void VID_Init (void) #ifdef WIN32 #include "resource.h" #include -static void VID_SetCaption() +static void VID_SetCaption(void) { SDL_SysWMinfo info; HICON icon; @@ -498,7 +530,7 @@ static void VID_SetCaption() #endif SetClassLongPtr( info.window, GCLP_HICON, (LONG_PTR)icon ); } -static void VID_SetIcon() +static void VID_SetIcon(void) { } #else @@ -506,7 +538,7 @@ static void VID_SetIcon() #include "darkplaces.xpm" #include "nexuiz.xpm" static SDL_Surface *icon = NULL; -static void VID_SetIcon() +static void VID_SetIcon(void) { /* * Somewhat restricted XPM reader. Only supports XPMs saved by GIMP 2.4 at @@ -608,13 +640,13 @@ static void VID_SetIcon() } -static void VID_SetCaption() +static void VID_SetCaption(void) { SDL_WM_SetCaption( gamename, NULL ); } #endif -static void VID_OutputVersion() +static void VID_OutputVersion(void) { const SDL_version *version; version = SDL_Linked_Version(); @@ -798,7 +830,7 @@ void VID_Finish (void) VID_UpdateGamma(false, 256); - if (r_render.integer && !vid_hidden) + if (!vid_hidden) { CHECKGLERROR if (r_speeds.integer == 2 || gl_finish.integer) @@ -811,7 +843,6 @@ void VID_Finish (void) size_t VID_ListModes(vid_mode_t *modes, size_t maxcount) { - int i; size_t k; SDL_Rect **vidmodes; int bpp = SDL_GetVideoInfo()->vfmt->BitsPerPixel; @@ -821,8 +852,8 @@ size_t VID_ListModes(vid_mode_t *modes, size_t maxcount) { if(k >= maxcount) break; - modes[k].width = vidmodes[i]->w; - modes[k].height = vidmodes[i]->h; + modes[k].width = (*vidmodes)->w; + modes[k].height = (*vidmodes)->h; modes[k].bpp = bpp; modes[k].refreshrate = 60; // no support for refresh rate in SDL modes[k].pixelheight_num = 1;