Siema. Zacząłem właśnie kurs SDL'a. Jest problem z odświeżaniem ekranu. Zamieszczam kod programu:

#include "SDL/SDL.h"
#include <string>

using namespace std;

SDL_Surface* message = NULL;
SDL_Surface* background = NULL;
SDL_Surface* screen = NULL;

SDL_Surface* load_image(string filename)
{
    SDL_Surface* loadedImage = NULL;
    SDL_Surface* optimizedImage = NULL;

    loadedImage = SDL_LoadBMP(filename.c_str());
    if(loadedImage != NULL)
    {
        optimizedImage = SDL_DisplayFormat(loadedImage);
        SDL_FreeSurface(loadedImage);
    }

    return optimizedImage;
}

void apply_surface(int x, int y, SDL_Surface* source, SDL_Surface* destination)
{
    SDL_Rect offset;

    offset.x = x;
    offset.y = y;
    SDL_BlitSurface(source, NULL, destination, &offset);
}

int main(int argc, char* args[])
{
    if(SDL_Init(SDL_INIT_EVERYTHING) == -1)
        return 1;

    screen = SDL_SetVideoMode(640, 480, 32, SDL_SWSURFACE);
    if(screen == NULL)
        return 1;

    SDL_WM_SetCaption("Spierdalaj", NULL);
    message = load_image("hello.bmp");
    background = load_image("background.bmp");

    apply_surface(0, 0, background, screen);
    apply_surface(320, 0, background, screen);
    apply_surface(0, 240, background, screen);
    apply_surface(320, 240, background, screen);

    apply_surface(180, 140, message, screen);

    if(SDL_Flip(screen) == -1)
        return 1;

    SDL_Delay(2000);
    SDL_FreeSurface(message);
    SDL_FreeSurface(background);

    SDL_Quit();
    return 0;
}

Co najciekawsze, program nigdy nie zwraca błędu. Wyświetla background i message, ale nie odświeży screen'a do pożądanej wielkości... Co tu jest zrobione nie tak?