summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2016-01-21 20:42:49 +0000
committerChris Young <chris@unsatisfactorysoftware.co.uk>2016-01-21 20:42:49 +0000
commitb41685208f25a906b8a08809e67c2a1a2ec153d9 (patch)
tree242bf836618e5de28240d7848998bf26e8c2d36b
parent0cc19b10fcd9f43bb4c9d83654d2d07cad139b12 (diff)
downloadnetsurf-b41685208f25a906b8a08809e67c2a1a2ec153d9.tar.gz
netsurf-b41685208f25a906b8a08809e67c2a1a2ec153d9.tar.bz2
Revert "alloc bitmap structures using itempools"
This reverts commit 0cc19b10fcd9f43bb4c9d83654d2d07cad139b12. This caused memory leakage, as the memory pool is removed before the core has destroyed all the bitmaps.
-rw-r--r--amiga/bitmap.c43
-rwxr-xr-xamiga/bitmap.h3
-rw-r--r--amiga/gui.c18
3 files changed, 15 insertions, 49 deletions
diff --git a/amiga/bitmap.c b/amiga/bitmap.c
index 5ba74020c..6984d3e0c 100644
--- a/amiga/bitmap.c
+++ b/amiga/bitmap.c
@@ -44,28 +44,21 @@
#include "amiga/misc.h"
#include "amiga/rtg.h"
-static APTR pool_bitmap = NULL;
-
/* exported function documented in amiga/bitmap.h */
void *amiga_bitmap_create(int width, int height, unsigned int state)
{
struct bitmap *bitmap;
+
+ bitmap = ami_misc_allocvec_clear(sizeof(struct bitmap), 0);
+ if(bitmap)
+ {
+ bitmap->pixdata = ami_misc_allocvec_clear(width*height*4, 0xff);
+ bitmap->width = width;
+ bitmap->height = height;
- bitmap = ami_misc_itempool_alloc(pool_bitmap, sizeof(struct bitmap));
- if(bitmap == NULL) return NULL;
-
- bitmap->pixdata = ami_misc_allocvec_clear(width*height*4, 0xff);
- bitmap->width = width;
- bitmap->height = height;
-
- if(state & BITMAP_OPAQUE) bitmap->opaque = true;
- else bitmap->opaque = false;
-
- bitmap->nativebm = NULL;
- bitmap->nativebmwidth = 0;
- bitmap->nativebmheight = 0;
- bitmap->native_mask = NULL;
- bitmap->dto = NULL;
+ if(state & BITMAP_OPAQUE) bitmap->opaque = true;
+ else bitmap->opaque = false;
+ }
return bitmap;
}
@@ -116,7 +109,7 @@ void amiga_bitmap_destroy(void *bitmap)
bm->native_mask = NULL;
bm->dto = NULL;
- ami_misc_itempool_free(pool_bitmap, bm, sizeof(struct bitmap));
+ FreeVec(bm);
bm = NULL;
}
}
@@ -589,20 +582,6 @@ static nserror bitmap_render(struct bitmap *bitmap, hlcache_handle *content)
return NSERROR_OK;
}
-void amiga_bitmap_fini(void)
-{
- if(pool_bitmap) ami_misc_itempool_delete(pool_bitmap);
-}
-
-bool amiga_bitmap_init(void)
-{
- if((pool_bitmap = ami_misc_itempool_create(sizeof(struct bitmap)))) {
- return true;
- } else {
- return false;
- }
-}
-
static struct gui_bitmap_table bitmap_table = {
.create = amiga_bitmap_create,
.destroy = amiga_bitmap_destroy,
diff --git a/amiga/bitmap.h b/amiga/bitmap.h
index 4607d9f99..ff1b01c6e 100755
--- a/amiga/bitmap.h
+++ b/amiga/bitmap.h
@@ -53,9 +53,6 @@ PLANEPTR ami_bitmap_get_mask(struct bitmap *bitmap, int width,
Object *ami_datatype_object_from_bitmap(struct bitmap *bitmap);
struct bitmap *ami_bitmap_from_datatype(char *filename);
-void amiga_bitmap_fini(void);
-bool amiga_bitmap_init(void);
-
#ifndef __amigaos4__
void ami_bitmap_argb_to_rgba(struct bitmap *bm);
#endif
diff --git a/amiga/gui.c b/amiga/gui.c
index 9aedad86f..58e7938fd 100644
--- a/amiga/gui.c
+++ b/amiga/gui.c
@@ -405,21 +405,8 @@ bool ami_locate_resource(char *fullpath, const char *file)
return found;
}
-/* Frees stuff opened by ami_open_resources() */
-static void ami_resources_free(void)
-{
- FreeSysObject(ASOT_PORT, appport);
- FreeSysObject(ASOT_PORT, sport);
- FreeSysObject(ASOT_PORT, schedulermsgport);
-
- FreeStringClass(urlStringClass);
- amiga_bitmap_fini();
-}
-
static bool ami_open_resources(void)
{
- if(!amiga_bitmap_init()) return false;
-
urlStringClass = MakeStringClass();
if(!(appport = AllocSysObjectTags(ASOT_PORT,
@@ -3047,10 +3034,13 @@ static void gui_quit(void)
LOG("Freeing scheduler resources");
ami_schedule_free();
- ami_resources_free();
+ FreeSysObject(ASOT_PORT, appport);
+ FreeSysObject(ASOT_PORT, sport);
+ FreeSysObject(ASOT_PORT, schedulermsgport);
ami_file_req_free();
ami_openurl_close();
+ FreeStringClass(urlStringClass);
FreeObjList(window_list);