Во-первых, кажется, SDL_Flip()
работает только на поверхностях, которые соответствуют экрану или окну, как те, которые созданы SDL_SetVideoMode()
. Ваша другая поверхность вне экрана; не имеет смысла делать двойной буфер (или переворачивать его), и он, скорее всего, в любом случае не имеет двойной буферизации. Будучи за пределами экрана, он не появится, пока вы не перетянете его на поверхность дисплея с помощью SDL_BlitSurface()
или аналогичной функции - тогда изменения будут видны в следующий раз, когда вы перевернете поверхность дисплея.
По сути, mysurface2
на самом деле не отображается на вашем дисплее, пока вы не поместите его туда, перетянув его на поверхность, которая равна на вашем дисплее. Если вы замените следующее:
SDL_Flip(mysurface2); // White line doesnt appear
С этим:
SDL_BlitSurface(mysurface2,NULL,mysurface1,NULL);
SDL_Flip(mysurface1);
... тогда ваш код, вероятно, будет работать так, как вы ожидаете.