# HG changeset patch # User Sam Lantinga # Date 1076877087 0 # Node ID 3eddf51b649b411e23d2c20a8c262fe39f1610bc # Parent 618fcc5861c873694c50f72f33c1e043aeb0ab7d Showed how to toggle fullscreen mode if the API isn't supported diff -r 618fcc5861c8 -r 3eddf51b649b test/testwm.c --- a/test/testwm.c Sun Feb 15 18:45:45 2004 +0000 +++ b/test/testwm.c Sun Feb 15 20:31:27 2004 +0000 @@ -10,6 +10,49 @@ /* Is the cursor visible? */ static int visible = 1; +static Uint8 video_bpp; +static Uint32 video_flags; + +int SetVideoMode(int w, int h) +{ + SDL_Surface *screen; + int i; + Uint8 *buffer; + SDL_Color palette[256]; + + screen = SDL_SetVideoMode(w, h, video_bpp, video_flags); + if ( screen == NULL ) { + fprintf(stderr, "Couldn't set %dx%dx%d video mode: %s\n", + w, h, video_bpp, SDL_GetError()); + return(-1); + } + printf("Running in %s mode\n", screen->flags & SDL_FULLSCREEN ? + "fullscreen" : "windowed"); + + /* Set the surface pixels and refresh! */ + for ( i=0; i<256; ++i ) { + palette[i].r = 255-i; + palette[i].g = 255-i; + palette[i].b = 255-i; + } + SDL_SetColors(screen, palette, 0, 256); + if ( SDL_LockSurface(screen) < 0 ) { + fprintf(stderr, "Couldn't lock display surface: %s\n", + SDL_GetError()); + return(-1); + } + buffer = (Uint8 *)screen->pixels; + for ( i=0; ih; ++i ) { + memset(buffer,(i*255)/screen->h, + screen->w*screen->format->BytesPerPixel); + buffer += screen->pitch; + } + SDL_UnlockSurface(screen); + SDL_UpdateRect(screen, 0, 0, 0, 0); + + return(0); +} + SDL_Surface *LoadIconSurface(char *file, Uint8 **maskp) { SDL_Surface *icon; @@ -79,6 +122,8 @@ (screen->flags&SDL_FULLSCREEN) ? "fullscreen" : "windowed"); } else { printf("Unable to toggle fullscreen mode\n"); + video_flags ^= SDL_FULLSCREEN; + SetVideoMode(screen->w, screen->h); } } @@ -207,49 +252,6 @@ } } -static Uint8 video_bpp; -static Uint32 video_flags; - -int SetVideoMode(int w, int h) -{ - SDL_Surface *screen; - int i; - Uint8 *buffer; - SDL_Color palette[256]; - - screen = SDL_SetVideoMode(w, h, video_bpp, video_flags); - if ( screen == NULL ) { - fprintf(stderr, "Couldn't set %dx%dx%d video mode: %s\n", - w, h, video_bpp, SDL_GetError()); - return(-1); - } - printf("Running in %s mode\n", screen->flags & SDL_FULLSCREEN ? - "fullscreen" : "windowed"); - - /* Set the surface pixels and refresh! */ - for ( i=0; i<256; ++i ) { - palette[i].r = 255-i; - palette[i].g = 255-i; - palette[i].b = 255-i; - } - SDL_SetColors(screen, palette, 0, 256); - if ( SDL_LockSurface(screen) < 0 ) { - fprintf(stderr, "Couldn't lock display surface: %s\n", - SDL_GetError()); - return(-1); - } - buffer = (Uint8 *)screen->pixels; - for ( i=0; ih; ++i ) { - memset(buffer,(i*255)/screen->h, - screen->w*screen->format->BytesPerPixel); - buffer += screen->pitch; - } - SDL_UnlockSurface(screen); - SDL_UpdateRect(screen, 0, 0, 0, 0); - - return(0); -} - int main(int argc, char *argv[]) { SDL_Event event;