changeset 603:36b544eb6f4b

Fixes in resource management.
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 12 Apr 2013 10:43:09 +0300
parents c1a5652e473d
children 72c6120271a7
files dmres.c dmsimple.c
diffstat 2 files changed, 23 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/dmres.c	Fri Apr 12 09:34:21 2013 +0300
+++ b/dmres.c	Fri Apr 12 10:43:09 2013 +0300
@@ -564,6 +564,13 @@
 /* FS file handling functions. These functions call the actual
  * functions depending on where the file is located.
  */
+static void dmf_reset(DMResource *handle)
+{
+    if (handle->fops != NULL)
+        dmfseek(handle, 0, SEEK_SET);
+}
+
+
 static void dmf_init_fops(DMResource *handle)
 {
     // Check fops
@@ -583,6 +590,7 @@
         handle->fops = NULL;
 #endif
     }
+    dmf_reset(handle);
 }
 
 
@@ -608,6 +616,9 @@
     {
         if (handle->fops->fopen != NULL)
             ret = handle->fops->fopen(handle);
+        else
+        if (handle->fops->preload != NULL)
+            ret = handle->fops->preload(handle);
     }
 
     // Check if resource data is to be preloaded
@@ -632,6 +643,7 @@
         }
     }
 
+    dmf_reset(handle);
     return ret;
 }
 
@@ -701,6 +713,7 @@
     // Increase refcount
     dmres_ref(handle);
 
+    dmf_reset(handle);
     return handle;
 }
 
--- a/dmsimple.c	Fri Apr 12 09:34:21 2013 +0300
+++ b/dmsimple.c	Fri Apr 12 10:43:09 2013 +0300
@@ -6,6 +6,8 @@
 #include "setupfont.h"
 #include "setupimage.h"
 
+static const char *engineSetupImageName = "SetupImage.png";
+static const char *engineSetupFontName = "SetupFont.dmf";
 
 static DMEngineData engine;
 
@@ -165,6 +167,7 @@
 }
 
 
+
 int engineVideoSetup()
 {
     DMBitmapFont *menuFont = NULL;
@@ -172,7 +175,7 @@
     SDL_Surface *menuBgImage = NULL;
     int result, menuState = -1, nmenuList, menuChoice = 0;
     DMScaledBlitFunc menuBgBlit;
-    char menuStr[128];
+    char menuStr[64];
 
     // Compute a list of valid modes
 
@@ -182,12 +185,13 @@
         goto out;
 
     // Fetch and decompress setup image, try regular resources first
-    file = dmres_find(engine.resources, "SetupImage.png");
+    file = dmf_open(engine.resources, engineSetupImageName);
     if (file == NULL)
-        file = dmf_create_memio(NULL, "SetupImage", engineSetupImage, sizeof(engineSetupImage));
+        file = dmf_create_memio(NULL, engineSetupImageName, engineSetupImage, sizeof(engineSetupImage));
 
     menuBgImage = dmLoadImage(file);
     dmf_close(file);
+
     if (menuBgImage == NULL)
     {
         dmError("Could not instantiate setup screen image, %d: %s\n",
@@ -207,9 +211,9 @@
 
 
     // Load up the bitmap font
-    file = dmres_find(engine.resources, "SetupFont.dmf");
+    file = dmf_open(engine.resources, engineSetupFontName);
     if (file == NULL)
-        file = dmf_create_memio(NULL, "SetupFont", engineSetupFont, sizeof(engineSetupFont));
+        file = dmf_create_memio(NULL, engineSetupFontName, engineSetupFont, sizeof(engineSetupFont));
 
     result = dmLoadBitmapFont(file, &menuFont);
     dmf_close(file);
@@ -277,7 +281,7 @@
         menuBgBlit(menuBgImage, 0, 0, engine.screen->w, engine.screen->h, engine.screen);
         
         // XXX/TODO: Some hardcoded bits here ...
-        int entry, yc = 0;
+        int entry;
         nmenuList = 5;
         
         dmFillRect(engine.screen,