From e89043b1f69ffd94b30f80bc705f19c15e6baf30 Mon Sep 17 00:00:00 2001 From: badlogic Date: Wed, 18 Sep 2019 17:29:21 +0200 Subject: [PATCH] [cpp] Fixes #1444. SpineObject was using the wrong calloc. --- spine-cocos2dx/example/Classes/AppDelegate.cpp | 2 +- spine-cpp/spine-cpp/include/spine/Debug.h | 11 +++++++++++ spine-cpp/spine-cpp/src/spine/SpineObject.cpp | 4 ++-- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/spine-cocos2dx/example/Classes/AppDelegate.cpp b/spine-cocos2dx/example/Classes/AppDelegate.cpp index 3775a9893..dcade70a0 100644 --- a/spine-cocos2dx/example/Classes/AppDelegate.cpp +++ b/spine-cocos2dx/example/Classes/AppDelegate.cpp @@ -112,7 +112,7 @@ bool AppDelegate::applicationDidFinishLaunching () { // create a scene. it's an autorelease object //auto scene = RaptorExample::scene(); - auto scene = MixAndMatchExample::scene(); + auto scene = BatchingExample::scene(); // run director->runWithScene(scene); diff --git a/spine-cpp/spine-cpp/include/spine/Debug.h b/spine-cpp/spine-cpp/include/spine/Debug.h index 13c3213ec..04768a31b 100644 --- a/spine-cpp/spine-cpp/include/spine/Debug.h +++ b/spine-cpp/spine-cpp/include/spine/Debug.h @@ -63,12 +63,14 @@ public: void clearAllocations() { _allocated.clear(); + _usedMemory = 0; } virtual void *_alloc(size_t size, const char *file, int line) { void *result = _extension->_alloc(size, file, line); _allocated[result] = Allocation(result, size, file, line); _allocations++; + _usedMemory += size; return result; } @@ -76,14 +78,17 @@ public: void *result = _extension->_calloc(size, file, line); _allocated[result] = Allocation(result, size, file, line); _allocations++; + _usedMemory += size; return result; } virtual void *_realloc(void *ptr, size_t size, const char *file, int line) { + if (_allocated.count(ptr)) _usedMemory -= _allocated[ptr].size; _allocated.erase(ptr); void *result = _extension->_realloc(ptr, size, file, line); _reallocations++; _allocated[result] = Allocation(result, size, file, line); + _usedMemory += size; return result; } @@ -91,6 +96,7 @@ public: if (_allocated.count(mem)) { _extension->_free(mem, file, line); _frees++; + _usedMemory -= _allocated[mem].size; _allocated.erase(mem); return; } @@ -102,6 +108,10 @@ public: virtual char *_readFile(const String &path, int *length) { return _extension->_readFile(path, length); } + + size_t getUsedMemory() { + return _usedMemory; + } private: SpineExtension* _extension; @@ -109,6 +119,7 @@ private: size_t _allocations; size_t _reallocations; size_t _frees; + size_t _usedMemory; }; } diff --git a/spine-cpp/spine-cpp/src/spine/SpineObject.cpp b/spine-cpp/spine-cpp/src/spine/SpineObject.cpp index fdcdc49bf..98e8dc6f8 100644 --- a/spine-cpp/spine-cpp/src/spine/SpineObject.cpp +++ b/spine-cpp/spine-cpp/src/spine/SpineObject.cpp @@ -36,11 +36,11 @@ using namespace spine; void *SpineObject::operator new(size_t sz) { - return SpineExtension::calloc(sz, __FILE__, __LINE__); + return SpineExtension::getInstance()->_calloc(sz, __FILE__, __LINE__); } void *SpineObject::operator new(size_t sz, const char *file, int line) { - return SpineExtension::calloc(sz, file, line); + return SpineExtension::getInstance()->_calloc(sz, file, line); } void *SpineObject::operator new(size_t sz, void *ptr) {