diff options
-rw-r--r-- | Alc/ALc.c | 16 |
1 files changed, 12 insertions, 4 deletions
@@ -2283,12 +2283,20 @@ ALC_API ALCvoid ALC_APIENTRY alcDestroyContext(ALCcontext *context) */ ALC_API ALCcontext* ALC_APIENTRY alcGetCurrentContext(ALCvoid) { - ALCcontext *pContext; + ALCcontext *Context; - if((pContext=GetContextSuspended()) != NULL) - ProcessContext(pContext); + LockLists(); + Context = tls_get(LocalContext); + if(Context && !IsContext(Context)) + { + tls_set(LocalContext, NULL); + Context = NULL; + } + if(!Context) + Context = GlobalContext; + UnlockLists(); - return pContext; + return Context; } /* |