git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@2880 0c269be4-1314-0410-8aa9-9f06e86f4224tags/1.90
@@ -22,8 +22,13 @@ Florian Faber | |||||
Jackdmp changes log | Jackdmp changes log | ||||
--------------------------- | --------------------------- | ||||
2008-09-04 Stephane Letz <letz@grame.fr> | |||||
2008-08-05 Stephane Letz <letz@grame.fr> | |||||
* Merge Michael Voigt "drops" branch after reorganization step. | |||||
2008-08-04 Stephane Letz <letz@grame.fr> | |||||
* Michael Voigt 4th source reorganization patch. | |||||
* Correct JackNetDriver initialization. | * Correct JackNetDriver initialization. | ||||
2008-09-03 Stephane Letz <letz@grame.fr> | 2008-09-03 Stephane Letz <letz@grame.fr> | ||||
@@ -33,8 +38,17 @@ Florian Faber | |||||
2008-09-01 Stephane Letz <letz@grame.fr> | 2008-09-01 Stephane Letz <letz@grame.fr> | ||||
* Michael Voigt third source reorganization patch. | |||||
* Add new jack_set_port_rename_callback API, jack_port_set_name is now a server request that call port rename callbacks. | * Add new jack_set_port_rename_callback API, jack_port_set_name is now a server request that call port rename callbacks. | ||||
2008-08-31 Stephane Letz <letz@grame.fr> | |||||
* Michael Voigt second source reorganization patch. | |||||
2008-08-28 Stephane Letz <letz@grame.fr> | |||||
* Michael Voigt first source reorganization patch. | |||||
2008-08-26 Stephane Letz <letz@grame.fr> | 2008-08-26 Stephane Letz <letz@grame.fr> | ||||
* Better parameter handling in JackCoreAudioAdapter. | * Better parameter handling in JackCoreAudioAdapter. | ||||
@@ -29,7 +29,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||||
#include "JackClientControl.h" | #include "JackClientControl.h" | ||||
#include "JackGlobals.h" | #include "JackGlobals.h" | ||||
#include "JackTime.h" | #include "JackTime.h" | ||||
#include "JackExports.h" | |||||
#include "JackCompilerDeps.h" | |||||
#include "JackPortType.h" | #include "JackPortType.h" | ||||
#ifdef __APPLE__ | #ifdef __APPLE__ | ||||
@@ -20,7 +20,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||||
#ifndef __JackActivationCount__ | #ifndef __JackActivationCount__ | ||||
#define __JackActivationCount__ | #define __JackActivationCount__ | ||||
#include "JackPlatformSynchro.h" | |||||
#include "JackPlatformPlug.h" | |||||
#include "JackTime.h" | #include "JackTime.h" | ||||
#include "JackTypes.h" | #include "JackTypes.h" | ||||
@@ -22,171 +22,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||||
#include "JackTypes.h" | #include "JackTypes.h" | ||||
#if defined(__APPLE__) | |||||
#if defined(__ppc__) || defined(__ppc64__) | |||||
static inline int CAS(register UInt32 value, register UInt32 newvalue, register volatile void* addr) | |||||
{ | |||||
register int result; | |||||
asm volatile ( | |||||
"# CAS \n" | |||||
" lwarx r0, 0, %1 \n" // creates a reservation on addr | |||||
" cmpw r0, %2 \n" // test value at addr | |||||
" bne- 1f \n" | |||||
" sync \n" // synchronize instructions | |||||
" stwcx. %3, 0, %1 \n" // if the reservation is not altered | |||||
// stores the new value at addr | |||||
" bne- 1f \n" | |||||
" li %0, 1 \n" | |||||
" b 2f \n" | |||||
"1: \n" | |||||
" li %0, 0 \n" | |||||
"2: \n" | |||||
: "=r" (result) | |||||
: "r" (addr), "r" (value), "r" (newvalue) | |||||
: "r0" | |||||
); | |||||
return result; | |||||
} | |||||
#endif | |||||
#if defined(__i386__) || defined(__x86_64__) | |||||
#ifdef __SMP__ | |||||
# define LOCK "lock ; " | |||||
#else | |||||
# define LOCK "" | |||||
#endif | |||||
static inline char CAS(volatile UInt32 value, UInt32 newvalue, volatile void* addr) | |||||
{ | |||||
register char ret; | |||||
__asm__ __volatile__ ( | |||||
"# CAS \n\t" | |||||
LOCK "cmpxchg %2, (%1) \n\t" | |||||
"sete %0 \n\t" | |||||
: "=a" (ret) | |||||
: "c" (addr), "d" (newvalue), "a" (value) | |||||
); | |||||
return ret; | |||||
} | |||||
#endif | |||||
#endif | |||||
#ifdef __linux__ | |||||
#ifdef __PPC__ | |||||
static inline int CAS(register UInt32 value, register UInt32 newvalue, register volatile void* addr) | |||||
{ | |||||
register int result; | |||||
register UInt32 tmp; | |||||
asm volatile ( | |||||
"# CAS \n" | |||||
" lwarx %4, 0, %1 \n" // creates a reservation on addr | |||||
" cmpw %4, %2 \n" // test value at addr | |||||
" bne- 1f \n" | |||||
" sync \n" // synchronize instructions | |||||
" stwcx. %3, 0, %1 \n" // if the reservation is not altered | |||||
// stores the new value at addr | |||||
" bne- 1f \n" | |||||
" li %0, 1 \n" | |||||
" b 2f \n" | |||||
"1: \n" | |||||
" li %0, 0 \n" | |||||
"2: \n" | |||||
: "=r" (result) | |||||
: "r" (addr), "r" (value), "r" (newvalue), "r" (tmp) | |||||
); | |||||
return result; | |||||
} | |||||
#endif | |||||
#if defined(__i386__) || defined(__x86_64__) | |||||
#ifdef __SMP__ | |||||
# define LOCK "lock ; " | |||||
#else | |||||
# define LOCK "" | |||||
#endif | |||||
static inline char CAS(volatile UInt32 value, UInt32 newvalue, volatile void* addr) | |||||
{ | |||||
register char ret; | |||||
__asm__ __volatile__ ( | |||||
"# CAS \n\t" | |||||
LOCK "cmpxchg %2, (%1) \n\t" | |||||
"sete %0 \n\t" | |||||
: "=a" (ret) | |||||
: "c" (addr), "d" (newvalue), "a" (value) | |||||
); | |||||
return ret; | |||||
} | |||||
#endif | |||||
#endif | |||||
#ifdef WIN32 | |||||
#ifndef __MINGW32__ | |||||
#ifdef __SMP__ | |||||
# define LOCK lock | |||||
#else | |||||
# define LOCK | |||||
#endif | |||||
#define inline __inline | |||||
//---------------------------------------------------------------- | |||||
// CAS functions | |||||
//---------------------------------------------------------------- | |||||
inline char CAS(volatile UInt32 value, UInt32 newvalue, volatile void * addr) | |||||
{ | |||||
register char c; | |||||
__asm { | |||||
push ebx | |||||
push esi | |||||
mov esi, addr | |||||
mov eax, value | |||||
mov ebx, newvalue | |||||
LOCK cmpxchg dword ptr [esi], ebx | |||||
sete c | |||||
pop esi | |||||
pop ebx | |||||
} | |||||
return c; | |||||
} | |||||
#else | |||||
#ifdef __SMP__ | |||||
# define LOCK "lock ; " | |||||
#else | |||||
# define LOCK "" | |||||
#endif | |||||
static inline char CAS(volatile UInt32 value, UInt32 newvalue, volatile void* addr) | |||||
{ | |||||
register char ret; | |||||
__asm__ __volatile__ ( | |||||
"# CAS \n\t" | |||||
LOCK "cmpxchg %2, (%1) \n\t" | |||||
"sete %0 \n\t" | |||||
: "=a" (ret) | |||||
: "c" (addr), "d" (newvalue), "a" (value) | |||||
); | |||||
return ret; | |||||
} | |||||
#endif | |||||
#endif | |||||
#include "JackAtomic_os.h" | |||||
static inline long INC_ATOMIC(volatile SInt32* val) | static inline long INC_ATOMIC(volatile SInt32* val) | ||||
{ | { | ||||
@@ -20,7 +20,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
#include "JackAudioAdapter.h" | #include "JackAudioAdapter.h" | ||||
#include "JackLibSampleRateResampler.h" | #include "JackLibSampleRateResampler.h" | ||||
#include "JackError.h" | #include "JackError.h" | ||||
#include "JackExports.h" | |||||
#include "JackCompilerDeps.h" | |||||
#include "JackTools.h" | #include "JackTools.h" | ||||
#include "jslist.h" | #include "jslist.h" | ||||
#include <stdio.h> | #include <stdio.h> | ||||
@@ -23,11 +23,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
#include <stdlib.h> | #include <stdlib.h> | ||||
#include <assert.h> | #include <assert.h> | ||||
#ifdef __cplusplus | |||||
extern "C" | |||||
{ | |||||
#endif | |||||
#include "driver_interface.h" | #include "driver_interface.h" | ||||
#ifdef __linux__ | #ifdef __linux__ | ||||
@@ -40,6 +35,11 @@ extern "C" | |||||
#ifdef WIN32 | #ifdef WIN32 | ||||
#include "JackPortAudioAdapter.h" | #include "JackPortAudioAdapter.h" | ||||
#endif | |||||
#ifdef __cplusplus | |||||
extern "C" | |||||
{ | |||||
#endif | #endif | ||||
using namespace Jack; | using namespace Jack; | ||||
@@ -41,8 +41,8 @@ namespace Jack | |||||
char buffer[1024]; | char buffer[1024]; | ||||
FILE* file = fopen("JackAudioAdapter.log", "w"); | FILE* file = fopen("JackAudioAdapter.log", "w"); | ||||
int MAX = (fCount) % TABLE_MAX - 1; | |||||
for (int i = 1; i < MAX; i++) | |||||
int max = (fCount) % TABLE_MAX - 1; | |||||
for (int i = 1; i < max; i++) | |||||
{ | { | ||||
fprintf(file, "%d \t %d \t %d \t %f \t %f \t %d \t %d \n", | fprintf(file, "%d \t %d \t %d \t %f \t %f \t %d \t %d \n", | ||||
fTable[i].delta, fTable[i+1].time1 - fTable[i].time1, | fTable[i].delta, fTable[i+1].time1 - fTable[i].time1, | ||||
@@ -22,9 +22,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
#include "config.h" | #include "config.h" | ||||
#endif | #endif | ||||
#ifdef WIN32 | |||||
#pragma warning (disable : 4786) | |||||
#endif | |||||
#include "JackSystemDeps.h" | |||||
#include "JackAudioDriver.h" | #include "JackAudioDriver.h" | ||||
#include "JackTime.h" | #include "JackTime.h" | ||||
@@ -29,8 +29,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||||
#include "varargs.h" | #include "varargs.h" | ||||
#include <list> | #include <list> | ||||
#include "JackPlatformSynchro.h" | |||||
#include "JackPlatformThread.h" | |||||
#include "JackPlatformPlug.h" | |||||
#include "JackChannel.h" | #include "JackChannel.h" | ||||
namespace Jack | namespace Jack | ||||
@@ -21,7 +21,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||||
#ifndef __JackClientInterface__ | #ifndef __JackClientInterface__ | ||||
#define __JackClientInterface__ | #define __JackClientInterface__ | ||||
#include "JackExports.h" | |||||
#include "JackCompilerDeps.h" | |||||
namespace Jack | namespace Jack | ||||
{ | { | ||||
@@ -17,14 +17,9 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
*/ | */ | ||||
#ifndef __JackExports__ | |||||
#define __JackExports__ | |||||
#ifndef __JackCompilerDeps__ | |||||
#define __JackCompilerDeps__ | |||||
#ifdef WIN32 | |||||
#define EXPORT __declspec(dllexport) | |||||
#else | |||||
#define EXPORT __attribute__ ((visibility("default"))) | |||||
#endif | |||||
#include "JackCompilerDeps_os.h" | |||||
#endif | #endif | ||||
@@ -23,7 +23,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||||
#include "JackConstants.h" | #include "JackConstants.h" | ||||
#include "JackActivationCount.h" | #include "JackActivationCount.h" | ||||
#include "JackError.h" | #include "JackError.h" | ||||
#include "JackExports.h" | |||||
#include "JackCompilerDeps.h" | |||||
#include <assert.h> | #include <assert.h> | ||||
@@ -23,7 +23,7 @@ | |||||
#define __JackControlAPI__ | #define __JackControlAPI__ | ||||
#include "jslist.h" | #include "jslist.h" | ||||
#include "JackExports.h" | |||||
#include "JackCompilerDeps.h" | |||||
#ifdef WIN32 | #ifdef WIN32 | ||||
#ifdef __MINGW32__ | #ifdef __MINGW32__ | ||||
@@ -22,9 +22,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
#include "config.h" | #include "config.h" | ||||
#endif | #endif | ||||
#ifdef WIN32 | |||||
#pragma warning (disable : 4786) | |||||
#endif | |||||
#include "JackSystemDeps.h" | |||||
#include "JackDriver.h" | #include "JackDriver.h" | ||||
#include "JackTime.h" | #include "JackTime.h" | ||||
@@ -24,7 +24,7 @@ | |||||
#include "types.h" | #include "types.h" | ||||
#include "JackClientInterface.h" | #include "JackClientInterface.h" | ||||
#include "JackConstants.h" | #include "JackConstants.h" | ||||
#include "JackPlatformSynchro.h" | |||||
#include "JackPlatformPlug.h" | |||||
#include "JackClientControl.h" | #include "JackClientControl.h" | ||||
#include <list> | #include <list> | ||||
@@ -22,9 +22,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
#include "config.h" | #include "config.h" | ||||
#endif | #endif | ||||
#ifdef WIN32 | |||||
#pragma warning (disable : 4786) | |||||
#endif | |||||
#include "JackSystemDeps.h" | |||||
/* | /* | ||||
#ifndef WIN32 | #ifndef WIN32 | ||||
@@ -23,7 +23,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
#include "driver_interface.h" | #include "driver_interface.h" | ||||
#include "JackControlAPI.h" | #include "JackControlAPI.h" | ||||
#include "JackPlatformSynchro.h" | |||||
#include "JackPlatformPlug.h" | |||||
#ifdef WIN32 | #ifdef WIN32 | ||||
@@ -27,7 +27,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
#include "JackGraphManager.h" | #include "JackGraphManager.h" | ||||
#include "JackDriverLoader.h" | #include "JackDriverLoader.h" | ||||
#include "JackThreadedDriver.h" | #include "JackThreadedDriver.h" | ||||
#include "JackExports.h" | |||||
#include "JackCompilerDeps.h" | |||||
#include <iostream> | #include <iostream> | ||||
#include <unistd.h> | #include <unistd.h> | ||||
@@ -25,10 +25,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
#include <fstream> | #include <fstream> | ||||
#include <assert.h> | #include <assert.h> | ||||
#ifndef WIN32 | |||||
#include <sys/types.h> | |||||
#include <signal.h> | |||||
#endif | |||||
#include "JackSystemDeps.h" | |||||
#include "JackLockedEngine.h" | #include "JackLockedEngine.h" | ||||
#include "JackExternalClient.h" | #include "JackExternalClient.h" | ||||
@@ -24,8 +24,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
#include "JackGraphManager.h" | #include "JackGraphManager.h" | ||||
#include "JackSynchro.h" | #include "JackSynchro.h" | ||||
#include "JackTransportEngine.h" | #include "JackTransportEngine.h" | ||||
#include "JackPlatformProcessSync.h" | |||||
#include "JackPlatformServerNotifyChannel.h" | |||||
#include "JackPlatformPlug.h" | |||||
namespace Jack | namespace Jack | ||||
{ | { | ||||
@@ -32,6 +32,11 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||||
namespace Jack | namespace Jack | ||||
{ | { | ||||
static inline _jack_time_t JACK_MAX(_jack_time_t a, _jack_time_t b) | |||||
{ | |||||
return (a < b) ? b : a; | |||||
} | |||||
void JackEngineControl::CycleIncTime(jack_time_t callback_usecs) | void JackEngineControl::CycleIncTime(jack_time_t callback_usecs) | ||||
{ | { | ||||
// Timer | // Timer | ||||
@@ -67,16 +72,6 @@ void JackEngineControl::ReadFrameTime(JackTimer* timer) | |||||
fFrameTimer.ReadFrameTime(timer); | fFrameTimer.ReadFrameTime(timer); | ||||
} | } | ||||
// Private | |||||
#ifdef WIN32 | |||||
inline jack_time_t MAX(jack_time_t a, jack_time_t b) | |||||
{ | |||||
return (a < b) ? b : a; | |||||
} | |||||
#else | |||||
#define MAX(a,b) std::max((a),(b)) | |||||
#endif | |||||
void JackEngineControl::CalcCPULoad(JackClientInterface** table, | void JackEngineControl::CalcCPULoad(JackClientInterface** table, | ||||
JackGraphManager* manager, | JackGraphManager* manager, | ||||
jack_time_t cur_cycle_begin, | jack_time_t cur_cycle_begin, | ||||
@@ -92,7 +87,7 @@ void JackEngineControl::CalcCPULoad(JackClientInterface** table, | |||||
JackClientInterface* client = table[i]; | JackClientInterface* client = table[i]; | ||||
JackClientTiming* timing = manager->GetClientTiming(i); | JackClientTiming* timing = manager->GetClientTiming(i); | ||||
if (client && client->GetClientControl()->fActive && timing->fStatus == Finished) | if (client && client->GetClientControl()->fActive && timing->fStatus == Finished) | ||||
last_cycle_end = MAX(last_cycle_end, timing->fFinishedAt); | |||||
last_cycle_end = JACK_MAX(last_cycle_end, timing->fFinishedAt); | |||||
} | } | ||||
} | } | ||||
@@ -108,9 +103,9 @@ void JackEngineControl::CalcCPULoad(JackClientInterface** table, | |||||
jack_time_t max_usecs = 0; | jack_time_t max_usecs = 0; | ||||
for (int i = 0; i < JACK_ENGINE_ROLLING_COUNT; i++) | for (int i = 0; i < JACK_ENGINE_ROLLING_COUNT; i++) | ||||
max_usecs = MAX(fRollingClientUsecs[i], max_usecs); | |||||
max_usecs = JACK_MAX(fRollingClientUsecs[i], max_usecs); | |||||
fMaxUsecs = MAX(fMaxUsecs, max_usecs); | |||||
fMaxUsecs = JACK_MAX(fMaxUsecs, max_usecs); | |||||
fSpareUsecs = jack_time_t((max_usecs < fPeriodUsecs) ? fPeriodUsecs - max_usecs : 0); | fSpareUsecs = jack_time_t((max_usecs < fPeriodUsecs) ? fPeriodUsecs - max_usecs : 0); | ||||
fCPULoad = ((1.f - (float(fSpareUsecs) / float(fPeriodUsecs))) * 50.f + (fCPULoad * 0.5f)); | fCPULoad = ((1.f - (float(fSpareUsecs) / float(fPeriodUsecs))) * 50.f + (fCPULoad * 0.5f)); | ||||
} | } | ||||
@@ -25,7 +25,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
#include <string.h> | #include <string.h> | ||||
#include <errno.h> | #include <errno.h> | ||||
#include "JackExports.h" | |||||
#include "JackCompilerDeps.h" | |||||
#include "types.h" | #include "types.h" | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
@@ -23,7 +23,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
#include <stdexcept> | #include <stdexcept> | ||||
#include <iostream> | #include <iostream> | ||||
#include <string> | #include <string> | ||||
#include "JackExports.h" | |||||
#include "JackCompilerDeps.h" | |||||
#include "JackError.h" | #include "JackError.h" | ||||
namespace Jack | namespace Jack | ||||
@@ -22,7 +22,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
#define __JackExternalClient__ | #define __JackExternalClient__ | ||||
#include "JackClientInterface.h" | #include "JackClientInterface.h" | ||||
#include "JackPlatformNotifyChannel.h" | |||||
#include "JackPlatformPlug.h" | |||||
namespace Jack | namespace Jack | ||||
{ | { | ||||
@@ -22,7 +22,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||||
#define __JackFrameTimer__ | #define __JackFrameTimer__ | ||||
#include "JackAtomicState.h" | #include "JackAtomicState.h" | ||||
#include "JackExports.h" | |||||
#include "JackCompilerDeps.h" | |||||
#include "types.h" | #include "types.h" | ||||
namespace Jack | namespace Jack | ||||
@@ -22,9 +22,7 @@ | |||||
#include "config.h" | #include "config.h" | ||||
#endif | #endif | ||||
#ifdef WIN32 | |||||
#pragma warning (disable : 4786) | |||||
#endif | |||||
#include "JackSystemDeps.h" | |||||
#include "JackFreewheelDriver.h" | #include "JackFreewheelDriver.h" | ||||
#include "JackEngineControl.h" | #include "JackEngineControl.h" | ||||
@@ -20,7 +20,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||||
#ifndef __JackGlobals__ | #ifndef __JackGlobals__ | ||||
#define __JackGlobals__ | #define __JackGlobals__ | ||||
#include "JackPlatformThread.h" | |||||
#include "JackPlatformPlug.h" | |||||
extern jack_tls_key gRealTime; | extern jack_tls_key gRealTime; | ||||
extern jack_tls_key g_key_log_function; | extern jack_tls_key g_key_log_function; | ||||
@@ -33,11 +33,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||||
namespace Jack | namespace Jack | ||||
{ | { | ||||
static inline jack_nframes_t MAX(jack_nframes_t a, jack_nframes_t b) | |||||
{ | |||||
return (a < b) ? b : a; | |||||
} | |||||
static void AssertPort(jack_port_id_t port_index) | static void AssertPort(jack_port_id_t port_index) | ||||
{ | { | ||||
if (port_index >= PORT_NUM) { | if (port_index >= PORT_NUM) { | ||||
@@ -240,7 +235,7 @@ jack_nframes_t JackGraphManager::ComputeTotalLatencyAux(jack_port_id_t port_inde | |||||
jack_nframes_t this_latency = (dst_port->fFlags & JackPortIsTerminal) | jack_nframes_t this_latency = (dst_port->fFlags & JackPortIsTerminal) | ||||
? dst_port->GetLatency() | ? dst_port->GetLatency() | ||||
: ComputeTotalLatencyAux(dst_index, port_index, manager, hop_count + 1); | : ComputeTotalLatencyAux(dst_index, port_index, manager, hop_count + 1); | ||||
max_latency = MAX(max_latency, this_latency); | |||||
max_latency = ((max_latency > this_latency) ? max_latency : this_latency); | |||||
} | } | ||||
} | } | ||||
@@ -26,7 +26,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||||
#include "JackConstants.h" | #include "JackConstants.h" | ||||
#include "JackConnectionManager.h" | #include "JackConnectionManager.h" | ||||
#include "JackAtomicState.h" | #include "JackAtomicState.h" | ||||
#include "JackPlatformSynchro.h" | |||||
#include "JackPlatformPlug.h" | |||||
#include "JackSystemDeps.h" | |||||
namespace Jack | namespace Jack | ||||
{ | { | ||||
@@ -22,9 +22,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
#include "config.h" | #include "config.h" | ||||
#endif | #endif | ||||
#ifdef WIN32 | |||||
#pragma warning (disable : 4786) | |||||
#endif | |||||
#include "JackSystemDeps.h" | |||||
#ifndef WIN32 | #ifndef WIN32 | ||||
#ifndef ADDON_DIR | #ifndef ADDON_DIR | ||||
@@ -28,7 +28,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||||
#include "JackLibGlobals.h" | #include "JackLibGlobals.h" | ||||
#include "JackGlobals.h" | #include "JackGlobals.h" | ||||
#include "JackServerLaunch.h" | #include "JackServerLaunch.h" | ||||
#include "JackExports.h" | |||||
#include "JackCompilerDeps.h" | |||||
#include "JackTools.h" | #include "JackTools.h" | ||||
using namespace Jack; | using namespace Jack; | ||||
@@ -25,7 +25,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||||
#include "JackTime.h" | #include "JackTime.h" | ||||
#include "JackLibGlobals.h" | #include "JackLibGlobals.h" | ||||
#include "JackGlobals.h" | #include "JackGlobals.h" | ||||
#include "JackPlatformClientChannel.h" | |||||
#include "JackPlatformPlug.h" | |||||
#include "JackTools.h" | #include "JackTools.h" | ||||
namespace Jack | namespace Jack | ||||
@@ -22,12 +22,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||||
#include "JackShmMem.h" | #include "JackShmMem.h" | ||||
#include "JackEngineControl.h" | #include "JackEngineControl.h" | ||||
#ifdef __APPLE__ | |||||
#include "JackMachPort.h" | |||||
#include <map> | |||||
#endif | |||||
#include "JackGlobals.h" | #include "JackGlobals.h" | ||||
#include "JackPlatformSynchro.h" | |||||
#include "JackPlatformPlug.h" | |||||
#include "JackGraphManager.h" | #include "JackGraphManager.h" | ||||
#include "JackMessageBuffer.h" | #include "JackMessageBuffer.h" | ||||
#include "JackTime.h" | #include "JackTime.h" | ||||
@@ -48,9 +44,6 @@ struct JackLibGlobals | |||||
JackShmReadWritePtr<JackGraphManager> fGraphManager; /*! Shared memory Port manager */ | JackShmReadWritePtr<JackGraphManager> fGraphManager; /*! Shared memory Port manager */ | ||||
JackShmReadWritePtr<JackEngineControl> fEngineControl; /*! Shared engine control */ // transport engine has to be writable | JackShmReadWritePtr<JackEngineControl> fEngineControl; /*! Shared engine control */ // transport engine has to be writable | ||||
JackSynchro fSynchroTable[CLIENT_NUM]; /*! Shared synchro table */ | JackSynchro fSynchroTable[CLIENT_NUM]; /*! Shared synchro table */ | ||||
#ifdef __APPLE__ | |||||
std::map<mach_port_t, JackClient*> fClientTable; /*! Client table */ | |||||
#endif | |||||
static int fClientCount; | static int fClientCount; | ||||
static JackLibGlobals* fGlobals; | static JackLibGlobals* fGlobals; | ||||
@@ -22,9 +22,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
#include "config.h" | #include "config.h" | ||||
#endif | #endif | ||||
#ifdef WIN32 | |||||
#pragma warning (disable : 4786) | |||||
#endif | |||||
#include "JackSystemDeps.h" | |||||
#include "JackLoopbackDriver.h" | #include "JackLoopbackDriver.h" | ||||
#include "JackEngineControl.h" | #include "JackEngineControl.h" | ||||
@@ -30,10 +30,9 @@ | |||||
#ifndef __JackMessageBuffer__ | #ifndef __JackMessageBuffer__ | ||||
#define __JackMessageBuffer__ | #define __JackMessageBuffer__ | ||||
#include "JackPlatformThread.h" | |||||
#include "JackPlatformPlug.h" | |||||
#include "JackMutex.h" | #include "JackMutex.h" | ||||
#include "JackAtomic.h" | #include "JackAtomic.h" | ||||
#include "JackPlatformProcessSync.h" | |||||
namespace Jack | namespace Jack | ||||
{ | { | ||||
@@ -24,13 +24,10 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||||
#include "JackError.h" | #include "JackError.h" | ||||
#include "JackMidiPort.h" | #include "JackMidiPort.h" | ||||
#include "JackExports.h" | |||||
#include "JackCompilerDeps.h" | |||||
#include <errno.h> | #include <errno.h> | ||||
#include <string.h> | #include <string.h> | ||||
#ifdef WIN32 | |||||
#define ENOBUFS 55 | |||||
#endif | |||||
#include "JackSystemDeps.h" | |||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
@@ -22,105 +22,13 @@ | |||||
#ifndef __JackMutex__ | #ifndef __JackMutex__ | ||||
#define __JackMutex__ | #define __JackMutex__ | ||||
#ifdef WIN32 | |||||
#include <windows.h> | |||||
#else | |||||
#include <pthread.h> | |||||
#endif | |||||
#include "JackMutex_os.h" | |||||
#include <assert.h> | #include <assert.h> | ||||
#include "JackError.h" | #include "JackError.h" | ||||
namespace Jack | namespace Jack | ||||
{ | { | ||||
/*! | |||||
\brief Mutex abstraction. | |||||
*/ | |||||
class JackMutex | |||||
{ | |||||
private: | |||||
#ifdef WIN32 | |||||
HANDLE fMutex; | |||||
#else | |||||
pthread_mutex_t fMutex; | |||||
#endif | |||||
public: | |||||
#ifdef WIN32 | |||||
JackMutex() | |||||
{ | |||||
// In recursive mode by default | |||||
fMutex = (HANDLE)CreateMutex(0, FALSE, 0); | |||||
} | |||||
~JackMutex() | |||||
{ | |||||
CloseHandle(fMutex); | |||||
} | |||||
void Lock() | |||||
{ | |||||
DWORD dwWaitResult = WaitForSingleObject(fMutex, INFINITE); | |||||
} | |||||
bool Trylock() | |||||
{ | |||||
return (WAIT_OBJECT_0 == WaitForSingleObject(fMutex, 0)); | |||||
} | |||||
void Unlock() | |||||
{ | |||||
ReleaseMutex(fMutex); | |||||
} | |||||
#else | |||||
JackMutex() | |||||
{ | |||||
// Use recursive mutex | |||||
pthread_mutexattr_t mutex_attr; | |||||
int res; | |||||
res = pthread_mutexattr_init(&mutex_attr); | |||||
assert(res == 0); | |||||
res = pthread_mutexattr_settype(&mutex_attr, PTHREAD_MUTEX_RECURSIVE); | |||||
assert(res == 0); | |||||
res = pthread_mutex_init(&fMutex, &mutex_attr); | |||||
assert(res == 0); | |||||
res = pthread_mutexattr_destroy(&mutex_attr); | |||||
assert(res == 0); | |||||
} | |||||
~JackMutex() | |||||
{ | |||||
pthread_mutex_destroy(&fMutex); | |||||
} | |||||
void Lock() | |||||
{ | |||||
int res = pthread_mutex_lock(&fMutex); | |||||
if (res != 0) | |||||
jack_error("JackMutex::Lock res = %d", res); | |||||
} | |||||
bool Trylock() | |||||
{ | |||||
return (pthread_mutex_trylock(&fMutex) == 0); | |||||
} | |||||
void Unlock() | |||||
{ | |||||
int res = pthread_mutex_unlock(&fMutex); | |||||
if (res != 0) | |||||
jack_error("JackMutex::Unlock res = %d", res); | |||||
} | |||||
#endif | |||||
}; | |||||
/*! | /*! | ||||
\brief Base class for "lockable" objects. | \brief Base class for "lockable" objects. | ||||
*/ | */ | ||||
@@ -22,7 +22,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
#include <assert.h> | #include <assert.h> | ||||
#include "JackAudioAdapterInterface.h" | #include "JackAudioAdapterInterface.h" | ||||
#include "JackPlatformThread.h" | |||||
#include "JackPlatformPlug.h" | |||||
#include "JackNetInterface.h" | #include "JackNetInterface.h" | ||||
namespace Jack | namespace Jack | ||||
@@ -20,7 +20,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
#ifndef __JackNetSocket__ | #ifndef __JackNetSocket__ | ||||
#define __JackNetSocket__ | #define __JackNetSocket__ | ||||
#include "JackExports.h" | |||||
#include "JackCompilerDeps.h" | |||||
#include "JackError.h" | #include "JackError.h" | ||||
#include <cstdlib> | #include <cstdlib> | ||||
#include <cstdio> | #include <cstdio> | ||||
@@ -20,7 +20,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
#include "JackConstants.h" | #include "JackConstants.h" | ||||
#include "JackMidiPort.h" | #include "JackMidiPort.h" | ||||
#include "JackTools.h" | #include "JackTools.h" | ||||
#include "JackPlatformNetSocket.h" | |||||
#include "JackPlatformPlug.h" | |||||
#include "types.h" | #include "types.h" | ||||
#include "transport.h" | #include "transport.h" | ||||
#include <cmath> | #include <cmath> | ||||
@@ -1,59 +0,0 @@ | |||||
/* | |||||
Copyright (C) 2004-2008 Grame | |||||
This program is free software; you can redistribute it and/or modify | |||||
it under the terms of the GNU General Public License as published by | |||||
the Free Software Foundation; either version 2 of the License, or | |||||
(at your option) any later version. | |||||
This program is distributed in the hope that it will be useful, | |||||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
GNU General Public License for more details. | |||||
You should have received a copy of the GNU General Public License | |||||
along with this program; if not, write to the Free Software | |||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
*/ | |||||
#ifndef __JackPlatformClientChannel__ | |||||
#define __JackPlatformClientChannel___ | |||||
#ifdef HAVE_CONFIG_H | |||||
#include "config.h" | |||||
#endif | |||||
// OSX | |||||
#if defined(__APPLE__) | |||||
#include "JackMachClientChannel.h" | |||||
#endif | |||||
// WINDOWS | |||||
#ifdef WIN32 | |||||
#include "JackWinNamedPipeClientChannel.h" | |||||
#endif | |||||
// LINUX | |||||
#ifdef __linux__ | |||||
#include "JackSocketClientChannel.h" | |||||
#endif | |||||
namespace Jack | |||||
{ | |||||
#ifdef WIN32 | |||||
typedef JackWinNamedPipeClientChannel JackClientChannel; | |||||
#elif defined(SOCKET_RPC_POSIX_SEMA) || defined(SOCKET_RPC_FIFO_SEMA) || defined(SOCKET_RPC_FIFO_SEMA_DUMMY) \ | |||||
|| defined(SOCKET_RPC_MACH_SEMA) | |||||
typedef JackSocketClientChannel JackClientChannel; | |||||
#elif defined(MACH_RPC_MACH_SEMA) || defined(MACH_RPC_FIFO_SEMA) || defined(MACH_RPC_POSIX_SEMA) | |||||
typedef JackMachClientChannel JackClientChannel; | |||||
#endif | |||||
} // end of namespace | |||||
#endif /* __JackPlatformClientChannel__ */ |
@@ -1,59 +0,0 @@ | |||||
/* | |||||
Copyright (C) 2004-2008 Grame | |||||
This program is free software; you can redistribute it and/or modify | |||||
it under the terms of the GNU General Public License as published by | |||||
the Free Software Foundation; either version 2 of the License, or | |||||
(at your option) any later version. | |||||
This program is distributed in the hope that it will be useful, | |||||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
GNU General Public License for more details. | |||||
You should have received a copy of the GNU General Public License | |||||
along with this program; if not, write to the Free Software | |||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
*/ | |||||
#ifndef __JackPlatformNotifyChannel__ | |||||
#define __JackPlatformNotifyChannel__ | |||||
#ifdef HAVE_CONFIG_H | |||||
#include "config.h" | |||||
#endif | |||||
// OSX | |||||
#if defined(__APPLE__) | |||||
#include "JackMachNotifyChannel.h" | |||||
#endif | |||||
// WINDOWS | |||||
#ifdef WIN32 | |||||
#include "JackWinNamedPipeNotifyChannel.h" | |||||
#endif | |||||
// LINUX | |||||
#ifdef __linux__ | |||||
#include "JackSocketNotifyChannel.h" | |||||
#endif | |||||
namespace Jack | |||||
{ | |||||
#ifdef WIN32 | |||||
typedef JackWinNamedPipeNotifyChannel JackNotifyChannel; | |||||
#elif defined(SOCKET_RPC_POSIX_SEMA) || defined(SOCKET_RPC_FIFO_SEMA) || defined(SOCKET_RPC_FIFO_SEMA_DUMMY) \ | |||||
|| defined(SOCKET_RPC_MACH_SEMA) | |||||
typedef JackSocketNotifyChannel JackNotifyChannel; | |||||
#elif defined(MACH_RPC_MACH_SEMA) || defined(MACH_RPC_FIFO_SEMA) || defined(MACH_RPC_POSIX_SEMA) | |||||
typedef JackMachNotifyChannel JackNotifyChannel; | |||||
#endif | |||||
} // end of namespace | |||||
#endif /* __JackPlatformNotifyChannel__ */ |
@@ -0,0 +1,25 @@ | |||||
/* | |||||
Copyright (C) 2004-2008 Grame | |||||
This program is free software; you can redistribute it and/or modify | |||||
it under the terms of the GNU Lesser General Public License as published by | |||||
the Free Software Foundation; either version 2.1 of the License, or | |||||
(at your option) any later version. | |||||
This program is distributed in the hope that it will be useful, | |||||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
GNU Lesser General Public License for more details. | |||||
You should have received a copy of the GNU Lesser General Public License | |||||
along with this program; if not, write to the Free Software | |||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||||
*/ | |||||
#ifndef __JackPlatformPlug__ | |||||
#define __JackPlatformPlug__ | |||||
#include "JackPlatformPlug_os.h" | |||||
#endif |
@@ -1,59 +0,0 @@ | |||||
/* | |||||
Copyright (C) 2004-2008 Grame | |||||
This program is free software; you can redistribute it and/or modify | |||||
it under the terms of the GNU General Public License as published by | |||||
the Free Software Foundation; either version 2 of the License, or | |||||
(at your option) any later version. | |||||
This program is distributed in the hope that it will be useful, | |||||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
GNU General Public License for more details. | |||||
You should have received a copy of the GNU General Public License | |||||
along with this program; if not, write to the Free Software | |||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
*/ | |||||
#ifndef __JackPlatformServerChannel__ | |||||
#define __JackPlatformServerChannel___ | |||||
#ifdef HAVE_CONFIG_H | |||||
#include "config.h" | |||||
#endif | |||||
// OSX | |||||
#if defined(__APPLE__) | |||||
#include "JackMachServerChannel.h" | |||||
#endif | |||||
// WINDOWS | |||||
#ifdef WIN32 | |||||
#include "JackWinNamedPipeServerChannel.h" | |||||
#endif | |||||
// LINUX | |||||
#ifdef __linux__ | |||||
#include "JackSocketServerChannel.h" | |||||
#endif | |||||
namespace Jack | |||||
{ | |||||
#ifdef WIN32 | |||||
typedef JackWinNamedPipeServerChannel JackServerChannel; | |||||
#elif defined(SOCKET_RPC_POSIX_SEMA) || defined(SOCKET_RPC_FIFO_SEMA) || defined(SOCKET_RPC_FIFO_SEMA_DUMMY) \ | |||||
|| defined(SOCKET_RPC_MACH_SEMA) | |||||
typedef JackSocketServerChannel JackServerChannel; | |||||
#elif defined(MACH_RPC_MACH_SEMA) || defined(MACH_RPC_FIFO_SEMA) || defined(MACH_RPC_POSIX_SEMA) | |||||
typedef JackMachServerChannel JackServerChannel; | |||||
#endif | |||||
} // end of namespace | |||||
#endif /* __JackPlatformServerChannel__ */ |
@@ -1,59 +0,0 @@ | |||||
/* | |||||
Copyright (C) 2004-2008 Grame | |||||
This program is free software; you can redistribute it and/or modify | |||||
it under the terms of the GNU General Public License as published by | |||||
the Free Software Foundation; either version 2 of the License, or | |||||
(at your option) any later version. | |||||
This program is distributed in the hope that it will be useful, | |||||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
GNU General Public License for more details. | |||||
You should have received a copy of the GNU General Public License | |||||
along with this program; if not, write to the Free Software | |||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
*/ | |||||
#ifndef __JackPlatformServerNotifyChannel__ | |||||
#define __JackPlatformServerNotifyChannel___ | |||||
#ifdef HAVE_CONFIG_H | |||||
#include "config.h" | |||||
#endif | |||||
// OSX | |||||
#if defined(__APPLE__) | |||||
#include "JackMachServerNotifyChannel.h" | |||||
#endif | |||||
// WINDOWS | |||||
#ifdef WIN32 | |||||
#include "JackWinNamedPipeServerNotifyChannel.h" | |||||
#endif | |||||
// LINUX | |||||
#ifdef __linux__ | |||||
#include "JackSocketServerNotifyChannel.h" | |||||
#endif | |||||
namespace Jack | |||||
{ | |||||
#ifdef WIN32 | |||||
typedef JackWinNamedPipeServerNotifyChannel JackServerNotifyChannel; | |||||
#elif defined(SOCKET_RPC_POSIX_SEMA) || defined(SOCKET_RPC_FIFO_SEMA) || defined(SOCKET_RPC_FIFO_SEMA_DUMMY) \ | |||||
|| defined(SOCKET_RPC_MACH_SEMA) | |||||
typedef JackSocketServerNotifyChannel JackServerNotifyChannel; | |||||
#elif defined(MACH_RPC_MACH_SEMA) || defined(MACH_RPC_FIFO_SEMA) || defined(MACH_RPC_POSIX_SEMA) | |||||
typedef JackMachServerNotifyChannel JackServerNotifyChannel; | |||||
#endif | |||||
} // end of namespace | |||||
#endif /* __JackPlatformServerNotifyChannel__ */ |
@@ -1,64 +0,0 @@ | |||||
/* | |||||
Copyright (C) 2004-2008 Grame | |||||
This program is free software; you can redistribute it and/or modify | |||||
it under the terms of the GNU General Public License as published by | |||||
the Free Software Foundation; either version 2 of the License, or | |||||
(at your option) any later version. | |||||
This program is distributed in the hope that it will be useful, | |||||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
GNU General Public License for more details. | |||||
You should have received a copy of the GNU General Public License | |||||
along with this program; if not, write to the Free Software | |||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
*/ | |||||
#ifndef __JackPlatformSynchro__ | |||||
#define __JackPlatformSynchro__ | |||||
#ifdef HAVE_CONFIG_H | |||||
#include "config.h" | |||||
#endif | |||||
// OSX | |||||
#if defined(__APPLE__) | |||||
#include "JackMachSemaphore.h" | |||||
#endif | |||||
// WINDOWS | |||||
#ifdef WIN32 | |||||
#include "JackWinSemaphore.h" | |||||
#endif | |||||
// LINUX | |||||
#ifdef __linux__ | |||||
#include "JackPosixSemaphore.h" | |||||
#include "JackFifo.h" | |||||
#endif | |||||
namespace Jack | |||||
{ | |||||
#ifdef WIN32 | |||||
typedef JackWinSemaphore JackSynchro; | |||||
#endif | |||||
#if defined(MACH_RPC_MACH_SEMA) || defined(SOCKET_RPC_MACH_SEMA) | |||||
typedef JackMachSemaphore JackSynchro; | |||||
#endif | |||||
#if defined(SOCKET_RPC_POSIX_SEMA) || defined(MACH_RPC_POSIX_SEMA) | |||||
typedef JackPosixSemaphore JackSynchro; | |||||
#endif | |||||
#if defined(SOCKET_RPC_FIFO_SEMA) || defined(SOCKET_RPC_FIFO_SEMA_DUMMY) || defined(MACH_RPC_FIFO_SEMA) | |||||
typedef JackFifo JackSynchro; | |||||
#endif | |||||
} // end of namespace | |||||
#endif /* __JackPlatformSynchro__ */ |
@@ -23,7 +23,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||||
#include "types.h" | #include "types.h" | ||||
#include "JackConstants.h" | #include "JackConstants.h" | ||||
#include "JackExports.h" | |||||
#include "JackCompilerDeps.h" | |||||
namespace Jack | namespace Jack | ||||
{ | { | ||||
@@ -56,15 +56,7 @@ class EXPORT JackPort | |||||
bool fInUse; | bool fInUse; | ||||
jack_port_id_t fTied; // Locally tied source port | jack_port_id_t fTied; // Locally tied source port | ||||
#ifdef WIN32 | |||||
//__declspec(align(16)) float fBuffer[BUFFER_SIZE_MAX]; | |||||
float fBuffer[BUFFER_SIZE_MAX]; | |||||
#elif __GNUC__ | |||||
float fBuffer[BUFFER_SIZE_MAX] __attribute__((aligned(64))); // 16 bytes alignment for vector code, 64 bytes better for cache loads/stores | |||||
#else | |||||
#warning Buffer will not be aligned on 16 bytes boundaries : vector based code (Altivec of SSE) will fail | |||||
float fBuffer[BUFFER_SIZE_MAX]; | |||||
#endif | |||||
MEM_ALIGN(float fBuffer[BUFFER_SIZE_MAX], 64); // 16 bytes alignment for vector code, 64 bytes better for cache loads/stores | |||||
bool IsUsed() const; | bool IsUsed() const; | ||||
@@ -22,7 +22,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||||
#define __JackRequest__ | #define __JackRequest__ | ||||
#include "JackConstants.h" | #include "JackConstants.h" | ||||
#include "JackPlatformChannelTransaction.h" | |||||
#include "JackPlatformPlug.h" | |||||
#include "types.h" | #include "types.h" | ||||
#include <string.h> | #include <string.h> | ||||
#include <stdio.h> | #include <stdio.h> | ||||
@@ -22,9 +22,7 @@ | |||||
#include "config.h" | #include "config.h" | ||||
#endif | #endif | ||||
#ifdef WIN32 | |||||
#pragma warning (disable : 4786) | |||||
#endif | |||||
#include "JackSystemDeps.h" | |||||
#include "JackRestartThreadedDriver.h" | #include "JackRestartThreadedDriver.h" | ||||
#include "JackException.h" | #include "JackException.h" | ||||
@@ -22,9 +22,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
#include "config.h" | #include "config.h" | ||||
#endif | #endif | ||||
#ifdef WIN32 | |||||
#pragma warning (disable : 4786) | |||||
#endif | |||||
#include "JackSystemDeps.h" | |||||
#include "JackServer.h" | #include "JackServer.h" | ||||
#include "JackTime.h" | #include "JackTime.h" | ||||
@@ -21,15 +21,14 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
#ifndef __JackServer__ | #ifndef __JackServer__ | ||||
#define __JackServer__ | #define __JackServer__ | ||||
#include "JackExports.h" | |||||
#include "JackCompilerDeps.h" | |||||
#include "driver_interface.h" | #include "driver_interface.h" | ||||
#include "JackDriverLoader.h" | #include "JackDriverLoader.h" | ||||
#include "JackConnectionManager.h" | #include "JackConnectionManager.h" | ||||
#include "jslist.h" | #include "jslist.h" | ||||
#include "JackGlobals.h" | #include "JackGlobals.h" | ||||
#include "JackPlatformSynchro.h" | |||||
#include "JackPlatformServerChannel.h" | |||||
#include "JackPlatformPlug.h" | |||||
namespace Jack | namespace Jack | ||||
@@ -22,9 +22,7 @@ This program is free software; you can redistribute it and/or modify | |||||
#include "config.h" | #include "config.h" | ||||
#endif | #endif | ||||
#ifdef WIN32 | |||||
#pragma warning (disable : 4786) | |||||
#endif | |||||
#include "JackSystemDeps.h" | |||||
#include "JackGraphManager.h" | #include "JackGraphManager.h" | ||||
#include "JackInternalClient.h" | #include "JackInternalClient.h" | ||||
@@ -33,7 +31,7 @@ This program is free software; you can redistribute it and/or modify | |||||
#include "JackServerGlobals.h" | #include "JackServerGlobals.h" | ||||
#include "JackServerLaunch.h" | #include "JackServerLaunch.h" | ||||
#include "JackTools.h" | #include "JackTools.h" | ||||
#include "JackExports.h" | |||||
#include "JackCompilerDeps.h" | |||||
#include "JackLockedEngine.h" | #include "JackLockedEngine.h" | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
@@ -29,7 +29,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||||
#include "JackChannel.h" | #include "JackChannel.h" | ||||
#include "JackLibGlobals.h" | #include "JackLibGlobals.h" | ||||
#include "JackServerLaunch.h" | #include "JackServerLaunch.h" | ||||
#include "JackPlatformClientChannel.h" | |||||
#include "JackPlatformPlug.h" | |||||
using namespace Jack; | using namespace Jack; | ||||
@@ -23,26 +23,13 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
#include "shm.h" | #include "shm.h" | ||||
#include "JackError.h" | #include "JackError.h" | ||||
#include "JackExports.h" | |||||
#include "JackCompilerDeps.h" | |||||
#include <new> // GCC 4.0 | #include <new> // GCC 4.0 | ||||
#include <errno.h> | #include <errno.h> | ||||
#include <stdlib.h> | #include <stdlib.h> | ||||
#ifdef WIN32 | |||||
#include <windows.h> | |||||
#define CHECK_MLOCK(ptr, size) (VirtualLock((ptr), (size)) != 0) | |||||
#define CHECK_MUNLOCK(ptr, size) (VirtualUnlock((ptr), (size)) != 0) | |||||
#define CHECK_MLOCKALL()(false) | |||||
#define CHECK_MUNLOCKALL()(false) | |||||
#else | |||||
#include <sys/types.h> | |||||
#include <sys/mman.h> | |||||
#define CHECK_MLOCK(ptr, size) (mlock((ptr), (size)) == 0) | |||||
#define CHECK_MUNLOCK(ptr, size) (munlock((ptr), (size)) == 0) | |||||
#define CHECK_MLOCKALL() (mlockall(MCL_CURRENT | MCL_FUTURE) == 0) | |||||
#define CHECK_MUNLOCKALL() (munlockall() == 0) | |||||
#endif | |||||
#include "JackShmMem_os.h" | |||||
namespace Jack | namespace Jack | ||||
{ | { | ||||
@@ -94,6 +94,7 @@ class JackSynchro | |||||
} | } | ||||
}; | }; | ||||
} | } | ||||
} // end of namespace | } // end of namespace | ||||
@@ -0,0 +1,26 @@ | |||||
/* | |||||
Copyright (C) 2004-2006 Grame | |||||
This program is free software; you can redistribute it and/or modify | |||||
it under the terms of the GNU General Public License as published by | |||||
the Free Software Foundation; either version 2 of the License, or | |||||
(at your option) any later version. | |||||
This program is distributed in the hope that it will be useful, | |||||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
GNU General Public License for more details. | |||||
You should have received a copy of the GNU General Public License | |||||
along with this program; if not, write to the Free Software | |||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
*/ | |||||
#ifndef __JackSystemDeps__ | |||||
#define __JackSystemDeps__ | |||||
#include "systemdeps.h" | |||||
#include "JackSystemDeps_os.h" | |||||
#endif |
@@ -21,16 +21,8 @@ | |||||
#ifndef __JackThread__ | #ifndef __JackThread__ | ||||
#define __JackThread__ | #define __JackThread__ | ||||
#include "JackExports.h" | |||||
#ifdef WIN32 | |||||
#include <windows.h> | |||||
typedef HANDLE pthread_t; | |||||
typedef ULONGLONG UInt64; | |||||
#else | |||||
#include <pthread.h> | |||||
typedef unsigned long long UInt64; | |||||
#endif | |||||
#include "JackCompilerDeps.h" | |||||
#include "JackTypes.h" | |||||
namespace Jack | namespace Jack | ||||
{ | { | ||||
@@ -65,7 +57,7 @@ class JackRunnableInterface | |||||
namespace detail | namespace detail | ||||
{ | { | ||||
class EXPORT JackThread | |||||
class EXPORT JackThreadInterface | |||||
{ | { | ||||
public: | public: | ||||
@@ -82,7 +74,7 @@ class EXPORT JackThread | |||||
public: | public: | ||||
JackThread(JackRunnableInterface* runnable, int priority, bool real_time, int cancellation): | |||||
JackThreadInterface(JackRunnableInterface* runnable, int priority, bool real_time, int cancellation): | |||||
fRunnable(runnable), fPriority(priority), fRealTime(real_time), fStatus(kIdle), fCancellation(cancellation) | fRunnable(runnable), fPriority(priority), fRealTime(real_time), fStatus(kIdle), fCancellation(cancellation) | ||||
{} | {} | ||||
@@ -98,18 +90,29 @@ class EXPORT JackThread | |||||
void SetParams(UInt64 period, UInt64 computation, UInt64 constraint) // Empty implementation, will only make sense on OSX... | void SetParams(UInt64 period, UInt64 computation, UInt64 constraint) // Empty implementation, will only make sense on OSX... | ||||
{} | {} | ||||
int Start(); | |||||
int StartSync(); | |||||
int Kill(); | |||||
int Stop(); | |||||
void Terminate(); | |||||
int AcquireRealTime(); | |||||
int AcquireRealTime(int priority); | |||||
int DropRealTime(); | |||||
pthread_t GetThreadID(); | |||||
static int AcquireRealTimeImp(pthread_t thread, int priority); | |||||
static int DropRealTimeImp(pthread_t thread); | |||||
static int StartImp(pthread_t* thread, int priority, int realtime, void*(*start_routine)(void*), void* arg); | |||||
static int StopImp(pthread_t thread); | |||||
static int KillImp(pthread_t thread); | |||||
}; | }; | ||||
} | } | ||||
} // end of namespace | } // end of namespace | ||||
#if defined(WIN32) | |||||
typedef DWORD jack_tls_key; | |||||
#else | |||||
typedef pthread_key_t jack_tls_key; | |||||
#endif | |||||
EXPORT bool jack_tls_allocate_key(jack_tls_key *key_ptr); | EXPORT bool jack_tls_allocate_key(jack_tls_key *key_ptr); | ||||
EXPORT bool jack_tls_free_key(jack_tls_key key); | EXPORT bool jack_tls_free_key(jack_tls_key key); | ||||
@@ -22,9 +22,7 @@ | |||||
#include "config.h" | #include "config.h" | ||||
#endif | #endif | ||||
#ifdef WIN32 | |||||
#pragma warning (disable : 4786) | |||||
#endif | |||||
#include "JackSystemDeps.h" | |||||
#include "JackThreadedDriver.h" | #include "JackThreadedDriver.h" | ||||
#include "JackError.h" | #include "JackError.h" | ||||
@@ -22,7 +22,7 @@ | |||||
#define __JackThreadedDriver__ | #define __JackThreadedDriver__ | ||||
#include "JackDriver.h" | #include "JackDriver.h" | ||||
#include "JackPlatformThread.h" | |||||
#include "JackPlatformPlug.h" | |||||
namespace Jack | namespace Jack | ||||
{ | { | ||||
@@ -22,86 +22,10 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||||
#define __JackTime__ | #define __JackTime__ | ||||
#include "types.h" | #include "types.h" | ||||
#include "JackExports.h" | |||||
#include "JackCompilerDeps.h" | |||||
#include <stdio.h> | #include <stdio.h> | ||||
#ifdef __cplusplus | |||||
extern "C" | |||||
{ | |||||
#endif | |||||
#if defined(__APPLE__) | |||||
#include <mach/mach_time.h> | |||||
#include <unistd.h> | |||||
extern EXPORT double __jack_time_ratio; | |||||
static inline jack_time_t GetMicroSeconds(void) | |||||
{ | |||||
return (jack_time_t) (mach_absolute_time () * __jack_time_ratio); | |||||
} | |||||
/* This should only be called ONCE per process. */ | |||||
void InitTime(); | |||||
static inline void JackSleep(int usec) | |||||
{ | |||||
usleep(usec); | |||||
} | |||||
#endif | |||||
#ifdef WIN32 | |||||
extern EXPORT LARGE_INTEGER _jack_freq; | |||||
EXPORT jack_time_t GetMicroSeconds(void) ; | |||||
void InitTime(); | |||||
static void JackSleep(int usec) | |||||
{ | |||||
Sleep(usec / 1000); | |||||
} | |||||
#endif | |||||
#ifdef linux | |||||
#include <unistd.h> | |||||
static inline void JackSleep(long usec) | |||||
{ | |||||
usleep(usec); | |||||
} | |||||
#ifdef GETCYCLE_TIME | |||||
#include "cycles.h" | |||||
extern jack_time_t __jack_cpu_mhz; | |||||
jack_time_t GetMhz(); | |||||
void InitTime(); | |||||
static inline jack_time_t GetMicroSeconds(void) | |||||
{ | |||||
return get_cycles() / __jack_cpu_mhz; | |||||
} | |||||
#else | |||||
#include <time.h> | |||||
void InitTime(); | |||||
static inline jack_time_t GetMicroSeconds(void) | |||||
{ | |||||
struct timespec ts; | |||||
clock_gettime(CLOCK_MONOTONIC, &ts); | |||||
return (jack_time_t)ts.tv_sec * 1000000 + ts.tv_nsec / 1000; | |||||
} | |||||
#endif | |||||
#endif | |||||
#ifdef __cplusplus | |||||
} | |||||
#endif | |||||
#include "JackTime_os.h" | |||||
#endif | #endif | ||||
@@ -40,7 +40,7 @@ | |||||
#include "jslist.h" | #include "jslist.h" | ||||
#include "driver_interface.h" | #include "driver_interface.h" | ||||
#include "JackExports.h" | |||||
#include "JackCompilerDeps.h" | |||||
#include "JackError.h" | #include "JackError.h" | ||||
namespace Jack | namespace Jack | ||||
@@ -22,7 +22,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||||
#define __JackTransportEngine__ | #define __JackTransportEngine__ | ||||
#include "JackAtomicArrayState.h" | #include "JackAtomicArrayState.h" | ||||
#include "JackExports.h" | |||||
#include "JackCompilerDeps.h" | |||||
#include "types.h" | #include "types.h" | ||||
namespace Jack | namespace Jack | ||||
@@ -30,14 +30,7 @@ typedef unsigned long UInt32; | |||||
typedef signed long SInt32; | typedef signed long SInt32; | ||||
#endif | #endif | ||||
#ifdef WIN32 | |||||
#include <windows.h> | |||||
typedef ULONGLONG UInt64; | |||||
typedef unsigned short uint16_t; | |||||
#else | |||||
#include <stdint.h> | |||||
typedef unsigned long long UInt64; | |||||
#endif | |||||
#include "JackTypes_os.h" | |||||
typedef uint16_t jack_int_t; // Internal type for ports and refnum | typedef uint16_t jack_int_t; // Internal type for ports and refnum | ||||
@@ -22,9 +22,7 @@ | |||||
#include "config.h" | #include "config.h" | ||||
#endif | #endif | ||||
#ifdef WIN32 | |||||
#pragma warning (disable : 4786) | |||||
#endif | |||||
#include "JackSystemDeps.h" | |||||
#include "JackWaitThreadedDriver.h" | #include "JackWaitThreadedDriver.h" | ||||
#include "JackGlobals.h" | #include "JackGlobals.h" | ||||
@@ -27,14 +27,9 @@ extern "C" | |||||
#include <limits.h> | #include <limits.h> | ||||
#include "jslist.h" | #include "jslist.h" | ||||
#include "JackExports.h" | |||||
#include "JackCompilerDeps.h" | |||||
#ifdef WIN32 | |||||
#include "types.h" | |||||
#define PATH_MAX 1024 | |||||
#else | |||||
#include <inttypes.h> | |||||
#endif | |||||
#include "JackSystemDeps.h" | |||||
#define JACK_DRIVER_NAME_MAX 15 | #define JACK_DRIVER_NAME_MAX 15 | ||||
#define JACK_DRIVER_PARAM_NAME_MAX 15 | #define JACK_DRIVER_PARAM_NAME_MAX 15 | ||||
@@ -30,10 +30,7 @@ | |||||
#define JACKCTL_H__2EEDAD78_DF4C_4B26_83B7_4FF1A446A47E__INCLUDED | #define JACKCTL_H__2EEDAD78_DF4C_4B26_83B7_4FF1A446A47E__INCLUDED | ||||
#include <jack/jslist.h> | #include <jack/jslist.h> | ||||
#ifdef WIN32 | |||||
typedef unsigned long sigset_t; | |||||
#endif | |||||
#include <jack/systemdeps.h> | |||||
/** Parameter types, intentionally similar to jack_driver_param_type_t */ | /** Parameter types, intentionally similar to jack_driver_param_type_t */ | ||||
typedef enum | typedef enum | ||||
@@ -26,13 +26,7 @@ extern "C" | |||||
{ | { | ||||
#endif | #endif | ||||
#ifdef WIN32 | |||||
#include <windows.h> | |||||
typedef HANDLE pthread_t; | |||||
#else | |||||
#include <pthread.h> | |||||
#endif | |||||
#include <jack/systemdeps.h> | |||||
#include <jack/types.h> | #include <jack/types.h> | ||||
#include <jack/transport.h> | #include <jack/transport.h> | ||||
@@ -27,9 +27,7 @@ | |||||
#include <stdlib.h> | #include <stdlib.h> | ||||
#ifdef WIN32 | |||||
#define __inline__ inline | |||||
#endif | |||||
#include <jack/systemdeps.h> | |||||
typedef struct _JSList JSList; | typedef struct _JSList JSList; | ||||
@@ -285,290 +283,4 @@ jack_slist_sort (JSList *list, | |||||
} | } | ||||
#endif /* __jack_jslist_h__ */ | #endif /* __jack_jslist_h__ */ | ||||
/* | |||||
Based on gslist.c from glib-1.2.9 (LGPL). | |||||
Adaption to JACK, Copyright (C) 2002 Kai Vehmanen. | |||||
- replaced use of gtypes with normal ANSI C types | |||||
- glib's memory allocation routines replaced with | |||||
malloc/free calls | |||||
This program is free software; you can redistribute it and/or modify | |||||
it under the terms of the GNU Lesser General Public License as published by | |||||
the Free Software Foundation; either version 2.1 of the License, or | |||||
(at your option) any later version. | |||||
This program is distributed in the hope that it will be useful, | |||||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
GNU Lesser General Public License for more details. | |||||
You should have received a copy of the GNU Lesser General Public License | |||||
along with this program; if not, write to the Free Software | |||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||||
*/ | |||||
#ifndef __jack_jslist_h__ | |||||
#define __jack_jslist_h__ | |||||
#include <stdlib.h> | |||||
#ifdef WIN32 | |||||
#define __inline__ inline | |||||
#endif | |||||
typedef struct _JSList JSList; | |||||
typedef int (*JCompareFunc) (void* a, void* b); | |||||
struct _JSList | |||||
{ | |||||
void *data; | |||||
JSList *next; | |||||
}; | |||||
static __inline__ | |||||
JSList* | |||||
jack_slist_alloc (void) | |||||
{ | |||||
JSList *new_list; | |||||
new_list = (JSList*)malloc(sizeof(JSList)); | |||||
new_list->data = NULL; | |||||
new_list->next = NULL; | |||||
return new_list; | |||||
} | |||||
static __inline__ | |||||
JSList* | |||||
jack_slist_prepend (JSList* list, void* data) | |||||
{ | |||||
JSList *new_list; | |||||
new_list = (JSList*)malloc(sizeof(JSList)); | |||||
new_list->data = data; | |||||
new_list->next = list; | |||||
return new_list; | |||||
} | |||||
#define jack_slist_next(slist) ((slist) ? (((JSList *)(slist))->next) : NULL) | |||||
static __inline__ | |||||
JSList* | |||||
jack_slist_last (JSList *list) | |||||
{ | |||||
if (list) { | |||||
while (list->next) | |||||
list = list->next; | |||||
} | |||||
return list; | |||||
} | |||||
static __inline__ | |||||
JSList* | |||||
jack_slist_remove_link (JSList *list, | |||||
JSList *link) | |||||
{ | |||||
JSList *tmp; | |||||
JSList *prev; | |||||
prev = NULL; | |||||
tmp = list; | |||||
while (tmp) { | |||||
if (tmp == link) { | |||||
if (prev) | |||||
prev->next = tmp->next; | |||||
if (list == tmp) | |||||
list = list->next; | |||||
tmp->next = NULL; | |||||
break; | |||||
} | |||||
prev = tmp; | |||||
tmp = tmp->next; | |||||
} | |||||
return list; | |||||
} | |||||
static __inline__ | |||||
void | |||||
jack_slist_free (JSList *list) | |||||
{ | |||||
while (list) { | |||||
JSList *next = list->next; | |||||
free(list); | |||||
list = next; | |||||
} | |||||
} | |||||
static __inline__ | |||||
void | |||||
jack_slist_free_1 (JSList *list) | |||||
{ | |||||
if (list) { | |||||
free(list); | |||||
} | |||||
} | |||||
static __inline__ | |||||
JSList* | |||||
jack_slist_remove (JSList *list, | |||||
void *data) | |||||
{ | |||||
JSList *tmp; | |||||
JSList *prev; | |||||
prev = NULL; | |||||
tmp = list; | |||||
while (tmp) { | |||||
if (tmp->data == data) { | |||||
if (prev) | |||||
prev->next = tmp->next; | |||||
if (list == tmp) | |||||
list = list->next; | |||||
tmp->next = NULL; | |||||
jack_slist_free (tmp); | |||||
break; | |||||
} | |||||
prev = tmp; | |||||
tmp = tmp->next; | |||||
} | |||||
return list; | |||||
} | |||||
static __inline__ | |||||
unsigned int | |||||
jack_slist_length (JSList *list) | |||||
{ | |||||
unsigned int length; | |||||
length = 0; | |||||
while (list) { | |||||
length++; | |||||
list = list->next; | |||||
} | |||||
return length; | |||||
} | |||||
static __inline__ | |||||
JSList* | |||||
jack_slist_find (JSList *list, | |||||
void *data) | |||||
{ | |||||
while (list) { | |||||
if (list->data == data) | |||||
break; | |||||
list = list->next; | |||||
} | |||||
return list; | |||||
} | |||||
static __inline__ | |||||
JSList* | |||||
jack_slist_copy (JSList *list) | |||||
{ | |||||
JSList *new_list = NULL; | |||||
if (list) { | |||||
JSList *last; | |||||
new_list = jack_slist_alloc (); | |||||
new_list->data = list->data; | |||||
last = new_list; | |||||
list = list->next; | |||||
while (list) { | |||||
last->next = jack_slist_alloc (); | |||||
last = last->next; | |||||
last->data = list->data; | |||||
list = list->next; | |||||
} | |||||
} | |||||
return new_list; | |||||
} | |||||
static __inline__ | |||||
JSList* | |||||
jack_slist_append (JSList *list, | |||||
void *data) | |||||
{ | |||||
JSList *new_list; | |||||
JSList *last; | |||||
new_list = jack_slist_alloc (); | |||||
new_list->data = data; | |||||
if (list) { | |||||
last = jack_slist_last (list); | |||||
last->next = new_list; | |||||
return list; | |||||
} else | |||||
return new_list; | |||||
} | |||||
static __inline__ | |||||
JSList* | |||||
jack_slist_sort_merge (JSList *l1, | |||||
JSList *l2, | |||||
JCompareFunc compare_func) | |||||
{ | |||||
JSList list, *l; | |||||
l = &list; | |||||
while (l1 && l2) { | |||||
if (compare_func(l1->data, l2->data) < 0) { | |||||
l = l->next = l1; | |||||
l1 = l1->next; | |||||
} else { | |||||
l = l->next = l2; | |||||
l2 = l2->next; | |||||
} | |||||
} | |||||
l->next = l1 ? l1 : l2; | |||||
return list.next; | |||||
} | |||||
static __inline__ | |||||
JSList* | |||||
jack_slist_sort (JSList *list, | |||||
JCompareFunc compare_func) | |||||
{ | |||||
JSList *l1, *l2; | |||||
if (!list) | |||||
return NULL; | |||||
if (!list->next) | |||||
return list; | |||||
l1 = list; | |||||
l2 = list->next; | |||||
while ((l2 = l2->next) != NULL) { | |||||
if ((l2 = l2->next) == NULL) | |||||
break; | |||||
l1 = l1->next; | |||||
} | |||||
l2 = l1->next; | |||||
l1->next = NULL; | |||||
return jack_slist_sort_merge (jack_slist_sort (list, compare_func), | |||||
jack_slist_sort (l2, compare_func), | |||||
compare_func); | |||||
} | |||||
#endif /* __jack_jslist_h__ */ |
@@ -0,0 +1,62 @@ | |||||
/* | |||||
Copyright (C) 2004-2006 Grame | |||||
This program is free software; you can redistribute it and/or modify | |||||
it under the terms of the GNU General Public License as published by | |||||
the Free Software Foundation; either version 2 of the License, or | |||||
(at your option) any later version. | |||||
This program is distributed in the hope that it will be useful, | |||||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
GNU General Public License for more details. | |||||
You should have received a copy of the GNU General Public License | |||||
along with this program; if not, write to the Free Software | |||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
*/ | |||||
#ifndef __jack_systemdeps_h__ | |||||
#define __jack_systemdeps_h__ | |||||
#ifdef WIN32 | |||||
#include <windows.h> | |||||
#ifdef __MINGW32__ | |||||
#include <stdint.h> | |||||
#include <sys/types.h> | |||||
#else | |||||
#define __inline__ inline | |||||
#define vsnprintf _vsnprintf | |||||
#define snprintf _snprintf | |||||
typedef char int8_t; | |||||
typedef unsigned char uint8_t; | |||||
typedef short int16_t; | |||||
typedef unsigned short uint16_t; | |||||
typedef long int32_t; | |||||
typedef unsigned long uint32_t; | |||||
typedef LONGLONG int64_t; | |||||
typedef ULONGLONG uint64_t; | |||||
#endif | |||||
typedef HANDLE pthread_t; | |||||
typedef int64_t _jack_time_t; | |||||
#endif // WIN32 */ | |||||
#if defined(__APPLE__) || defined(__linux__) | |||||
#include <inttypes.h> | |||||
#include <pthread.h> | |||||
#include <sys/types.h> | |||||
typedef uint64_t _jack_time_t; | |||||
#endif // __APPLE__ || __linux__ */ | |||||
#endif |
@@ -25,13 +25,7 @@ extern "C" | |||||
{ | { | ||||
#endif | #endif | ||||
#ifdef WIN32 | |||||
#include <windows.h> | |||||
typedef HANDLE pthread_t; | |||||
#else | |||||
#include <pthread.h> | |||||
#endif | |||||
#include <jack/systemdeps.h> | |||||
/** @file thread.h | /** @file thread.h | ||||
* | * | ||||
@@ -21,26 +21,8 @@ | |||||
#ifndef __jack_types_h__ | #ifndef __jack_types_h__ | ||||
#define __jack_types_h__ | #define __jack_types_h__ | ||||
#ifdef WIN32 | |||||
#include <windows.h> | |||||
#ifndef __MINGW32__ | |||||
#define vsnprintf _vsnprintf | |||||
#define snprintf _snprintf | |||||
typedef char int8_t; | |||||
typedef unsigned char uint8_t; | |||||
typedef short int16_t; | |||||
typedef unsigned short uint16_t; | |||||
typedef long int32_t; | |||||
typedef unsigned long uint32_t; | |||||
typedef LONGLONG int64_t; | |||||
typedef ULONGLONG uint64_t; | |||||
#else | |||||
#include <stdint.h> | |||||
#endif | |||||
#include <jack/systemdeps.h> | |||||
#else | |||||
#include <inttypes.h> | |||||
#endif | |||||
typedef int32_t jack_shmsize_t; | typedef int32_t jack_shmsize_t; | ||||
@@ -59,11 +41,7 @@ typedef uint32_t jack_nframes_t; | |||||
* monotonic clock with units of microseconds. | * monotonic clock with units of microseconds. | ||||
*/ | */ | ||||
#ifdef WIN32 | |||||
typedef int64_t jack_time_t; | |||||
#else | |||||
typedef uint64_t jack_time_t; | |||||
#endif | |||||
typedef _jack_time_t jack_time_t; | |||||
/** | /** | ||||
* Maximum size of @a load_init string passed to an internal client | * Maximum size of @a load_init string passed to an internal client | ||||
@@ -475,7 +453,7 @@ typedef enum { | |||||
#define EXTENDED_TIME_INFO | #define EXTENDED_TIME_INFO | ||||
typedef struct { | typedef struct { | ||||
/* these four cannot be set from clients: the server sets them */ | /* these four cannot be set from clients: the server sets them */ | ||||
jack_unique_t unique_1; /**< unique ID */ | jack_unique_t unique_1; /**< unique ID */ | ||||
jack_time_t usecs; /**< monotonic, free-rolling */ | jack_time_t usecs; /**< monotonic, free-rolling */ | ||||
@@ -488,7 +466,7 @@ typedef struct { | |||||
int32_t bar; /**< current bar */ | int32_t bar; /**< current bar */ | ||||
int32_t beat; /**< current beat-within-bar */ | int32_t beat; /**< current beat-within-bar */ | ||||
int32_t tick; /**< current tick-within-beat */ | int32_t tick; /**< current tick-within-beat */ | ||||
double bar_start_tick; | |||||
double bar_start_tick; | |||||
float beats_per_bar; /**< time signature "numerator" */ | float beats_per_bar; /**< time signature "numerator" */ | ||||
float beat_type; /**< time signature "denominator" */ | float beat_type; /**< time signature "denominator" */ | ||||
@@ -499,15 +477,15 @@ typedef struct { | |||||
double frame_time; /**< current time in seconds */ | double frame_time; /**< current time in seconds */ | ||||
double next_time; /**< next sequential frame_time | double next_time; /**< next sequential frame_time | ||||
(unless repositioned) */ | (unless repositioned) */ | ||||
/* JackBBTFrameOffset fields: */ | /* JackBBTFrameOffset fields: */ | ||||
jack_nframes_t bbt_offset; /**< frame offset for the BBT fields | jack_nframes_t bbt_offset; /**< frame offset for the BBT fields | ||||
(the given bar, beat, and tick | (the given bar, beat, and tick | ||||
values actually refer to a time | values actually refer to a time | ||||
frame_offset frames before the | frame_offset frames before the | ||||
start of the cycle), should | |||||
be assumed to be 0 if | |||||
JackBBTFrameOffset is not | |||||
start of the cycle), should | |||||
be assumed to be 0 if | |||||
JackBBTFrameOffset is not | |||||
set. If JackBBTFrameOffset is | set. If JackBBTFrameOffset is | ||||
set and this value is zero, the BBT | set and this value is zero, the BBT | ||||
time refers to the first frame of this | time refers to the first frame of this | ||||
@@ -30,7 +30,7 @@ | |||||
#include <sys/mman.h> | #include <sys/mman.h> | ||||
#endif /* USE_MLOCK */ | #endif /* USE_MLOCK */ | ||||
#include "jack/ringbuffer.h" | #include "jack/ringbuffer.h" | ||||
#include "JackExports.h" | |||||
#include "JackCompilerDeps.h" | |||||
/* Create a new ringbuffer to hold at least `sz' bytes of data. The | /* Create a new ringbuffer to hold at least `sz' bytes of data. The | ||||
actual buffer size is rounded up to the next power of two. */ | actual buffer size is rounded up to the next power of two. */ | ||||
@@ -4,7 +4,7 @@ | |||||
#include <limits.h> | #include <limits.h> | ||||
#include <sys/types.h> | #include <sys/types.h> | ||||
#include "types.h" | #include "types.h" | ||||
#include "JackExports.h" | |||||
#include "JackCompilerDeps.h" | |||||
#define TRUE 1 | #define TRUE 1 | ||||
@@ -42,7 +42,11 @@ def create_jack_process_obj(bld, target, sources, uselib = None): | |||||
process = bld.create_obj('cpp', 'shlib') | process = bld.create_obj('cpp', 'shlib') | ||||
process.env['shlib_PATTERN'] = '%s.so' | process.env['shlib_PATTERN'] = '%s.so' | ||||
process.defines = 'HAVE_CONFIG_H' | process.defines = 'HAVE_CONFIG_H' | ||||
process.includes = ['./jack', '.', '..', '../macosx','../windows', '../linux/alsa'] | |||||
if bld.env()['IS_MACOSX']: | |||||
env_includes = ['../macosx', '../posix'] | |||||
if bld.env()['IS_LINUX']: | |||||
env_includes = ['../linux', '../posix', '../linux/alsa'] | |||||
process.includes = ['.'] + env_includes + ['jack', '..'] | |||||
process.name = target | process.name = target | ||||
process.target = target | process.target = target | ||||
process.source = sources | process.source = sources | ||||
@@ -72,10 +76,8 @@ def build(bld): | |||||
'JackMidiPort.cpp', | 'JackMidiPort.cpp', | ||||
'JackMidiAPI.cpp', | 'JackMidiAPI.cpp', | ||||
'JackEngineControl.cpp', | 'JackEngineControl.cpp', | ||||
'JackPosixThread.cpp', | |||||
'JackShmMem.cpp', | 'JackShmMem.cpp', | ||||
'shm.c', | 'shm.c', | ||||
'JackSocket.cpp', | |||||
'JackTime.c', | 'JackTime.c', | ||||
'JackGlobals.cpp', | 'JackGlobals.cpp', | ||||
'JackDebugClient.cpp', | 'JackDebugClient.cpp', | ||||
@@ -83,7 +85,6 @@ def build(bld): | |||||
'timestamps.c', | 'timestamps.c', | ||||
'JackTools.cpp', | 'JackTools.cpp', | ||||
'JackMessageBuffer.cpp', | 'JackMessageBuffer.cpp', | ||||
'JackProcessSync.cpp', | |||||
] | ] | ||||
includes = ['.', './jack', '..'] | includes = ['.', './jack', '..'] | ||||
@@ -91,20 +92,25 @@ def build(bld): | |||||
if bld.env()['IS_LINUX']: | if bld.env()['IS_LINUX']: | ||||
common_libsources += [ | common_libsources += [ | ||||
'JackPosixSemaphore.cpp', | |||||
'JackFifo.cpp', | |||||
'../posix/JackPosixThread.cpp', | |||||
'../posix/JackPosixSemaphore.cpp', | |||||
'../posix/JackFifo.cpp', | |||||
'../posix/JackProcessSync.cpp', | |||||
'../posix/JackSocket.cpp', | |||||
] | ] | ||||
includes.append('../linux') | |||||
includes = ['../linux', '../posix'] + includes | |||||
uselib.append('RT') | uselib.append('RT') | ||||
uselib.append('DL') | uselib.append('DL') | ||||
if bld.env()['IS_MACOSX']: | if bld.env()['IS_MACOSX']: | ||||
common_libsources += [ | common_libsources += [ | ||||
'../macosx/JackMachSemaphore.cpp', | |||||
'../posix/JackProcessSync.cpp', | |||||
'../posix/JackPosixThread.cpp', | |||||
'../macosx/JackMachThread.cpp', | '../macosx/JackMachThread.cpp', | ||||
'../macosx/JackMachSemaphore.cpp', | |||||
'../macosx/JackMachPort.cpp', | '../macosx/JackMachPort.cpp', | ||||
] | ] | ||||
includes += ['../macosx', '../macosx/RPC'] | |||||
includes = ['../macosx', '../macosx/RPC', '../posix'] + includes | |||||
serverlib = bld.create_obj('cpp', 'shlib') | serverlib = bld.create_obj('cpp', 'shlib') | ||||
serverlib.features.append('cc') | serverlib.features.append('cc') | ||||
@@ -124,8 +130,8 @@ def build(bld): | |||||
'JackLoopbackDriver.cpp', | 'JackLoopbackDriver.cpp', | ||||
'JackServer.cpp', | 'JackServer.cpp', | ||||
'JackThreadedDriver.cpp', | 'JackThreadedDriver.cpp', | ||||
'JackRestartThreadedDriver.cpp', | |||||
'JackWaitThreadedDriver.cpp', | |||||
'JackRestartThreadedDriver.cpp', | |||||
'JackWaitThreadedDriver.cpp', | |||||
'JackServerAPI.cpp', | 'JackServerAPI.cpp', | ||||
'JackDriverLoader.cpp', | 'JackDriverLoader.cpp', | ||||
'JackServerGlobals.cpp', | 'JackServerGlobals.cpp', | ||||
@@ -136,10 +142,10 @@ def build(bld): | |||||
if bld.env()['IS_LINUX']: | if bld.env()['IS_LINUX']: | ||||
serverlib.source += [ | serverlib.source += [ | ||||
'JackSocketServerChannel.cpp', | |||||
'JackSocketNotifyChannel.cpp', | |||||
'JackSocketServerNotifyChannel.cpp', | |||||
'JackNetUnixSocket.cpp', | |||||
'../posix/JackSocketServerChannel.cpp', | |||||
'../posix/JackSocketNotifyChannel.cpp', | |||||
'../posix/JackSocketServerNotifyChannel.cpp', | |||||
'../posix/JackNetUnixSocket.cpp', | |||||
] | ] | ||||
if bld.env()['IS_MACOSX']: | if bld.env()['IS_MACOSX']: | ||||
@@ -149,7 +155,7 @@ def build(bld): | |||||
'../macosx/JackMachServerNotifyChannel.cpp', | '../macosx/JackMachServerNotifyChannel.cpp', | ||||
'../macosx/JackMacEngineRPC.cpp', | '../macosx/JackMacEngineRPC.cpp', | ||||
'../macosx/RPC/JackRPCClientUser.c', | '../macosx/RPC/JackRPCClientUser.c', | ||||
'JackNetUnixSocket.cpp', | |||||
'../posix/JackNetUnixSocket.cpp', | |||||
] | ] | ||||
serverlib.vnum = bld.env()['JACK_API_VERSION'] | serverlib.vnum = bld.env()['JACK_API_VERSION'] | ||||
@@ -178,7 +184,7 @@ def build(bld): | |||||
if bld.env()['IS_LINUX']: | if bld.env()['IS_LINUX']: | ||||
clientlib.source += [ | clientlib.source += [ | ||||
'JackSocketClientChannel.cpp', | |||||
'../posix/JackSocketClientChannel.cpp', | |||||
] | ] | ||||
if bld.env()['IS_MACOSX']: | if bld.env()['IS_MACOSX']: | ||||
@@ -64,7 +64,12 @@ def build(bld): | |||||
return | return | ||||
obj = bld.create_obj('cc', 'program') | obj = bld.create_obj('cc', 'program') | ||||
obj.includes = ['.', '../../', '../../common', '../../common/jack'] | |||||
if bld.env()['IS_LINUX']: | |||||
sysdeps_dbus_include = ['../linux', '../posix'] | |||||
if bld.env()['IS_MACOSX']: | |||||
sysdeps_dbus_include = ['../macosx', '../posix'] | |||||
obj.includes = sysdeps_dbus_include + ['.', '../', '../common', '../common/jack'] | |||||
obj.source = [ | obj.source = [ | ||||
'jackdbus.c', | 'jackdbus.c', | ||||
'controller.c', | 'controller.c', |
@@ -56,10 +56,14 @@ def configure(conf): | |||||
conf.env['BUILD_EXAMPLE_CLIENT_REC'] = conf.is_defined('HAVE_SNDFILE') | conf.env['BUILD_EXAMPLE_CLIENT_REC'] = conf.is_defined('HAVE_SNDFILE') | ||||
def build(bld): | def build(bld): | ||||
if bld.env()['IS_LINUX']: | |||||
os_incdir = ['../linux', '../posix'] | |||||
if bld.env()['IS_MACOSX']: | |||||
os_incdir = ['../macosx', '../posix'] | |||||
for example_program, example_program_source in example_programs.items(): | for example_program, example_program_source in example_programs.items(): | ||||
prog = bld.create_obj('cpp', 'program') | prog = bld.create_obj('cpp', 'program') | ||||
prog.features.append('cc') | prog.features.append('cc') | ||||
prog.includes = ['../common/jack', '../common'] | |||||
prog.includes = os_incdir + ['../common/jack', '../common'] | |||||
prog.source = example_program_source | prog.source = example_program_source | ||||
if bld.env()['IS_MACOSX']: | if bld.env()['IS_MACOSX']: | ||||
prog.env.append_value("CPPFLAGS", "-mmacosx-version-min=10.4 -arch i386 -arch ppc") | prog.env.append_value("CPPFLAGS", "-mmacosx-version-min=10.4 -arch i386 -arch ppc") | ||||
@@ -76,7 +80,7 @@ def build(bld): | |||||
#if bld.env()['BUILD_EXAMPLE_CLIENT_TRANSPORT'] | #if bld.env()['BUILD_EXAMPLE_CLIENT_TRANSPORT'] | ||||
if bld.env()['BUILD_EXAMPLE_CLIENT_TRANSPORT'] == True and bld.env()['IS_LINUX'] == True: | if bld.env()['BUILD_EXAMPLE_CLIENT_TRANSPORT'] == True and bld.env()['IS_LINUX'] == True: | ||||
prog = bld.create_obj('cc', 'program') | prog = bld.create_obj('cc', 'program') | ||||
prog.includes = ['../common/jack', '../common'] | |||||
prog.includes = os_incdir + ['../common/jack', '../common'] | |||||
prog.source = 'transport.c' | prog.source = 'transport.c' | ||||
if bld.env()['IS_MACOSX']: | if bld.env()['IS_MACOSX']: | ||||
prog.env.append_value("CPPFLAGS", "-mmacosx-version-min=10.4 -arch i386 -arch ppc") | prog.env.append_value("CPPFLAGS", "-mmacosx-version-min=10.4 -arch i386 -arch ppc") | ||||
@@ -91,7 +95,7 @@ def build(bld): | |||||
if bld.env()['BUILD_EXAMPLE_CLIENT_REC'] == True: | if bld.env()['BUILD_EXAMPLE_CLIENT_REC'] == True: | ||||
prog = bld.create_obj('cc', 'program') | prog = bld.create_obj('cc', 'program') | ||||
prog.includes = ['../common/jack', '../common'] | |||||
prog.includes = os_incdir + ['../common/jack', '../common'] | |||||
prog.source = 'capture_client.c' | prog.source = 'capture_client.c' | ||||
if bld.env()['IS_MACOSX']: | if bld.env()['IS_MACOSX']: | ||||
prog.env.append_value("CPPFLAGS", "-mmacosx-version-min=10.4 -arch i386 -arch ppc") | prog.env.append_value("CPPFLAGS", "-mmacosx-version-min=10.4 -arch i386 -arch ppc") | ||||
@@ -107,7 +111,7 @@ def build(bld): | |||||
for example_lib, example_lib_source in example_libs.items(): | for example_lib, example_lib_source in example_libs.items(): | ||||
lib = bld.create_obj('cc', 'shlib') | lib = bld.create_obj('cc', 'shlib') | ||||
lib.env['shlib_PATTERN'] = '%s.so' | lib.env['shlib_PATTERN'] = '%s.so' | ||||
lib.includes = ['../common/jack', '../common'] | |||||
lib.includes = os_incdir + ['../common/jack', '../common'] | |||||
lib.target = example_lib | lib.target = example_lib | ||||
lib.source = example_lib_source | lib.source = example_lib_source | ||||
if bld.env()['IS_MACOSX']: | if bld.env()['IS_MACOSX']: | ||||
@@ -0,0 +1,77 @@ | |||||
/* | |||||
Copyright (C) 2004-2008 Grame | |||||
This program is free software; you can redistribute it and/or modify | |||||
it under the terms of the GNU Lesser General Public License as published by | |||||
the Free Software Foundation; either version 2.1 of the License, or | |||||
(at your option) any later version. | |||||
This program is distributed in the hope that it will be useful, | |||||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
GNU Lesser General Public License for more details. | |||||
You should have received a copy of the GNU Lesser General Public License | |||||
along with this program; if not, write to the Free Software | |||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||||
*/ | |||||
#ifndef __JackAtomic_linux__ | |||||
#define __JackAtomic_linux__ | |||||
#include "JackTypes.h" | |||||
#ifdef __PPC__ | |||||
static inline int CAS(register UInt32 value, register UInt32 newvalue, register volatile void* addr) | |||||
{ | |||||
register int result; | |||||
register UInt32 tmp; | |||||
asm volatile ( | |||||
"# CAS \n" | |||||
" lwarx %4, 0, %1 \n" // creates a reservation on addr | |||||
" cmpw %4, %2 \n" // test value at addr | |||||
" bne- 1f \n" | |||||
" sync \n" // synchronize instructions | |||||
" stwcx. %3, 0, %1 \n" // if the reservation is not altered | |||||
// stores the new value at addr | |||||
" bne- 1f \n" | |||||
" li %0, 1 \n" | |||||
" b 2f \n" | |||||
"1: \n" | |||||
" li %0, 0 \n" | |||||
"2: \n" | |||||
: "=r" (result) | |||||
: "r" (addr), "r" (value), "r" (newvalue), "r" (tmp) | |||||
); | |||||
return result; | |||||
} | |||||
#endif | |||||
#if defined(__i386__) || defined(__x86_64__) | |||||
#ifdef __SMP__ | |||||
# define LOCK "lock ; " | |||||
#else | |||||
# define LOCK "" | |||||
#endif | |||||
static inline char CAS(volatile UInt32 value, UInt32 newvalue, volatile void* addr) | |||||
{ | |||||
register char ret; | |||||
__asm__ __volatile__ ( | |||||
"# CAS \n\t" | |||||
LOCK "cmpxchg %2, (%1) \n\t" | |||||
"sete %0 \n\t" | |||||
: "=a" (ret) | |||||
: "c" (addr), "d" (newvalue), "a" (value) | |||||
); | |||||
return ret; | |||||
} | |||||
#endif | |||||
#endif | |||||
@@ -0,0 +1,75 @@ | |||||
/* | |||||
Copyright (C) 2004-2008 Grame | |||||
This program is free software; you can redistribute it and/or modify | |||||
it under the terms of the GNU Lesser General Public License as published by | |||||
the Free Software Foundation; either version 2.1 of the License, or | |||||
(at your option) any later version. | |||||
This program is distributed in the hope that it will be useful, | |||||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
GNU Lesser General Public License for more details. | |||||
You should have received a copy of the GNU Lesser General Public License | |||||
along with this program; if not, write to the Free Software | |||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||||
*/ | |||||
#ifndef __JackPlatformPlug_linux__ | |||||
#define __JackPlatformPlug_linux__ | |||||
namespace Jack | |||||
{ | |||||
struct JackRequest; | |||||
struct JackResult; | |||||
class JackPosixThread; | |||||
class JackFifo; | |||||
class JackSocketServerChannel; | |||||
class JackSocketClientChannel; | |||||
class JackSocketServerNotifyChannel; | |||||
class JackSocketNotifyChannel; | |||||
class JackClientSocket; | |||||
class JackNetUnixSocket; | |||||
} | |||||
/* __JackPlatformThread__ */ | |||||
#include "JackPosixThread.h" | |||||
namespace Jack { typedef JackPosixThread JackThread; } | |||||
/* __JackPlatformSynchro__ client activation */ | |||||
#include "JackFifo.h" | |||||
namespace Jack { typedef JackFifo JackSynchro; } | |||||
/* __JackPlatformChannelTransaction__ */ | |||||
#include "JackSocket.h" | |||||
namespace Jack { typedef JackClientSocket JackChannelTransaction; } | |||||
#include "JackProcessSync.h" | |||||
/* __JackPlatformProcessSync__ */ | |||||
/* Only on windows a special JackProcessSync is used. It is directly defined by including JackProcessSync.h here */ | |||||
/* __JackPlatformServerChannel__ */ | |||||
#include "JackSocketServerChannel.h" | |||||
namespace Jack { typedef JackSocketServerChannel JackServerChannel; } | |||||
/* __JackPlatformClientChannel__ */ | |||||
#include "JackSocketClientChannel.h" | |||||
namespace Jack { typedef JackSocketClientChannel JackClientChannel; } | |||||
/* __JackPlatformServerNotifyChannel__ */ | |||||
#include "JackSocketServerNotifyChannel.h" | |||||
namespace Jack { typedef JackSocketServerNotifyChannel JackServerNotifyChannel; } | |||||
/* __JackPlatformNotifyChannel__ */ | |||||
#include "JackSocketNotifyChannel.h" | |||||
namespace Jack { typedef JackSocketNotifyChannel JackNotifyChannel; } | |||||
/* __JackPlatformNetSocket__ */ | |||||
#include "JackNetUnixSocket.h" | |||||
namespace Jack { typedef JackNetUnixSocket JackNetSocket; } | |||||
#endif |
@@ -0,0 +1,61 @@ | |||||
/* | |||||
Copyright (C) 2001-2003 Paul Davis | |||||
Copyright (C) 2004-2008 Grame | |||||
This program is free software; you can redistribute it and/or modify | |||||
it under the terms of the GNU Lesser General Public License as published by | |||||
the Free Software Foundation; either version 2.1 of the License, or | |||||
(at your option) any later version. | |||||
This program is distributed in the hope that it will be useful, | |||||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
GNU Lesser General Public License for more details. | |||||
You should have received a copy of the GNU Lesser General Public License | |||||
along with this program; if not, write to the Free Software | |||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||||
*/ | |||||
#ifndef __JackTime_linux__ | |||||
#define __JackTime_linux__ | |||||
#ifdef __cplusplus | |||||
extern "C" | |||||
{ | |||||
#endif | |||||
#include <unistd.h> | |||||
static inline void JackSleep(long usec) | |||||
{ | |||||
usleep(usec); | |||||
} | |||||
#ifdef GETCYCLE_TIME | |||||
#include "cycles.h" | |||||
extern jack_time_t __jack_cpu_mhz; | |||||
jack_time_t GetMhz(); | |||||
void InitTime(); | |||||
static inline jack_time_t GetMicroSeconds(void) | |||||
{ | |||||
return get_cycles() / __jack_cpu_mhz; | |||||
} | |||||
#else | |||||
#include <time.h> | |||||
void InitTime(); | |||||
static inline jack_time_t GetMicroSeconds(void) | |||||
{ | |||||
struct timespec ts; | |||||
clock_gettime(CLOCK_MONOTONIC, &ts); | |||||
return (jack_time_t)ts.tv_sec * 1000000 + ts.tv_nsec / 1000; | |||||
} | |||||
#endif | |||||
#ifdef __cplusplus | |||||
} | |||||
#endif | |||||
#endif | |||||
@@ -25,7 +25,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
#include <assert.h> | #include <assert.h> | ||||
#include <alsa/asoundlib.h> | #include <alsa/asoundlib.h> | ||||
#include "JackAudioAdapterInterface.h" | #include "JackAudioAdapterInterface.h" | ||||
#include "JackPlatformThread.h" | |||||
#include "JackPlatformPlug.h" | |||||
#include "JackError.h" | #include "JackError.h" | ||||
#include "jack.h" | #include "jack.h" | ||||
#include "jslist.h" | #include "jslist.h" | ||||
@@ -603,7 +603,7 @@ extern "C" | |||||
{ | { | ||||
#endif | #endif | ||||
#include "JackExports.h" | |||||
#include "JackCompilerDeps.h" | |||||
#include "driver_interface.h" | #include "driver_interface.h" | ||||
EXPORT jack_driver_desc_t* jack_get_descriptor(); | EXPORT jack_driver_desc_t* jack_get_descriptor(); | ||||