quartz: Avoid asserting from used samples on allocator release.

This commit is contained in:
Chris Robinson 2007-03-13 10:26:48 -07:00 committed by Alexandre Julliard
parent 809f68420f
commit 2e726e6e11
1 changed files with 15 additions and 2 deletions

View File

@ -490,7 +490,10 @@ static ULONG WINAPI StdMediaSample2_Release(IMediaSample2 * iface)
if (!ref)
{
IMemAllocator_ReleaseBuffer(This->pParent, (IMediaSample *)iface);
if (This->pParent)
IMemAllocator_ReleaseBuffer(This->pParent, (IMediaSample *)iface);
else
StdMediaSample2_Delete(This);
return 0;
}
return ref;
@ -813,7 +816,17 @@ static HRESULT StdMemAllocator_Free(IMemAllocator * iface)
StdMemAllocator *This = (StdMemAllocator *)iface;
struct list * cursor;
assert(list_empty(&This->base.used_list));
if (!list_empty(&This->base.used_list))
{
WARN("Freeing allocator with outstanding samples!\n");
while ((cursor = list_head(&This->base.used_list)) != NULL)
{
StdMediaSample2 *pSample;
list_remove(cursor);
pSample = LIST_ENTRY(cursor, StdMediaSample2, listentry);
pSample->pParent = NULL;
}
}
while ((cursor = list_head(&This->base.free_list)) != NULL)
{