summaryrefslogtreecommitdiff
path: root/frontends/amiga/memory.h
diff options
context:
space:
mode:
Diffstat (limited to 'frontends/amiga/memory.h')
-rw-r--r--frontends/amiga/memory.h28
1 files changed, 23 insertions, 5 deletions
diff --git a/frontends/amiga/memory.h b/frontends/amiga/memory.h
index 63452f61a..a3b6b5e37 100644
--- a/frontends/amiga/memory.h
+++ b/frontends/amiga/memory.h
@@ -31,13 +31,31 @@
#endif
/* Alloc/free a block cleared to non-zero */
+#ifdef __amigaos4__
+#define ami_memory_clear_alloc(s,v) AllocVecTags(s, AVT_ClearWithValue, v, TAG_DONE)
+#define ami_memory_clear_free(p) FreeVec(p)
+#else
void *ami_memory_clear_alloc(size_t size, UBYTE value);
-void ami_memory_clear_free(void *p);
+#define ami_memory_clear_free(p) free(p)
+#endif
/* Itempool cross-compatibility */
-APTR ami_misc_itempool_create(int size);
-void ami_misc_itempool_delete(APTR pool);
-APTR ami_misc_itempool_alloc(APTR pool, int size);
-void ami_misc_itempool_free(APTR pool, APTR item, int size);
+#ifdef __amigaos4__
+#define ami_memory_itempool_create(s) AllocSysObjectTags(ASOT_ITEMPOOL, \
+ ASOITEM_MFlags, MEMF_PRIVATE, \
+ ASOITEM_ItemSize, s, \
+ ASOITEM_GCPolicy, ITEMGC_AFTERCOUNT, \
+ ASOITEM_GCParameter, 100, \
+ TAG_DONE)
+#define ami_memory_itempool_delete(p) FreeSysObject(ASOT_ITEMPOOL, p)
+#define ami_memory_itempool_alloc(p,s) ItemPoolAlloc(p)
+#define ami_memory_itempool_free(p,i,s) ItemPoolFree(p,i)
+#else
+#define ami_memory_itempool_create(s) CreatePool(MEMF_ANY, 20 * s, s)
+#define ami_memory_itempool_delete(p) DeletePool(p)
+#define ami_memory_itempool_alloc(p,s) AllocPooled(p, s)
+#define ami_memory_itempool_free(p,i,s) FreePooled(p,i,s)
#endif
+#endif //AMIGA_MEMORY_H
+