summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rsElement.cpp7
-rw-r--r--rsElement.h2
-rw-r--r--rsType.cpp7
-rw-r--r--rsType.h2
4 files changed, 18 insertions, 0 deletions
diff --git a/rsElement.cpp b/rsElement.cpp
index 3509b12f..f7b064ab 100644
--- a/rsElement.cpp
+++ b/rsElement.cpp
@@ -34,6 +34,13 @@ Element::~Element() {
clear();
}
+void Element::operator delete(void* ptr) {
+ if (ptr) {
+ Element *e = (Element*) ptr;
+ e->getContext()->mHal.funcs.freeRuntimeMem(ptr);
+ }
+}
+
void Element::preDestroy() const {
for (uint32_t ct = 0; ct < mRSC->mStateElement.mElements.size(); ct++) {
if (mRSC->mStateElement.mElements[ct] == this) {
diff --git a/rsElement.h b/rsElement.h
index 57cde180..5a3bc13c 100644
--- a/rsElement.h
+++ b/rsElement.h
@@ -57,6 +57,8 @@ public:
};
Hal mHal;
+ void operator delete(void* ptr);
+
uint32_t getGLType() const;
uint32_t getGLFormat() const;
diff --git a/rsType.cpp b/rsType.cpp
index 04a3b79c..d1a84eac 100644
--- a/rsType.cpp
+++ b/rsType.cpp
@@ -45,6 +45,13 @@ Type::~Type() {
clear();
}
+void Type::operator delete(void* ptr) {
+ if (ptr) {
+ Type *t = (Type*) ptr;
+ t->getContext()->mHal.funcs.freeRuntimeMem(ptr);
+ }
+}
+
void Type::clear() {
if (mHal.state.lodCount) {
delete [] mHal.state.lodDimX;
diff --git a/rsType.h b/rsType.h
index b4ae107e..e44e270a 100644
--- a/rsType.h
+++ b/rsType.h
@@ -56,6 +56,8 @@ public:
};
Hal mHal;
+ void operator delete(void* ptr);
+
Type * createTex2D(const Element *, size_t w, size_t h, bool mip);
size_t getCellCount() const {return mCellCount;}