From 456239bbe7d97518c35dbdb2cb72a56044dfdef8 Mon Sep 17 00:00:00 2001 From: Tobin Ehlis Date: Tue, 25 Nov 2014 18:01:12 -0700 Subject: layers: Report memory leaks as warnings in MemTracker layer. --- layers/mem_tracker.c | 7 +++++++ layers/mem_tracker.h | 1 + 2 files changed, 8 insertions(+) (limited to 'layers') 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; -- cgit v1.2.3