static ULONG WINAPI d3dadapter9_Release( struct d3dadapter9 *This ) { ULONG refs = InterlockedDecrement(&This->refs); TRACE("%p decreasing refcount to %u.\n", This, refs); if (refs == 0) { /* dtor */ if (This->map) { HeapFree(GetProcessHeap(), 0, This->map); } if (This->groups) { int i, j; for (i = 0; i < This->ngroups; ++i) { if (This->groups[i].outputs) { for (j = 0; j < This->groups[i].noutputs; ++j) { if (This->groups[i].outputs[j].modes) { HeapFree(GetProcessHeap(), 0, This->groups[i].outputs[j].modes); } } HeapFree(GetProcessHeap(), 0, This->groups[i].outputs); } if (This->groups[i].adapter) { ID3DAdapter9_Release(This->groups[i].adapter); } } HeapFree(GetProcessHeap(), 0, This->groups); } HeapFree(GetProcessHeap(), 0, This); } return refs; }
static ULONG WINAPI d3dadapter9_Release( struct d3dadapter9 *This ) { ULONG refs = InterlockedDecrement(&This->refs); TRACE("%p decreasing refcount to %u.\n", This, refs); if (refs == 0) { /* dtor */ if (This->adapter){ ID3DAdapter9_Release(This->adapter); } free(This); } return refs; }
ULONG D3DAdapter9_Release(ID3DAdapter9 *This) { return ID3DAdapter9_Release(This); }