diff --git a/ChangeLog b/ChangeLog index 981e73c2..53dfc43c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -36,6 +36,10 @@ John Emmas Jackdmp changes log --------------------------- +2012-01-06 Stephane Letz + + * Fix for compilation on Solaris. + 2012-01-04 Stephane Letz * Fix library symbols export issue. diff --git a/common/JackAPI.cpp b/common/JackAPI.cpp index 3b1e8123..1d3a25a5 100644 --- a/common/JackAPI.cpp +++ b/common/JackAPI.cpp @@ -1804,7 +1804,11 @@ LIB_EXPORT int jack_client_kill_thread(jack_client_t* client, jack_native_thread #ifndef WIN32 LIB_EXPORT void jack_set_thread_creator (jack_thread_creator_t jtc) { - JackGlobals::fJackThreadCreator = (jtc == NULL) ? pthread_create : jtc; + if (jtc == NULL) { + JackGlobals::fJackThreadCreator = pthread_create; + } else { + JackGlobals::fJackThreadCreator = jtc; + } } #endif diff --git a/common/JackAudioAdapter.cpp b/common/JackAudioAdapter.cpp index 96b248af..3eda1167 100644 --- a/common/JackAudioAdapter.cpp +++ b/common/JackAudioAdapter.cpp @@ -35,20 +35,22 @@ namespace Jack int JackAudioAdapter::Process(jack_nframes_t frames, void* arg) { JackAudioAdapter* adapter = static_cast(arg); - jack_default_audio_sample_t* inputBuffer[adapter->fAudioAdapter->GetInputs()]; - jack_default_audio_sample_t* outputBuffer[adapter->fAudioAdapter->GetOutputs()]; + return adapter->ProcessAux(frames); +} +int JackAudioAdapter::ProcessAux(jack_nframes_t frames) +{ // Always clear output - for (int i = 0; i < adapter->fAudioAdapter->GetInputs(); i++) { - inputBuffer[i] = (jack_default_audio_sample_t*)jack_port_get_buffer(adapter->fCapturePortList[i], frames); - memset(inputBuffer[i], 0, frames * sizeof(jack_default_audio_sample_t)); + for (int i = 0; i < fAudioAdapter->GetInputs(); i++) { + fInputBufferList[i] = (jack_default_audio_sample_t*)jack_port_get_buffer(fCapturePortList[i], frames); + memset(fInputBufferList[i], 0, frames * sizeof(jack_default_audio_sample_t)); } - for (int i = 0; i < adapter->fAudioAdapter->GetOutputs(); i++) { - outputBuffer[i] = (jack_default_audio_sample_t*)jack_port_get_buffer(adapter->fPlaybackPortList[i], frames); + for (int i = 0; i < fAudioAdapter->GetOutputs(); i++) { + fOutputBufferList[i] = (jack_default_audio_sample_t*)jack_port_get_buffer(fPlaybackPortList[i], frames); } - adapter->fAudioAdapter->PullAndPush(inputBuffer, outputBuffer, frames); + fAudioAdapter->PullAndPush(fInputBufferList, fOutputBufferList, frames); return 0; } @@ -126,6 +128,9 @@ void JackAudioAdapter::FreePorts() delete[] fCapturePortList; delete[] fPlaybackPortList; + + delete[] fInputBufferList; + delete[] fOutputBufferList; } void JackAudioAdapter::ConnectPorts() @@ -164,6 +169,9 @@ int JackAudioAdapter::Open() fCapturePortList = new jack_port_t*[fAudioAdapter->GetInputs()]; fPlaybackPortList = new jack_port_t*[fAudioAdapter->GetOutputs()]; + fInputBufferList = new jack_default_audio_sample_t*[fAudioAdapter->GetInputs()]; + fOutputBufferList = new jack_default_audio_sample_t*[fAudioAdapter->GetOutputs()]; + for (int i = 0; i < fAudioAdapter->GetInputs(); i++) { snprintf(name, sizeof(name), "capture_%d", i + 1); if ((fCapturePortList[i] = jack_port_register(fClient, name, JACK_DEFAULT_AUDIO_TYPE, CaptureDriverFlags, 0)) == NULL) { diff --git a/common/JackAudioAdapter.h b/common/JackAudioAdapter.h index fd7ed13e..8baa4094 100644 --- a/common/JackAudioAdapter.h +++ b/common/JackAudioAdapter.h @@ -42,6 +42,9 @@ namespace Jack jack_port_t** fCapturePortList; jack_port_t** fPlaybackPortList; + jack_default_audio_sample_t** fInputBufferList; + jack_default_audio_sample_t** fOutputBufferList; + jack_client_t* fClient; JackAudioAdapterInterface* fAudioAdapter; bool fAutoConnect; @@ -49,6 +52,7 @@ namespace Jack void FreePorts(); void ConnectPorts(); void Reset(); + int ProcessAux(jack_nframes_t frames); public: diff --git a/common/JackDriver.cpp b/common/JackDriver.cpp index d0111e5f..19889549 100644 --- a/common/JackDriver.cpp +++ b/common/JackDriver.cpp @@ -495,7 +495,7 @@ void JackDriver::SaveConnections() fConnections.push_back(make_pair(aliases[0], connections[j])); jack_info("Save connection: %s %s", aliases[0], connections[j]); */ - fConnections.push_back(make_pair(fGraphManager->GetPort(fCapturePortList[i])->GetName(), connections[j])); + fConnections.push_back(make_pair(string(fGraphManager->GetPort(fCapturePortList[i])->GetName()), string(connections[j]))); jack_info("Save connection: %s %s", fGraphManager->GetPort(fCapturePortList[i])->GetName(), connections[j]); } free(connections); @@ -510,7 +510,7 @@ void JackDriver::SaveConnections() fConnections.push_back(make_pair(connections[j], aliases[0])); jack_info("Save connection: %s %s", connections[j], aliases[0]); */ - fConnections.push_back(make_pair(connections[j], fGraphManager->GetPort(fPlaybackPortList[i])->GetName())); + fConnections.push_back(make_pair(string(connections[j]), string(fGraphManager->GetPort(fPlaybackPortList[i])->GetName()))); jack_info("Save connection: %s %s", connections[j], fGraphManager->GetPort(fPlaybackPortList[i])->GetName()); } free(connections); diff --git a/common/JackNetTool.cpp b/common/JackNetTool.cpp index a81fe4e5..1539bf21 100644 --- a/common/JackNetTool.cpp +++ b/common/JackNetTool.cpp @@ -628,7 +628,7 @@ namespace Jack int NetCeltAudioBuffer::RenderFromJackPorts() { - float buffer[fPeriodSize]; + float buffer[BUFFER_SIZE_MAX]; for (int port_index = 0; port_index < fNPorts; port_index++) { if (fPortBuffer[port_index]) { diff --git a/common/jack/control.h b/common/jack/control.h index 61b393de..1f046937 100644 --- a/common/jack/control.h +++ b/common/jack/control.h @@ -31,7 +31,7 @@ #include #include -#if !defined (__sun__) +#if !defined(sun) && !defined(__sun__) #include #endif diff --git a/common/jack/weakmacros.h b/common/jack/weakmacros.h index 9d4959e7..2db602e6 100644 --- a/common/jack/weakmacros.h +++ b/common/jack/weakmacros.h @@ -67,6 +67,10 @@ #endif #endif +#ifndef JACK_WEAK_EXPORT +#define JACK_WEAK_EXPORT +#endif + #ifndef JACK_OPTIONAL_WEAK_EXPORT #define JACK_OPTIONAL_WEAK_EXPORT #endif @@ -82,6 +86,11 @@ #endif #endif /* __GNUC__ */ + +#ifndef JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT +#define JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT +#endif + #endif #endif /* __weakmacros_h__ */ diff --git a/posix/JackCompilerDeps_os.h b/posix/JackCompilerDeps_os.h index fba2a43c..be60a14b 100644 --- a/posix/JackCompilerDeps_os.h +++ b/posix/JackCompilerDeps_os.h @@ -56,7 +56,10 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. #define MEM_ALIGN(x,y) x #define LIB_EXPORT #define SERVER_EXPORT + /* Add other things here for non-gcc platforms for PRE and POST_PACKED_STRUCTURE */ + #define PRE_PACKED_STRUCTURE + #define POST_PACKED_STRUCTURE #endif #endif diff --git a/solaris/oss/JackBoomerDriver.cpp b/solaris/oss/JackBoomerDriver.cpp index 4353ffc8..5f07bc57 100644 --- a/solaris/oss/JackBoomerDriver.cpp +++ b/solaris/oss/JackBoomerDriver.cpp @@ -859,7 +859,7 @@ SERVER_EXPORT jack_driver_desc_t* driver_get_descriptor() return desc; } -EXPORT Jack::JackDriverClientInterface* driver_initialize(Jack::JackLockedEngine* engine, Jack::JackSynchro* table, const JSList* params) +SERVER_EXPORT Jack::JackDriverClientInterface* driver_initialize(Jack::JackLockedEngine* engine, Jack::JackSynchro* table, const JSList* params) { int bits = OSS_DRIVER_DEF_BITS; jack_nframes_t srate = OSS_DRIVER_DEF_FS; diff --git a/solaris/oss/JackOSSDriver.cpp b/solaris/oss/JackOSSDriver.cpp index 931cd809..77ca6e00 100644 --- a/solaris/oss/JackOSSDriver.cpp +++ b/solaris/oss/JackOSSDriver.cpp @@ -776,7 +776,7 @@ SERVER_EXPORT jack_driver_desc_t* driver_get_descriptor() return desc; } -EXPORT Jack::JackDriverClientInterface* driver_initialize(Jack::JackLockedEngine* engine, Jack::JackSynchro* table, const JSList* params) +SERVER_EXPORT Jack::JackDriverClientInterface* driver_initialize(Jack::JackLockedEngine* engine, Jack::JackSynchro* table, const JSList* params) { int bits = OSS_DRIVER_DEF_BITS; jack_nframes_t srate = OSS_DRIVER_DEF_FS; diff --git a/tests/test.cpp b/tests/test.cpp index a48a5036..0cffcbaa 100644 --- a/tests/test.cpp +++ b/tests/test.cpp @@ -477,7 +477,7 @@ int process4(jack_nframes_t nframes, void *arg) jack_nframes_t delta_time = cur_time - last_time; Log("calling process4 callback : jack_frame_time = %ld delta_time = %ld\n", cur_time, delta_time); - if (delta_time > 0 && (unsigned int)abs(delta_time - cur_buffer_size) > tolerance) { + if (delta_time > 0 && (jack_nframes_t)abs((double)(delta_time - cur_buffer_size)) > tolerance) { printf("!!! ERROR !!! jack_frame_time seems to return incorrect values cur_buffer_size = %d, delta_time = %d\n", cur_buffer_size, delta_time); }