reduce memory fragmentation with static savebuffer

This commit is contained in:
dborth 2009-06-01 21:56:31 +00:00
parent f3851f8c69
commit ead421820b
2 changed files with 9 additions and 9 deletions

View File

@ -35,7 +35,8 @@
#include "filebrowser.h"
#include "preferences.h"
unsigned char * savebuffer = NULL;
unsigned char savebuffer[SAVEBUFFERSIZE] ATTRIBUTE_ALIGN(32);
static mutex_t bufferLock = LWP_MUTEX_NULL;
FILE * file; // file pointer - the only one we should ever use!
bool unmountRequired[9] = { false, false, false, false, false, false, false, false, false };
bool isMounted[9] = { false, false, false, false, false, false, false, false, false };
@ -419,10 +420,11 @@ ParseDirectory(int method)
void
AllocSaveBuffer ()
{
while(savebuffer != NULL) // save buffer is in use
usleep(50); // wait for it to be free
if(bufferLock == LWP_MUTEX_NULL)
LWP_MutexInit(&bufferLock, false);
savebuffer = (unsigned char *) memalign(32, SAVEBUFFERSIZE);
if(bufferLock != LWP_MUTEX_NULL)
LWP_MutexLock(bufferLock);
memset (savebuffer, 0, SAVEBUFFERSIZE);
}
@ -433,10 +435,8 @@ AllocSaveBuffer ()
void
FreeSaveBuffer ()
{
if (savebuffer != NULL)
free(savebuffer);
savebuffer = NULL;
if(bufferLock != LWP_MUTEX_NULL)
LWP_MutexUnlock(bufferLock);
}
/****************************************************************************

View File

@ -38,7 +38,7 @@ u32 LoadSzFile(char * filepath, unsigned char * rbuffer);
u32 SaveFile(char * buffer, char *filepath, u32 datasize, int method, bool silent);
u32 SaveFile(char * filepath, u32 datasize, int method, bool silent);
extern unsigned char * savebuffer;
extern unsigned char savebuffer[SAVEBUFFERSIZE];
extern FILE * file;
extern bool unmountRequired[];
extern bool isMounted[];