# HG changeset patch # User Matti Hamalainen # Date 1365752589 -10800 # Node ID 36b544eb6f4b194cf2854d411ecd133765271591 # Parent c1a5652e473de965c15407f86c4c8ddcf43dd411 Fixes in resource management. diff -r c1a5652e473d -r 36b544eb6f4b dmres.c --- 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; } diff -r c1a5652e473d -r 36b544eb6f4b dmsimple.c --- 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,