aboutsummaryrefslogtreecommitdiff
path: root/layers
diff options
context:
space:
mode:
authorTobin Ehlis <tobin@lunarg.com>2014-11-25 18:01:12 -0700
committerCourtney Goeltzenleuchter <courtney@LunarG.com>2014-11-26 10:03:12 -0700
commit456239bbe7d97518c35dbdb2cb72a56044dfdef8 (patch)
tree6df46f3b79d488d195a7246daa641bb69517e1fa /layers
parent5d2523831666167338cffe37c0f47972613c43cf (diff)
downloadusermoji-456239bbe7d97518c35dbdb2cb72a56044dfdef8.tar.xz
layers: Report memory leaks as warnings in MemTracker layer.
Diffstat (limited to 'layers')
-rw-r--r--layers/mem_tracker.c7
-rw-r--r--layers/mem_tracker.h1
2 files changed, 8 insertions, 0 deletions
diff --git a/layers/mem_tracker.c b/layers/mem_tracker.c
index 37e40267..b7e3f651 100644
--- a/layers/mem_tracker.c
+++ b/layers/mem_tracker.c
@@ -1081,6 +1081,13 @@ XGL_LAYER_EXPORT XGL_RESULT XGLAPI xglDestroyDevice(XGL_DEVICE device)
sprintf(str, "Issue deleting global CB list in xglDestroyDevice()");
layerCbMsg(XGL_DBG_MSG_ERROR, XGL_VALIDATION_LEVEL_0, device, 0, MEMTRACK_INTERNAL_ERROR, "MEM", str);
}
+ // Report any memory leaks
+ GLOBAL_MEM_OBJ_NODE* pTrav = pGlobalMemObjHead;
+ while (pTrav) {
+ sprintf(str, "Mem Object %p has not been freed. You should clean up this memory by calling xglFreeMemory(%p) prior to xglDestroyDevice().", pTrav->mem, pTrav->mem);
+ layerCbMsg(XGL_DBG_MSG_WARNING, XGL_VALIDATION_LEVEL_0, pTrav->mem, 0, MEMTRACK_MEMORY_LEAK, "MEM", str);
+ pTrav = pTrav->pNextGlobalNode;
+ }
XGL_RESULT result = nextTable.DestroyDevice(device);
return result;
}
diff --git a/layers/mem_tracker.h b/layers/mem_tracker.h
index 04ab22be..e9a9d58d 100644
--- a/layers/mem_tracker.h
+++ b/layers/mem_tracker.h
@@ -39,5 +39,6 @@ typedef enum _MEM_TRACK_ERROR
MEMTRACK_DESTROY_OBJECT_ERROR = 11, // Destroying an object that has a memory reference
MEMTRACK_MEMORY_BINDING_ERROR = 12, // Error during one of many calls that bind memory to object or CB
MEMTRACK_OUT_OF_MEMORY_ERROR = 13, // malloc failed
+ MEMTRACK_MEMORY_LEAK = 14, // Failure to call xglFreeMemory on Mem Obj prior to DestroyDevice
} MEM_TRACK_ERROR;