Browse Source

ASIO workaround for buggy Denon driver.

tags/2021-05-28
jules 13 years ago
parent
commit
8dceb3471a
1 changed files with 24 additions and 12 deletions
  1. +24
    -12
      modules/juce_audio_devices/native/juce_win32_ASIO.cpp

+ 24
- 12
modules/juce_audio_devices/native/juce_win32_ASIO.cpp View File

@@ -981,25 +981,37 @@ private:
return false;
}
String getLastDriverError() const
{
jassert (asioObject != nullptr);
char buffer [512] = { 0 };
asioObject->getErrorMessage (buffer);
return String (buffer, sizeof (buffer) - 1);
}
String initDriver()
{
if (asioObject != nullptr)
{
char buffer [256] = { 0 };
if (asioObject == nullptr)
return "No Driver";
if (! asioObject->init (juce_messageWindowHandle))
{
asioObject->getErrorMessage (buffer);
return String (buffer, sizeof (buffer) - 1);
}
const bool initOk = (bool) asioObject->init (juce_messageWindowHandle);
String driverError;
// just in case any daft drivers expect this to be called..
asioObject->getDriverName (buffer);
// Get error message if init() failed, or if it's a buggy Denon driver,
// which returns true from init() even when it fails.
if ((! initOk) || getName().containsIgnoreCase ("denon dj"))
driverError = getLastDriverError();
return String::empty;
if ((! initOk) && driverError.isEmpty())
driverError = "Driver failed to initialise";
if (driverError.isEmpty())
{
char buffer [512];
asioObject->getDriverName (buffer); // just in case any flimsy drivers expect this to be called..
}
return "No Driver";
return driverError;
}
String openDevice()


Loading…
Cancel
Save