JackLoadableInternalClient::~JackLoadableInternalClient()
{
    if (fFinish != NULL)
        fFinish(fProcessArg);
    if (fHandle != NULL)
        UnloadJackModule(fHandle);
}
int JackLoadableInternalClient::Init(const char* so_name)
{
    char path_to_so[JACK_PATH_MAX + 1];
    BuildClientPath(path_to_so, sizeof(path_to_so), so_name);

    fHandle = LoadJackModule(path_to_so);
    jack_log("JackLoadableInternalClient::JackLoadableInternalClient path_to_so = %s", path_to_so);

    if (fHandle == NULL) {
        PrintLoadError(so_name);
        return -1;
    }

    fFinish = (FinishCallback)GetJackProc(fHandle, "jack_finish");
    if (fFinish == NULL) {
        UnloadJackModule(fHandle);
        jack_error("symbol jack_finish cannot be found in %s", so_name);
        return -1;
    }

    fDescriptor = (JackDriverDescFunction)GetJackProc(fHandle, "jack_get_descriptor");
    if (fDescriptor == NULL) {
        jack_info("No jack_get_descriptor entry-point for %s", so_name);
    }
    return 0;
}
int JackLoadableInternalClient2::Init(const char* so_name)
{
    if (JackLoadableInternalClient::Init(so_name) < 0) {
        return -1;
    }

    fInitialize = (InternalInitializeCallback)GetJackProc(fHandle, "jack_internal_initialize");
    if (fInitialize == NULL) {
        UnloadJackModule(fHandle);
        jack_error("symbol jack_internal_initialize cannot be found in %s", so_name);
        return -1;
    }

    return 0;
}
Beispiel #4
0
 JackProxyDriver::~JackProxyDriver()
 {
     if (fHandle) {
         UnloadJackModule(fHandle);
     }
 }