diff options
author | 2010-01-11 18:02:38 +0000 | |
---|---|---|
committer | 2010-01-11 18:02:38 +0000 | |
commit | a9c5a5a27e0511163a774525f86cd9b66e497944 (patch) | |
tree | 758e84268350230cbb894d67b017ac1b300c9990 /src/emu/emualloc.h | |
parent | 2441940e7a1bdc7d637f6b01792846ee493291b9 (diff) |
Fixed memory freeing so that is it released in the opposite order
it was originally allocated.
Changed machine->region() to return a pointer to the now-public
region_info class.
Added new member function space() to the device_config, along with
shorter constants to be used (AS_PROGRAM, AS_DATA, AS_IO). With no
parameters, space() returns the first address space, which is
commonly the only space present. Updated a few devices that referenced
the old space[] array to call the new function instead.
Added #define to emualloc to ensure delete can't be freely used.
Diffstat (limited to 'src/emu/emualloc.h')
-rw-r--r-- | src/emu/emualloc.h | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/emu/emualloc.h b/src/emu/emualloc.h index b1a1fdf26ff..ebf6d44c190 100644 --- a/src/emu/emualloc.h +++ b/src/emu/emualloc.h @@ -64,11 +64,15 @@ private: public: resource_pool_item(void *_ptr, size_t _size) : next(NULL), + ordered_next(NULL), + ordered_prev(NULL), ptr(_ptr), size(_size) { } virtual ~resource_pool_item() { } resource_pool_item * next; + resource_pool_item * ordered_next; + resource_pool_item * ordered_prev; void * ptr; size_t size; }; @@ -138,8 +142,9 @@ public: private: static const int hash_prime = 193; - resource_pool_item * hash[hash_prime]; osd_lock * listlock; + resource_pool_item * hash[hash_prime]; + resource_pool_item * ordered_head; }; @@ -219,4 +224,14 @@ void operator delete(void *ptr, const char *file, int line, const zeromem_t &); void operator delete[](void *ptr, const char *file, int line, const zeromem_t &); + +/*************************************************************************** + ADDITIONAL MACROS +***************************************************************************/ + +// disable direct deletion +#define delete __error_use_pool_free_mechanisms__ + + + #endif /* __EMUALLOC_H__ */ |