Allow alThunkAddEntry to return a proper error

This commit is contained in:
Chris Robinson
2011-06-17 23:59:25 -07:00
parent 157e1394d6
commit 0d39ac6528
7 changed files with 22 additions and 18 deletions
+3 -3
View File
@@ -12,7 +12,7 @@ extern "C" {
void alThunkInit(void);
void alThunkExit(void);
ALuint alThunkAddEntry(ALvoid *ptr);
ALenum alThunkAddEntry(ALvoid *ptr, ALuint *idx);
void alThunkRemoveEntry(ALuint index);
ALvoid *alThunkLookupEntry(ALuint index);
@@ -20,7 +20,7 @@ ALvoid *alThunkLookupEntry(ALuint index);
#define ALTHUNK_INIT() alThunkInit()
#define ALTHUNK_EXIT() alThunkExit()
#define ALTHUNK_ADDENTRY(p) alThunkAddEntry(p)
#define ALTHUNK_ADDENTRY(p,i) alThunkAddEntry(p,i)
#define ALTHUNK_REMOVEENTRY(i) alThunkRemoveEntry(i)
#define ALTHUNK_LOOKUPENTRY(i) alThunkLookupEntry(i)
@@ -28,7 +28,7 @@ ALvoid *alThunkLookupEntry(ALuint index);
#define ALTHUNK_INIT()
#define ALTHUNK_EXIT()
#define ALTHUNK_ADDENTRY(p) ((ALuint)p)
#define ALTHUNK_ADDENTRY(p,i) ((*(i) = (ALuint)p),AL_NO_ERROR)
#define ALTHUNK_REMOVEENTRY(i) ((ALvoid)i)
#define ALTHUNK_LOOKUPENTRY(i) ((ALvoid*)(i))
+3 -3
View File
@@ -68,9 +68,9 @@ AL_API ALvoid AL_APIENTRY alGenAuxiliaryEffectSlots(ALsizei n, ALuint *effectslo
break;
}
slot->effectslot = (ALuint)ALTHUNK_ADDENTRY(slot);
err = InsertUIntMapEntry(&Context->EffectSlotMap,
slot->effectslot, slot);
err = ALTHUNK_ADDENTRY(slot, &slot->effectslot);
if(err == AL_NO_ERROR)
err = InsertUIntMapEntry(&Context->EffectSlotMap, slot->effectslot, slot);
if(err != AL_NO_ERROR)
{
ALTHUNK_REMOVEENTRY(slot->effectslot);
+3 -2
View File
@@ -161,8 +161,9 @@ AL_API ALvoid AL_APIENTRY alGenBuffers(ALsizei n, ALuint *buffers)
break;
}
buffer->buffer = (ALuint)ALTHUNK_ADDENTRY(buffer);
err = InsertUIntMapEntry(&device->BufferMap, buffer->buffer, buffer);
err = ALTHUNK_ADDENTRY(buffer, &buffer->buffer);
if(err == AL_NO_ERROR)
err = InsertUIntMapEntry(&device->BufferMap, buffer->buffer, buffer);
if(err != AL_NO_ERROR)
{
ALTHUNK_REMOVEENTRY(buffer->buffer);
+3 -2
View File
@@ -63,8 +63,9 @@ AL_API ALvoid AL_APIENTRY alGenEffects(ALsizei n, ALuint *effects)
break;
}
effect->effect = ALTHUNK_ADDENTRY(effect);
err = InsertUIntMapEntry(&device->EffectMap, effect->effect, effect);
err = ALTHUNK_ADDENTRY(effect, &effect->effect);
if(err == AL_NO_ERROR)
err = InsertUIntMapEntry(&device->EffectMap, effect->effect, effect);
if(err != AL_NO_ERROR)
{
ALTHUNK_REMOVEENTRY(effect->effect);
+3 -2
View File
@@ -59,8 +59,9 @@ AL_API ALvoid AL_APIENTRY alGenFilters(ALsizei n, ALuint *filters)
break;
}
filter->filter = ALTHUNK_ADDENTRY(filter);
err = InsertUIntMapEntry(&device->FilterMap, filter->filter, filter);
err = ALTHUNK_ADDENTRY(filter, &filter->filter);
if(err == AL_NO_ERROR)
err = InsertUIntMapEntry(&device->FilterMap, filter->filter, filter);
if(err != AL_NO_ERROR)
{
ALTHUNK_REMOVEENTRY(filter->filter);
+3 -3
View File
@@ -86,9 +86,9 @@ AL_API ALvoid AL_APIENTRY alGenSources(ALsizei n,ALuint *sources)
break;
}
source->source = (ALuint)ALTHUNK_ADDENTRY(source);
err = InsertUIntMapEntry(&Context->SourceMap, source->source,
source);
err = ALTHUNK_ADDENTRY(source, &source->source);
if(err == AL_NO_ERROR)
err = InsertUIntMapEntry(&Context->SourceMap, source->source, source);
if(err != AL_NO_ERROR)
{
ALTHUNK_REMOVEENTRY(source->source);
+4 -3
View File
@@ -50,7 +50,7 @@ void alThunkExit(void)
DeleteCriticalSection(&g_ThunkLock);
}
ALuint alThunkAddEntry(ALvoid *ptr)
ALenum alThunkAddEntry(ALvoid *ptr, ALuint *idx)
{
ALuint index;
@@ -71,7 +71,7 @@ ALuint alThunkAddEntry(ALvoid *ptr)
{
LeaveCriticalSection(&g_ThunkLock);
AL_PRINT("Realloc failed to increase to %u enties!\n", g_ThunkArraySize*2);
return 0;
return AL_OUT_OF_MEMORY;
}
memset(&NewList[g_ThunkArraySize], 0, g_ThunkArraySize*sizeof(ThunkEntry));
g_ThunkArraySize *= 2;
@@ -80,10 +80,11 @@ ALuint alThunkAddEntry(ALvoid *ptr)
g_ThunkArray[index].ptr = ptr;
g_ThunkArray[index].InUse = AL_TRUE;
*idx = index+1;
LeaveCriticalSection(&g_ThunkLock);
return index+1;
return AL_NO_ERROR;
}
void alThunkRemoveEntry(ALuint index)