Return a pointer to an array of available screen dimensions for the given format and video flags, sorted largest to smallest. Returns NULL if there are no dimensions available for a particular format, or -1 if any dimension is okay for the given format.
If format is NULL, the mode list will be for the format returned by SDL_GetVideoInfo()->vfmt. The flag parameter is an OR'd combination of surface flags. The flags are the same as those used SDL_SetVideoMode and they play a strong role in deciding what modes are valid. For instance, if you pass SDL_HWSURFACE as a flag only modes that support hardware video surfaces will be returned.
SDL_Rect **modes; int i; . . . /* Get available fullscreen/hardware modes */ modes=SDL_ListModes(NULL, SDL_FULLSCREEN|SDL_HWSURFACE); /* Check is there are any modes available */ if(modes == (SDL_Rect **)0){ printf("No modes available!\n"); exit(-1); } /* Check if or resolution is restricted */ if(modes == (SDL_Rect **)-1){ printf("All resolutions available.\n"); } else{ /* Print valid modes */ printf("Available Modes\n"); for(i=0;modes[i];++i) printf(" %d x %d\n", modes[i]->w, modes[i]->h); } . .