Browse Source

Improve error message when standalone fails to start

Signed-off-by: falkTX <falktx@falktx.com>
pull/421/head
falkTX 2 years ago
parent
commit
02f27ba01e
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
3 changed files with 31 additions and 5 deletions
  1. +12
    -4
      distrho/src/DistrhoPluginJACK.cpp
  2. +17
    -0
      distrho/src/jackbridge/JackBridge.cpp
  3. +2
    -1
      distrho/src/jackbridge/JackBridge.hpp

+ 12
- 4
distrho/src/DistrhoPluginJACK.cpp View File

@@ -1033,6 +1033,12 @@ int main(int argc, char* argv[])
jack_status_t status = jack_status_t(0x0);
jack_client_t* client = jackbridge_client_open(DISTRHO_PLUGIN_NAME, JackNoStartServer, &status);

#ifdef HAVE_JACK
#define STANDALONE_NAME "JACK client"
#else
#define STANDALONE_NAME "Native audio driver"
#endif

if (client == nullptr)
{
String errorString;
@@ -1063,20 +1069,22 @@ int main(int argc, char* argv[])
errorString += "Backend Error;\n";
if (status & JackClientZombie)
errorString += "Client is being shutdown against its will;\n";
if (status & JackBridgeNativeFailed)
errorString += "Native audio driver was unable to start;\n";

if (errorString.isNotEmpty())
{
errorString[errorString.length()-2] = '.';
d_stderr("Failed to create the JACK client, reason was:\n%s", errorString.buffer());
d_stderr("Failed to create the " STANDALONE_NAME ", reason was:\n%s", errorString.buffer());
}
else
d_stderr("Failed to create the JACK client, cannot continue!");
d_stderr("Failed to create the " STANDALONE_NAME ", cannot continue!");

#if defined(DISTRHO_OS_MAC)
CFStringRef errorTitleRef = CFStringCreateWithCString(nullptr,
DISTRHO_PLUGIN_NAME ": Error", kCFStringEncodingUTF8);
CFStringRef errorStringRef = CFStringCreateWithCString(nullptr,
String("Failed to create JACK client, reason was:\n" + errorString).buffer(), kCFStringEncodingUTF8);
String("Failed to create " STANDALONE_NAME ", reason was:\n" + errorString).buffer(), kCFStringEncodingUTF8);

CFUserNotificationDisplayAlert(0, kCFUserNotificationCautionAlertLevel,
nullptr, nullptr, nullptr,
@@ -1100,7 +1108,7 @@ int main(int argc, char* argv[])
FreeLibrary(user32);
}

const String win32error = "Failed to create JACK client, reason was:\n" + errorString;
const String win32error = "Failed to create " STANDALONE_NAME ", reason was:\n" + errorString;
MessageBoxA(nullptr, win32error.buffer(), "", MB_ICONERROR);
#endif



+ 17
- 0
distrho/src/jackbridge/JackBridge.cpp View File

@@ -934,8 +934,25 @@ jack_client_t* jackbridge_client_open(const char* client_name, uint32_t options,
delete nativeBridge;
#endif
#endif

if (status != nullptr)
{
*status = JackServerError;

#if !(defined(JACKBRIDGE_DUMMY) || defined(JACKBRIDGE_DIRECT))
if (nativeBridge != nullptr)
{
*status
#ifdef HAVE_JACK
|=
#else
=
#endif
JackBridgeNativeFailed;
}
#endif
}

return nullptr;
}



+ 2
- 1
distrho/src/jackbridge/JackBridge.hpp View File

@@ -126,7 +126,8 @@ enum JackStatus {
JackShmFailure = 0x0200,
JackVersionError = 0x0400,
JackBackendError = 0x0800,
JackClientZombie = 0x1000
JackClientZombie = 0x1000,
JackBridgeNativeFailed = 0x10000
};

enum JackLatencyCallbackMode {


Loading…
Cancel
Save