(svn r15555) -Codechange: remove the mallocs + frees for temporary data from loading sprites.

This commit is contained in:
rubidium
2009-02-23 10:50:25 +00:00
parent 2a2ee1fdb9
commit 44821e60eb
5 changed files with 39 additions and 13 deletions

View File

@@ -15,12 +15,32 @@ public:
uint8 m; ///< Remap-channel
};
/**
* Structure for passing information from the sprite loader to the blitter.
* You can only use this struct once at a time when using AllocateData to
* allocate the memory as that will always return the same memory address.
* This to prevent thousands of malloc + frees just to load a sprite.
*/
struct Sprite {
Sprite() : data(NULL) {}
~Sprite() { assert(this->data == NULL || this->data == Sprite::mem); }
uint16 height; ///< Height of the sprite
uint16 width; ///< Width of the sprite
int16 x_offs; ///< The x-offset of where the sprite will be drawn
int16 y_offs; ///< The y-offset of where the sprite will be drawn
SpriteLoader::CommonPixel *data; ///< The sprite itself
/**
* Allocate the sprite data of this sprite.
* @param size the minimum size of the data field.
*/
void AllocateData(size_t size);
private:
/** Allocated memory to pass sprite data around */
static SpriteLoader::CommonPixel *mem;
/** Size (in items) of the above memory. */
static size_t size;
};
/**