X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fscreens.c;h=486ad6d9415040f7627f8f6bd075ec3d140cbd1c;hb=c9821c49e08e02532f3ff812ebf8f64230aea7ea;hp=c593ac8fd62230ec19b4852c877f0a4ad40ebc26;hpb=c4e1a476135ce36417cdd797481feeaaff4301af;p=rocksndiamonds.git diff --git a/src/screens.c b/src/screens.c index c593ac8f..486ad6d9 100644 --- a/src/screens.c +++ b/src/screens.c @@ -62,6 +62,28 @@ void DrawHeadline() DrawTextFCentered(46, FC_RED, WINDOW_SUBTITLE_STRING); } +static void ToggleFullscreenIfNeeded() +{ + if (setup.fullscreen != video.fullscreen_enabled) + { + /* save old door content */ + BlitBitmap(backbuffer, pix[PIX_DB_DOOR], + DX, DY, DXSIZE, DYSIZE, DOOR_GFX_PAGEX1, DOOR_GFX_PAGEY1); + + /* toggle fullscreen */ + setup.fullscreen = ChangeVideoModeIfNeeded(setup.fullscreen); + + /* redraw background to newly created backbuffer */ + BlitBitmap(pix[PIX_BACK], backbuffer, 0,0, WIN_XSIZE,WIN_YSIZE, 0,0); + + /* restore old door content */ + BlitBitmap(pix[PIX_DB_DOOR], backbuffer, + DOOR_GFX_PAGEX1, DOOR_GFX_PAGEY1, DXSIZE, DYSIZE, DX, DY); + + redraw_mask = REDRAW_ALL; + } +} + void DrawMainMenu() { static struct LevelDirInfo *leveldir_last_valid = NULL; @@ -84,7 +106,8 @@ void DrawMainMenu() UndrawSpecialEditorDoor(); /* needed if last screen was the setup screen and fullscreen state changed */ - setup.fullscreen = ChangeVideoModeIfNeeded(setup.fullscreen); + ToggleFullscreenIfNeeded(); + #ifdef TARGET_SDL SetDrawtoField(DRAW_BACKBUFFER); #endif