diff options
| author | Tobin Ehlis <tobin@lunarg.com> | 2014-11-25 18:01:12 -0700 |
|---|---|---|
| committer | Courtney Goeltzenleuchter <courtney@LunarG.com> | 2014-11-26 10:03:12 -0700 |
| commit | 456239bbe7d97518c35dbdb2cb72a56044dfdef8 (patch) | |
| tree | 6df46f3b79d488d195a7246daa641bb69517e1fa | |
| parent | 5d2523831666167338cffe37c0f47972613c43cf (diff) | |
| download | usermoji-456239bbe7d97518c35dbdb2cb72a56044dfdef8.tar.xz | |
layers: Report memory leaks as warnings in MemTracker layer.
| -rw-r--r-- | layers/mem_tracker.c | 7 | ||||
| -rw-r--r-- | layers/mem_tracker.h | 1 |
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; |
