Irgendwie erkenne ich nicht wo du SDL initialisierst. Du hast zwar
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.