[SDL] SDL fullscreen problem

cocobear cocobear.cn at gmail.com
Sun Sep 2 22:18:52 PDT 2007


When I run a program  in X system on F7 ,the X crashed ,just like I press 
CTRL+ALT+BACKSPACE. 
It is sure that the code has no problem,I get it from linux game programming. 
What's the problem? 


the code is below, 

#include <SDL/SDL.h> 
#include <stdio.h> 
#include <stdlib.h> 
Uint16 CreateHicolorPixel(SDL_PixelFormat * fmt, Uint8 red, 
                          Uint8 green, Uint8 blue) 
{ 
    Uint16 value; 
    value = ((red >> fmt->Rloss) << fmt->Rshift) + 
            ((green >> fmt->Gloss) << fmt->Gshift) + 
            ((blue >> fmt->Bloss) << fmt->Bshift); 
    return value; 
} 
int main() 
{ 
    SDL_Surface *screen; 
    Uint16 *raw_pixels; 
    int x, y; 
   if (SDL_Init(SDL_INIT_VIDEO) != 0) { 
       printf("Unable to initialize SDL: %s\n", SDL_GetError()); 
       return 1; 
   } 
   atexit(SDL_Quit); 
   screen = SDL_SetVideoMode(256, 256, 24, SDL_FULLSCREEN|SDL_SWSURFACE); 
   if (screen == NULL) { 
       printf("Unable to set video mode: %s\n", SDL_GetError()); 
       return 1; 
   } 
   SDL_LockSurface(screen); 
   raw_pixels = (Uint16 *) screen->pixels; 
   for (x = 0; x < 256; x++) { 
       for (y = 0; y < 256; y++) { 
           Uint16 pixel_color; 
           int offset; 
           pixel_color = CreateHicolorPixel(screen->format, 
                                          x, 0, y); 
           offset = (screen->pitch / 2 * y + x); 
           raw_pixels[offset] = pixel_color; 
        } 
    } 
    SDL_UnlockSurface(screen); 
    SDL_UpdateRect(screen, 10, 10, 200, 120); 
    SDL_Delay(3000); 
    return 0; 
 }



More information about the SDL mailing list