Есть примитивная программа:
#include <SDL/SDL.h>
#include <SDL/SDL_video.h>
#include <unistd.h>
int main ()
{
SDL_Surface *S;
SDL_Surface *Img1;
SDL_Surface *Img1_Opt;
SDL_Rect r;
r.x = 130;
r.y = 130;
SDL_Init (SDL_INIT_VIDEO);
S = SDL_SetVideoMode(800, 600, 32, SDL_DOUBLEBUF);
Img1 = SDL_LoadBMP ("Img1.bmp");
Img1_Opt = SDL_DisplayFormat (Img1);
SDL_FreeSurface (Img1);
SDL_BlitSurface (Img1_Opt, NULL, S, &r);
// !!!
sleep (1);
// !!!
SDL_Flip (S);
sleep (2);
SDL_FreeSurface (Img1_Opt);
SDL_Quit ();
return 0;
}
Если убрать задержку перед SDL_Flip, то экран иногда остаётся чёрным, а иногда программа отрабатывает как надо. Со sllepом или бесконечным циклом SDL_Flip всё работает как надо. В чём может быть дело?