diff --git a/src/add-ons/kernel/drivers/audio/usb/Device.cpp b/src/add-ons/kernel/drivers/audio/usb/Device.cpp index 8ffd0a94ef..402323ff16 100644 --- a/src/add-ons/kernel/drivers/audio/usb/Device.cpp +++ b/src/add-ons/kernel/drivers/audio/usb/Device.cpp @@ -832,7 +832,10 @@ Device::_SetupEndpoints() if (fAudioControl.InitCheck() == B_OK && fStreams.Count() > 0) { TRACE(INF, "Found device %#06x:%#06x\n", fVendorID, fProductID); - gUSBModule->set_configuration(fDevice, config); + + status_t status = gUSBModule->set_configuration(fDevice, config); + if (status != B_OK) + return status; for (int i = 0; i < fStreams.Count(); i++) fStreams[i]->OnSetConfiguration(fDevice, config); diff --git a/src/add-ons/kernel/drivers/audio/usb/Stream.cpp b/src/add-ons/kernel/drivers/audio/usb/Stream.cpp index 49a284c1f6..9e38503554 100644 --- a/src/add-ons/kernel/drivers/audio/usb/Stream.cpp +++ b/src/add-ons/kernel/drivers/audio/usb/Stream.cpp @@ -170,8 +170,10 @@ Stream::_SetupBuffers() return B_BAD_VALUE; } - if (fArea != -1) + if (fArea != -1) { + Stop(); delete_area(fArea); + } fAreaSize = (sizeof(usb_iso_packet_descriptor) + fPacketSize) * sampleSize * 1024 / fPacketSize; @@ -441,9 +443,9 @@ Stream::SetGlobalFormat(multi_format_info* Format) USB_AUDIO_SET_CUR, USB_AUDIO_SAMPLING_FREQ_CONTROL << 8, address, sizeof(freq), &freq, &actualLength); - TRACE(ERR, "set_speed %02x%02x%02x for ep %#x %d: %x\n", + TRACE(ERR, "set_speed %02x%02x%02x for ep %#x %d: %s\n", freq.bytes[0], freq.bytes[1], freq.bytes[2], - address, actualLength, status); + address, actualLength, strerror(status)); return status; }