Properly free RWops associated with Font objects
This commit is contained in:
parent
80d0b33dda
commit
d1bfc1e50c
|
@ -711,11 +711,21 @@ static int SDL_RWopsClose(SDL_RWops *ops)
|
|||
return (result != 0) ? 0 : -1;
|
||||
}
|
||||
|
||||
static int SDL_RWopsCloseFree(SDL_RWops *ops)
|
||||
{
|
||||
int result = SDL_RWopsClose(ops);
|
||||
|
||||
SDL_FreeRW(ops);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
const Uint32 SDL_RWOPS_PHYSFS = SDL_RWOPS_UNKNOWN+10;
|
||||
|
||||
void FileSystem::openRead(SDL_RWops &ops,
|
||||
const char *filename,
|
||||
FileType type)
|
||||
FileType type,
|
||||
bool freeOnClose)
|
||||
{
|
||||
PHYSFS_File *handle = openReadInt(filename, type);
|
||||
|
||||
|
@ -723,6 +733,10 @@ void FileSystem::openRead(SDL_RWops &ops,
|
|||
ops.seek = SDL_RWopsSeek;
|
||||
ops.read = SDL_RWopsRead;
|
||||
ops.write = SDL_RWopsWrite;
|
||||
|
||||
if (freeOnClose)
|
||||
ops.close = SDL_RWopsCloseFree;
|
||||
else
|
||||
ops.close = SDL_RWopsClose;
|
||||
|
||||
ops.type = SDL_RWOPS_PHYSFS;
|
||||
|
|
|
@ -71,7 +71,8 @@ public:
|
|||
|
||||
void openRead(SDL_RWops &ops,
|
||||
const char *filename,
|
||||
FileType type = Undefined);
|
||||
FileType type = Undefined,
|
||||
bool freeOnClose = false);
|
||||
|
||||
bool exists(const char *filename,
|
||||
FileType type = Undefined);
|
||||
|
|
|
@ -107,7 +107,7 @@ _TTF_Font *FontPool::request(const char *filename,
|
|||
else
|
||||
{
|
||||
ops = SDL_AllocRW();
|
||||
gState->fileSystem().openRead(*ops, path.constData(), FileSystem::Font);
|
||||
gState->fileSystem().openRead(*ops, path.constData(), FileSystem::Font, true);
|
||||
}
|
||||
|
||||
// FIXME 0.9 is guesswork at this point
|
||||
|
|
Loading…
Reference in New Issue