From 238a74741442abb9dbc8144cf2da298eecf45461 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 10 Sep 2011 03:13:25 -0700 Subject: Warn about contexts that are errantly left current These won't show by default in release mode, unless the log level is changed to show warnings. --- Alc/ALc.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'Alc') diff --git a/Alc/ALc.c b/Alc/ALc.c index 565755a6..635ad7ee 100644 --- a/Alc/ALc.c +++ b/Alc/ALc.c @@ -1481,6 +1481,7 @@ void ALCcontext_DecRef(ALCcontext *context) static void ReleaseThreadCtx(void *ptr) { + WARN("Context %p still current for thread being destroyed\n", ptr); ALCcontext_DecRef(ptr); } @@ -2236,8 +2237,18 @@ ALC_API ALCvoid ALC_APIENTRY alcDestroyContext(ALCcontext *context) } UnlockDevice(Device); + if(pthread_getspecific(LocalContext) == context) + { + WARN("Context %p destroyed while current on thread\n", context); + pthread_setspecific(LocalContext, NULL); + ALCcontext_DecRef(context); + } + if(CompExchangePtr((void**)&GlobalContext, context, NULL)) + { + WARN("Context %p destroyed while globally current\n", context); ALCcontext_DecRef(context); + } if(Device->NumContexts == 0) { -- cgit v1.2.3