From 2709de9cf0281cf7564f7570e974ba1ccce16b97 Mon Sep 17 00:00:00 2001 From: Info Teddy Date: Fri, 24 Jan 2020 23:30:51 -0800 Subject: [PATCH] Make fast path using FillRect() when opaque FillRect() is similar enough to memset when blending isn't used, so the game will take a fast path drawing the roomname background when the background is opaque. --- desktop_version/src/editor.cpp | 7 +++---- desktop_version/src/main.cpp | 1 + desktop_version/src/titlerender.cpp | 14 ++++++-------- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/desktop_version/src/editor.cpp b/desktop_version/src/editor.cpp index bf4c094d..8ae9135d 100644 --- a/desktop_version/src/editor.cpp +++ b/desktop_version/src/editor.cpp @@ -3447,16 +3447,15 @@ void editorrender( KeyPoll& key, Graphics& dwgfx, Game& game, mapclass& map, ent { if(ed.roomnamehide<12) ed.roomnamehide++; } + dwgfx.footerrect.y = 230+ed.roomnamehide; if (dwgfx.translucentroomname) { - SDL_SetSurfaceAlphaMod(dwgfx.footerbuffer, 127); + SDL_BlitSurface(dwgfx.footerbuffer, NULL, dwgfx.backBuffer, &dwgfx.footerrect); } else { - SDL_SetSurfaceAlphaMod(dwgfx.footerbuffer, 255); + FillRect(dwgfx.backBuffer, 0,230+ed.roomnamehide,320,10, dwgfx.getRGB(0,0,0)); } - dwgfx.footerrect.y = 230+ed.roomnamehide; - SDL_BlitSurface(dwgfx.footerbuffer, NULL, dwgfx.backBuffer, &dwgfx.footerrect); dwgfx.bprint(5,231+ed.roomnamehide,ed.level[ed.levx+(ed.maxwidth*ed.levy)].roomname, 196, 196, 255 - help.glow, true); dwgfx.bprint(4, 222, "SPACE ^ SHIFT ^", 196, 196, 255 - help.glow, false); dwgfx.bprint(268,222, "("+help.String(ed.levx+1)+","+help.String(ed.levy+1)+")",196, 196, 255 - help.glow, false); diff --git a/desktop_version/src/main.cpp b/desktop_version/src/main.cpp index 0e5c9cf5..3adf9ab3 100644 --- a/desktop_version/src/main.cpp +++ b/desktop_version/src/main.cpp @@ -127,6 +127,7 @@ int main(int argc, char *argv[]) SDL_SetSurfaceBlendMode(graphics.backBuffer, SDL_BLENDMODE_NONE); graphics.footerbuffer = SDL_CreateRGBSurface(SDL_SWSURFACE, 320, 10, 32, fmt->Rmask, fmt->Gmask, fmt->Bmask, fmt->Amask); SDL_SetSurfaceBlendMode(graphics.footerbuffer, SDL_BLENDMODE_BLEND); + SDL_SetSurfaceAlphaMod(graphics.footerbuffer, 127); FillRect(graphics.footerbuffer, SDL_MapRGB(fmt, 0, 0, 0)); graphics.Makebfont(); diff --git a/desktop_version/src/titlerender.cpp b/desktop_version/src/titlerender.cpp index b66469ec..65bbc8e2 100644 --- a/desktop_version/src/titlerender.cpp +++ b/desktop_version/src/titlerender.cpp @@ -1562,16 +1562,15 @@ void gamerender(Graphics& dwgfx, mapclass& map, Game& game, entityclass& obj, Ut if(map.extrarow==0 || (map.custommode && map.roomname!="")) { + dwgfx.footerrect.y = 230; if (dwgfx.translucentroomname) { - SDL_SetSurfaceAlphaMod(dwgfx.footerbuffer, 127); + SDL_BlitSurface(dwgfx.footerbuffer, NULL, dwgfx.backBuffer, &dwgfx.footerrect); } else { - SDL_SetSurfaceAlphaMod(dwgfx.footerbuffer, 255); + FillRect(dwgfx.backBuffer, dwgfx.footerrect, 0); } - dwgfx.footerrect.y = 230; - SDL_BlitSurface(dwgfx.footerbuffer, NULL, dwgfx.backBuffer, &dwgfx.footerrect); if (map.finalmode) { @@ -2827,16 +2826,15 @@ void towerrender(Graphics& dwgfx, Game& game, mapclass& map, entityclass& obj, U } + dwgfx.footerrect.y = 230; if (dwgfx.translucentroomname) { - SDL_SetSurfaceAlphaMod(dwgfx.footerbuffer, 127); + SDL_BlitSurface(dwgfx.footerbuffer, NULL, dwgfx.backBuffer, &dwgfx.footerrect); } else { - SDL_SetSurfaceAlphaMod(dwgfx.footerbuffer, 255); + FillRect(dwgfx.backBuffer, dwgfx.footerrect, 0); } - dwgfx.footerrect.y = 230; - SDL_BlitSurface(dwgfx.footerbuffer, NULL, dwgfx.backBuffer, &dwgfx.footerrect); dwgfx.bprint(5, 231, map.roomname, 196, 196, 255 - help.glow, true); //dwgfx.rprint(5, 231,help.String(game.coins), 255 - help.glow/2, 255 - help.glow/2, 196, true);