summaryrefslogtreecommitdiff
path: root/amiga/bitmap.c
diff options
context:
space:
mode:
Diffstat (limited to 'amiga/bitmap.c')
-rw-r--r--amiga/bitmap.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/amiga/bitmap.c b/amiga/bitmap.c
index 77f85d1df..271f4af1b 100644
--- a/amiga/bitmap.c
+++ b/amiga/bitmap.c
@@ -20,6 +20,7 @@
#include "image/bitmap.h"
#include "amiga/bitmap.h"
#include <proto/exec.h>
+#include <proto/picasso96api.h>
/**
* Create a bitmap.
@@ -34,7 +35,7 @@ void *bitmap_create(int width, int height, unsigned int state)
{
struct bitmap *bitmap;
- bitmap = AllocVec(sizeof(struct bitmap),MEMF_PRIVATE);
+ bitmap = AllocVec(sizeof(struct bitmap),MEMF_PRIVATE | MEMF_CLEAR);
if(bitmap)
{
bitmap->pixdata = AllocVecTags(width*height*4,
@@ -101,6 +102,7 @@ void bitmap_destroy(void *bitmap)
if(bm)
{
+ if(bm->nativebm) p96FreeBitMap(bm->nativebm);
FreeVec(bm->pixdata);
bm->pixdata = NULL;
FreeVec(bm);
@@ -129,6 +131,10 @@ bool bitmap_save(void *bitmap, const char *path, unsigned flags)
* \param bitmap a bitmap, as returned by bitmap_create()
*/
void bitmap_modified(void *bitmap) {
+ struct bitmap *bm = bitmap;
+
+ p96FreeBitMap(bm->nativebm);
+ bm->nativebm = NULL;
}