mirror of
https://github.com/reactos/reactos.git
synced 2024-07-06 20:55:16 +00:00
- Don't release object which drivers should release
- Fixes a few crashes when starting another audio stream svn path=/trunk/; revision=41512
This commit is contained in:
parent
88b93de202
commit
93a8c8a165
|
@ -692,8 +692,6 @@ CloseStreamRoutine(
|
|||
}
|
||||
|
||||
This->ServiceGroup->lpVtbl->RemoveMember(This->ServiceGroup, (PSERVICESINK)&This->lpVtblServiceSink);
|
||||
This->ServiceGroup->lpVtbl->Release(This->ServiceGroup);
|
||||
This->DmaChannel->lpVtbl->Release(This->DmaChannel);
|
||||
|
||||
Status = This->Port->lpVtbl->QueryInterface(This->Port, &IID_ISubdevice, (PVOID*)&ISubDevice);
|
||||
if (NT_SUCCESS(Status))
|
||||
|
@ -735,7 +733,6 @@ CloseStreamRoutine(
|
|||
This->Filter->lpVtbl->FreePin(This->Filter, (IPortPinWaveCyclic*)This);
|
||||
DPRINT1("Closing stream at Irql %u\n", KeGetCurrentIrql());
|
||||
Stream->lpVtbl->Release(Stream);
|
||||
/* this line is never reached */
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -391,14 +391,12 @@ CloseStreamRoutine(
|
|||
if (This->State != KSSTATE_STOP)
|
||||
{
|
||||
This->Stream->lpVtbl->SetState(This->Stream, KSSTATE_STOP);
|
||||
KeStallExecutionProcessor(10);
|
||||
}
|
||||
}
|
||||
|
||||
if (This->ServiceGroup)
|
||||
{
|
||||
This->ServiceGroup->lpVtbl->RemoveMember(This->ServiceGroup, (PSERVICESINK)&This->lpVtblServiceSink);
|
||||
This->ServiceGroup->lpVtbl->Release(This->ServiceGroup);
|
||||
}
|
||||
|
||||
Status = This->Port->lpVtbl->QueryInterface(This->Port, &IID_ISubdevice, (PVOID*)&ISubDevice);
|
||||
|
@ -407,9 +405,9 @@ CloseStreamRoutine(
|
|||
Status = ISubDevice->lpVtbl->GetDescriptor(ISubDevice, &Descriptor);
|
||||
if (NT_SUCCESS(Status))
|
||||
{
|
||||
ISubDevice->lpVtbl->Release(ISubDevice);
|
||||
Descriptor->Factory.Instances[This->ConnectDetails->PinId].CurrentPinInstanceCount--;
|
||||
}
|
||||
ISubDevice->lpVtbl->Release(ISubDevice);
|
||||
}
|
||||
|
||||
if (This->Format)
|
||||
|
@ -418,11 +416,6 @@ CloseStreamRoutine(
|
|||
This->Format = NULL;
|
||||
}
|
||||
|
||||
if (This->WaveStream)
|
||||
{
|
||||
This->WaveStream->lpVtbl->Release(This->WaveStream);
|
||||
}
|
||||
|
||||
/* complete the irp */
|
||||
Ctx->Irp->IoStatus.Information = 0;
|
||||
Ctx->Irp->IoStatus.Status = STATUS_SUCCESS;
|
||||
|
@ -440,7 +433,6 @@ CloseStreamRoutine(
|
|||
This->Stream = NULL;
|
||||
DPRINT1("Closing stream at Irql %u\n", KeGetCurrentIrql());
|
||||
Stream->lpVtbl->Release(Stream);
|
||||
/* this line is never reached */
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -702,9 +702,9 @@ CloseStreamRoutine(
|
|||
Status = ISubDevice->lpVtbl->GetDescriptor(ISubDevice, &Descriptor);
|
||||
if (NT_SUCCESS(Status))
|
||||
{
|
||||
ISubDevice->lpVtbl->Release(ISubDevice);
|
||||
Descriptor->Factory.Instances[This->ConnectDetails->PinId].CurrentPinInstanceCount--;
|
||||
}
|
||||
ISubDevice->lpVtbl->Release(ISubDevice);
|
||||
}
|
||||
|
||||
if (This->Format)
|
||||
|
@ -735,7 +735,6 @@ CloseStreamRoutine(
|
|||
This->Stream = NULL;
|
||||
DPRINT1("Closing stream at Irql %u\n", KeGetCurrentIrql());
|
||||
Stream->lpVtbl->Release(Stream);
|
||||
/* this line is never reached */
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue