Stefan Dösinger stefandoesinger@gmx.at writes:
@@ -245,11 +252,12 @@ void IDirectDrawImpl_Destroy(IDirectDrawImpl *This) { IDirectDrawImpl *prev;
- DDOBJ_LOCK(This);
You shouldn't need locking in Destroy, if the refcount is zero no one else can be using the object.
for(prev = ddraw_list; prev; prev = prev->next)
{ if(prev->next == This) break;
} if(prev)
{
DDOBJ_LOCK(prev); prev->next = This->next;
DDOBJ_UNLOCK(prev);
}
You can't lock just one object, you have the protect the whole list.