diff --git a/desmume/src/render3D.cpp b/desmume/src/render3D.cpp index 8a25f0cad..96c145b91 100644 --- a/desmume/src/render3D.cpp +++ b/desmume/src/render3D.cpp @@ -190,6 +190,22 @@ void FragmentAttributesBuffer::SetAll(const FragmentAttributes &attr) } } +void* Render3D::operator new(size_t size) +{ + void *newPtr = malloc_alignedCacheLine(size); + if (newPtr == NULL) + { + throw std::bad_alloc(); + } + + return newPtr; +} + +void Render3D::operator delete(void *ptr) +{ + free_aligned(ptr); +} + Render3D::Render3D() { _renderID = RENDERID_NULL; diff --git a/desmume/src/render3D.h b/desmume/src/render3D.h index f720b7c4c..dd627d41c 100644 --- a/desmume/src/render3D.h +++ b/desmume/src/render3D.h @@ -129,6 +129,8 @@ protected: virtual Render3DError SetupViewport(const u32 viewportValue); public: + static void* operator new(size_t size); + static void operator delete(void *p); Render3D(); ~Render3D();