e se fosse SDL_Flip( screen ) che fa ritornare 1?
codice:
if( SDL_Flip( screen ) == -1 )
    {
        return 1;    
    }

EDIT: ok probabilmente era quello, perchè avevo provato a fare il doppio buffer come con allegro, impostando male il codice! Adesso ho messo a posto!