changeset 614:eed8d6abd89b

Pre-convert/scale menu background and use direct blitting.
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 12 Apr 2013 12:35:15 +0300
parents 15cd5b8a29b2
children 024bc22c54d7
files dmsimple.c
diffstat 1 files changed, 15 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/dmsimple.c	Fri Apr 12 12:34:17 2013 +0300
+++ b/dmsimple.c	Fri Apr 12 12:35:15 2013 +0300
@@ -176,7 +176,6 @@
     DMResource *file = NULL;
     SDL_Surface *menuBgImage = NULL, *menuBarImage = NULL;
     int result, menuState = -1, nmenuList, menuChoice = 0;
-    DMScaledBlitFunc menuBgBlit;
     char menuStr[64];
 
     // Compute a list of valid modes
@@ -232,9 +231,21 @@
             result, dmErrorStr(result));
         goto out;
     }
-    
+
+    SDL_Surface *tmp = dmConvertScaledSurface(menuBgImage,
+        engine.screen->format, engine.screen->flags,
+        engine.screen->w, engine.screen->h);
+    if (tmp == NULL)
+    {
+        dmError("Could not convert setup screen background image.\n");
+        goto out;
+    }
+
+    SDL_FreeSurface(menuBgImage);
+    menuBgImage = tmp;
+
     SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL);
-    menuBgBlit = dmGetScaledBlitFunc(menuBgImage->format, engine.screen->format, DMD_NONE);
+    
     int menuEntryHeight = menuFont->height + 1,
         menuHeight = DM_VSETUP_MENU_HEIGHT / menuEntryHeight;
 
@@ -288,8 +299,7 @@
         }
 
         // Render the menu
-        dmClearSurface(engine.screen, dmMapRGB(engine.screen, 0,0,0));
-        menuBgBlit(menuBgImage, 0, 0, engine.screen->w, engine.screen->h, engine.screen);
+        dmDirectBlitSurface(menuBgImage, engine.screen);
         
         // XXX/TODO: Some hardcoded bits here ...
         float t = engineGetTimeDT(&engine);