[PORTCLS]
authorJohannes Anderwald <johannes.anderwald@reactos.org>
Tue, 29 Jun 2010 21:14:09 +0000 (21:14 +0000)
committerJohannes Anderwald <johannes.anderwald@reactos.org>
Tue, 29 Jun 2010 21:14:09 +0000 (21:14 +0000)
- Check if there is a silence buffer available when there is no audio mapping available
- ignore failure for allocation requirements

svn path=/trunk/; revision=47909

reactos/drivers/wdm/audio/backpln/portcls/irpstream.cpp
reactos/drivers/wdm/audio/backpln/portcls/pin_wavepci.cpp

index 50d55fb..aa6f392 100644 (file)
@@ -259,7 +259,7 @@ CIrpQueue::GetMapping(
         m_CurrentOffset = Offset = 0;
     }
 
         m_CurrentOffset = Offset = 0;
     }
 
-    if (!Irp)
+    if (!Irp && m_SilenceBuffer && m_MaxFrameSize)
     {
         DPRINT("NoIrp\n");
         // no irp available, use silence buffer
     {
         DPRINT("NoIrp\n");
         // no irp available, use silence buffer
@@ -268,6 +268,13 @@ CIrpQueue::GetMapping(
         return STATUS_SUCCESS;
     }
 
         return STATUS_SUCCESS;
     }
 
+    if (!Irp)
+    {
+        // no irp buffer available
+        return STATUS_UNSUCCESSFUL;
+    }
+
+
     // get stream header
     StreamHeader = (PKSSTREAM_HEADER)Irp->Tail.Overlay.DriverContext[2];
 
     // get stream header
     StreamHeader = (PKSSTREAM_HEADER)Irp->Tail.Overlay.DriverContext[2];
 
index 69985c5..430ae5e 100644 (file)
@@ -824,7 +824,6 @@ CPortPinWavePci::Init(
     if (!NT_SUCCESS(Status))
     {
         DPRINT("GetAllocatorFraming failed with %x\n", Status);
     if (!NT_SUCCESS(Status))
     {
         DPRINT("GetAllocatorFraming failed with %x\n", Status);
-        return Status;
     }
 
     DPRINT("OptionFlags %x RequirementsFlag %x PoolType %x Frames %lu FrameSize %lu FileAlignment %lu\n",
     }
 
     DPRINT("OptionFlags %x RequirementsFlag %x PoolType %x Frames %lu FrameSize %lu FileAlignment %lu\n",