Der Code funktioniert??

Irgendwie erkenne ich nicht wo du SDL initialisierst. Du hast zwar
Code:
if ((SDL_INIT_VIDEO | SDL_DOUBLEBUF) == -1)
// Zeug..
Aber da überprüfst du nur ob die Oder-Verknüpfung von 2 Konstanten gleich -1 ist. Du musst anfangs explizit SDL_init(FLAGS); aufrufen.
Weiterhin benutzt du SDL_flip, hast Doppelbuffering aber nicht aktiviert. (SDL_DOUBLEBUFF ist eine Flag für SetVideoMode) Kann sein, daß flip in dem Fall automatisch SDL_RectUpdate ausführt, aber ohne Doppelbuffering, musst SDL_RectUpdate aufrufen um Teile des Screens, oder den ganzen Screen, upzudaten.

Ansonsten sieht der Code vernünftig aus.