1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-04-01 01:36:41 +00:00

Use RecastGlobalAllocator for Detour

This commit is contained in:
elsid 2023-12-23 18:37:48 +01:00
parent c6a1196ec7
commit 0cf55d3617
No known key found for this signature in database
GPG key ID: 4DE04C198CBA7625

View file

@ -3,6 +3,7 @@
#include "recasttempallocator.hpp"
#include <DetourAlloc.h>
#include <RecastAlloc.h>
#include <cstdlib>
@ -14,10 +15,14 @@ namespace DetourNavigator
public:
static void init() { instance(); }
static void* alloc(size_t size, rcAllocHint hint)
static void* recastAlloc(size_t size, rcAllocHint hint) { return alloc(size, hint == RC_ALLOC_TEMP); }
static void* detourAlloc(size_t size, dtAllocHint hint) { return alloc(size, hint == DT_ALLOC_TEMP); }
static void* alloc(size_t size, bool temp)
{
void* result = nullptr;
if (rcLikely(hint == RC_ALLOC_TEMP))
if (rcLikely(temp))
result = tempAllocator().alloc(size);
if (rcUnlikely(!result))
result = allocPerm(size);
@ -38,7 +43,11 @@ namespace DetourNavigator
}
private:
RecastGlobalAllocator() { rcAllocSetCustom(&RecastGlobalAllocator::alloc, &RecastGlobalAllocator::free); }
RecastGlobalAllocator()
{
rcAllocSetCustom(&RecastGlobalAllocator::recastAlloc, &RecastGlobalAllocator::free);
dtAllocSetCustom(&RecastGlobalAllocator::detourAlloc, &RecastGlobalAllocator::free);
}
static RecastGlobalAllocator& instance()
{