Skip to content

Commit

Permalink
Merge branch 'detour_alloc' into 'master'
Browse files Browse the repository at this point in the history
Use RecastGlobalAllocator for Detour

See merge request OpenMW/openmw!3678
  • Loading branch information
jvoisin committed Dec 26, 2023
2 parents 5d53eb7 + 329500b commit c3dfc8c
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 4 deletions.
15 changes: 12 additions & 3 deletions components/detournavigator/recastglobalallocator.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

#include "recasttempallocator.hpp"

#include <DetourAlloc.h>
#include <RecastAlloc.h>

#include <cstdlib>
Expand All @@ -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);
Expand All @@ -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()
{
Expand Down
1 change: 0 additions & 1 deletion components/detournavigator/recasttempallocator.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,6 @@ namespace DetourNavigator
mTop = mPrev;
mPrev = getTempPtrPrev(mTop);
}
return;
}

private:
Expand Down

0 comments on commit c3dfc8c

Please sign in to comment.