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.