Browse Source

Merge Michael Voigt drops branch after reorganization step.

git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@2880 0c269be4-1314-0410-8aa9-9f06e86f4224
tags/1.90
sletz 16 years ago
parent
commit
3e01068967
100 changed files with 494 additions and 1177 deletions
  1. +15
    -1
      ChangeLog
  2. +1
    -1
      common/JackAPI.cpp
  3. +1
    -1
      common/JackActivationCount.h
  4. +1
    -165
      common/JackAtomic.h
  5. +1
    -1
      common/JackAudioAdapter.cpp
  6. +5
    -5
      common/JackAudioAdapterFactory.cpp
  7. +2
    -2
      common/JackAudioAdapterInterface.cpp
  8. +1
    -3
      common/JackAudioDriver.cpp
  9. +1
    -2
      common/JackClient.h
  10. +1
    -1
      common/JackClientInterface.h
  11. +3
    -8
      common/JackCompilerDeps.h
  12. +1
    -1
      common/JackConnectionManager.h
  13. +1
    -1
      common/JackControlAPI.h
  14. +1
    -3
      common/JackDriver.cpp
  15. +1
    -1
      common/JackDriver.h
  16. +1
    -3
      common/JackDriverLoader.cpp
  17. +1
    -1
      common/JackDriverLoader.h
  18. +1
    -1
      common/JackDummyDriver.cpp
  19. +1
    -4
      common/JackEngine.cpp
  20. +1
    -2
      common/JackEngine.h
  21. +8
    -13
      common/JackEngineControl.cpp
  22. +1
    -1
      common/JackError.h
  23. +1
    -1
      common/JackException.h
  24. +1
    -1
      common/JackExternalClient.h
  25. +1
    -1
      common/JackFrameTimer.h
  26. +1
    -3
      common/JackFreewheelDriver.cpp
  27. +1
    -1
      common/JackGlobals.h
  28. +1
    -6
      common/JackGraphManager.cpp
  29. +3
    -1
      common/JackGraphManager.h
  30. +1
    -3
      common/JackInternalClient.cpp
  31. +1
    -1
      common/JackLibAPI.cpp
  32. +1
    -1
      common/JackLibClient.cpp
  33. +1
    -8
      common/JackLibGlobals.h
  34. +1
    -3
      common/JackLoopbackDriver.cpp
  35. +1
    -2
      common/JackMessageBuffer.h
  36. +2
    -5
      common/JackMidiAPI.cpp
  37. +1
    -93
      common/JackMutex.h
  38. +1
    -1
      common/JackNetAdapter.h
  39. +1
    -1
      common/JackNetSocket.h
  40. +1
    -1
      common/JackNetTool.h
  41. +0
    -59
      common/JackPlatformClientChannel.h
  42. +0
    -59
      common/JackPlatformNotifyChannel.h
  43. +25
    -0
      common/JackPlatformPlug.h
  44. +0
    -59
      common/JackPlatformServerChannel.h
  45. +0
    -59
      common/JackPlatformServerNotifyChannel.h
  46. +0
    -64
      common/JackPlatformSynchro.h
  47. +2
    -10
      common/JackPort.h
  48. +1
    -1
      common/JackRequest.h
  49. +1
    -3
      common/JackRestartThreadedDriver.cpp
  50. +1
    -3
      common/JackServer.cpp
  51. +2
    -3
      common/JackServer.h
  52. +2
    -4
      common/JackServerAPI.cpp
  53. +1
    -1
      common/JackServerLaunch.cpp
  54. +2
    -15
      common/JackShmMem.h
  55. +1
    -0
      common/JackSynchro.h
  56. +26
    -0
      common/JackSystemDeps.h
  57. +21
    -18
      common/JackThread.h
  58. +1
    -3
      common/JackThreadedDriver.cpp
  59. +1
    -1
      common/JackThreadedDriver.h
  60. +2
    -78
      common/JackTime.h
  61. +1
    -1
      common/JackTools.h
  62. +1
    -1
      common/JackTransportEngine.h
  63. +1
    -8
      common/JackTypes.h
  64. +1
    -3
      common/JackWaitThreadedDriver.cpp
  65. +2
    -7
      common/driver_interface.h
  66. +1
    -4
      common/jack/control.h
  67. +1
    -7
      common/jack/jack.h
  68. +1
    -289
      common/jack/jslist.h
  69. +62
    -0
      common/jack/systemdeps.h
  70. +1
    -7
      common/jack/thread.h
  71. +8
    -30
      common/jack/types.h
  72. +1
    -1
      common/ringbuffer.c
  73. +1
    -1
      common/shm.h
  74. +23
    -17
      common/wscript
  75. +0
    -0
      dbus/controller.c
  76. +0
    -0
      dbus/controller.h
  77. +0
    -0
      dbus/controller_iface_configure.c
  78. +0
    -0
      dbus/controller_iface_control.c
  79. +0
    -0
      dbus/controller_iface_introspectable.c
  80. +0
    -0
      dbus/controller_iface_patchbay.c
  81. +0
    -0
      dbus/controller_iface_transport.c
  82. +0
    -0
      dbus/controller_internal.h
  83. +0
    -0
      dbus/jackdbus.c
  84. +0
    -0
      dbus/jackdbus.h
  85. +0
    -0
      dbus/list.h
  86. +0
    -0
      dbus/org.jackaudio.service.in
  87. +0
    -0
      dbus/sigsegv.c
  88. +0
    -0
      dbus/sigsegv.h
  89. +6
    -1
      dbus/wscript
  90. +0
    -0
      dbus/xml.c
  91. +0
    -0
      dbus/xml.h
  92. +0
    -0
      dbus/xml_expat.c
  93. +0
    -0
      dbus/xml_libxml.c
  94. +0
    -0
      dbus/xml_nop.c
  95. +0
    -0
      dbus/xml_write_raw.c
  96. +8
    -4
      example-clients/wscript
  97. +77
    -0
      linux/JackAtomic_os.h
  98. +75
    -0
      linux/JackPlatformPlug_os.h
  99. +61
    -0
      linux/JackTime_os.h
  100. +2
    -2
      linux/alsa/JackAlsaAdapter.h

+ 15
- 1
ChangeLog View File

@@ -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.


+ 1
- 1
common/JackAPI.cpp View File

@@ -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__


+ 1
- 1
common/JackActivationCount.h View File

@@ -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"




+ 1
- 165
common/JackAtomic.h View File

@@ -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)
{ {


+ 1
- 1
common/JackAudioAdapter.cpp View File

@@ -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>


+ 5
- 5
common/JackAudioAdapterFactory.cpp View File

@@ -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;


+ 2
- 2
common/JackAudioAdapterInterface.cpp View File

@@ -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,


+ 1
- 3
common/JackAudioDriver.cpp View File

@@ -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"


+ 1
- 2
common/JackClient.h View File

@@ -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


+ 1
- 1
common/JackClientInterface.h View File

@@ -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
{ {


common/JackExports.h → common/JackCompilerDeps.h View File

@@ -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


+ 1
- 1
common/JackConnectionManager.h View File

@@ -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>




+ 1
- 1
common/JackControlAPI.h View File

@@ -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__


+ 1
- 3
common/JackDriver.cpp View File

@@ -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"


+ 1
- 1
common/JackDriver.h View File

@@ -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>




+ 1
- 3
common/JackDriverLoader.cpp View File

@@ -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


+ 1
- 1
common/JackDriverLoader.h View File

@@ -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


+ 1
- 1
common/JackDummyDriver.cpp View File

@@ -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>




+ 1
- 4
common/JackEngine.cpp View File

@@ -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"


+ 1
- 2
common/JackEngine.h View File

@@ -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
{ {


+ 8
- 13
common/JackEngineControl.cpp View File

@@ -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));
} }


+ 1
- 1
common/JackError.h View File

@@ -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


+ 1
- 1
common/JackException.h View File

@@ -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


+ 1
- 1
common/JackExternalClient.h View File

@@ -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
{ {


+ 1
- 1
common/JackFrameTimer.h View File

@@ -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


+ 1
- 3
common/JackFreewheelDriver.cpp View File

@@ -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"


+ 1
- 1
common/JackGlobals.h View File

@@ -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;


+ 1
- 6
common/JackGraphManager.cpp View File

@@ -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);
} }
} }




+ 3
- 1
common/JackGraphManager.h View File

@@ -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
{ {


+ 1
- 3
common/JackInternalClient.cpp View File

@@ -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


+ 1
- 1
common/JackLibAPI.cpp View File

@@ -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;


+ 1
- 1
common/JackLibClient.cpp View File

@@ -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


+ 1
- 8
common/JackLibGlobals.h View File

@@ -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;


+ 1
- 3
common/JackLoopbackDriver.cpp View File

@@ -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"


+ 1
- 2
common/JackMessageBuffer.h View File

@@ -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
{ {


+ 2
- 5
common/JackMidiAPI.cpp View File

@@ -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"


+ 1
- 93
common/JackMutex.h View File

@@ -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.
*/ */


+ 1
- 1
common/JackNetAdapter.h View File

@@ -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


+ 1
- 1
common/JackNetSocket.h View File

@@ -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>


+ 1
- 1
common/JackNetTool.h View File

@@ -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>


+ 0
- 59
common/JackPlatformClientChannel.h View File

@@ -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__ */

+ 0
- 59
common/JackPlatformNotifyChannel.h View File

@@ -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__ */

+ 25
- 0
common/JackPlatformPlug.h View File

@@ -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

+ 0
- 59
common/JackPlatformServerChannel.h View File

@@ -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__ */

+ 0
- 59
common/JackPlatformServerNotifyChannel.h View File

@@ -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__ */

+ 0
- 64
common/JackPlatformSynchro.h View File

@@ -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__ */

+ 2
- 10
common/JackPort.h View File

@@ -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;




+ 1
- 1
common/JackRequest.h View File

@@ -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>


+ 1
- 3
common/JackRestartThreadedDriver.cpp View File

@@ -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"


+ 1
- 3
common/JackServer.cpp View File

@@ -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"


+ 2
- 3
common/JackServer.h View File

@@ -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


+ 2
- 4
common/JackServerAPI.cpp View File

@@ -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


+ 1
- 1
common/JackServerLaunch.cpp View File

@@ -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;




+ 2
- 15
common/JackShmMem.h View File

@@ -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
{ {


+ 1
- 0
common/JackSynchro.h View File

@@ -94,6 +94,7 @@ class JackSynchro
} }


}; };

} }


} // end of namespace } // end of namespace


+ 26
- 0
common/JackSystemDeps.h View File

@@ -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
- 18
common/JackThread.h View File

@@ -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);




+ 1
- 3
common/JackThreadedDriver.cpp View File

@@ -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"


+ 1
- 1
common/JackThreadedDriver.h View File

@@ -22,7 +22,7 @@
#define __JackThreadedDriver__ #define __JackThreadedDriver__


#include "JackDriver.h" #include "JackDriver.h"
#include "JackPlatformThread.h"
#include "JackPlatformPlug.h"


namespace Jack namespace Jack
{ {


+ 2
- 78
common/JackTime.h View File

@@ -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




+ 1
- 1
common/JackTools.h View File

@@ -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


+ 1
- 1
common/JackTransportEngine.h View File

@@ -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


+ 1
- 8
common/JackTypes.h View File

@@ -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




+ 1
- 3
common/JackWaitThreadedDriver.cpp View File

@@ -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"


+ 2
- 7
common/driver_interface.h View File

@@ -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


+ 1
- 4
common/jack/control.h View File

@@ -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


+ 1
- 7
common/jack/jack.h View File

@@ -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>




+ 1
- 289
common/jack/jslist.h View File

@@ -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__ */

+ 62
- 0
common/jack/systemdeps.h View File

@@ -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

+ 1
- 7
common/jack/thread.h View File

@@ -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
* *


+ 8
- 30
common/jack/types.h View File

@@ -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


+ 1
- 1
common/ringbuffer.c View File

@@ -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. */


+ 1
- 1
common/shm.h View File

@@ -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


+ 23
- 17
common/wscript View File

@@ -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']:


linux/dbus/controller.c → dbus/controller.c View File


linux/dbus/controller.h → dbus/controller.h View File


linux/dbus/controller_iface_configure.c → dbus/controller_iface_configure.c View File


linux/dbus/controller_iface_control.c → dbus/controller_iface_control.c View File


linux/dbus/controller_iface_introspectable.c → dbus/controller_iface_introspectable.c View File


linux/dbus/controller_iface_patchbay.c → dbus/controller_iface_patchbay.c View File


linux/dbus/controller_iface_transport.c → dbus/controller_iface_transport.c View File


linux/dbus/controller_internal.h → dbus/controller_internal.h View File


linux/dbus/jackdbus.c → dbus/jackdbus.c View File


linux/dbus/jackdbus.h → dbus/jackdbus.h View File


linux/dbus/list.h → dbus/list.h View File


linux/dbus/org.jackaudio.service.in → dbus/org.jackaudio.service.in View File


linux/dbus/sigsegv.c → dbus/sigsegv.c View File


linux/dbus/sigsegv.h → dbus/sigsegv.h View File


linux/dbus/wscript → dbus/wscript View File

@@ -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',

linux/dbus/xml.c → dbus/xml.c View File


linux/dbus/xml.h → dbus/xml.h View File


linux/dbus/xml_expat.c → dbus/xml_expat.c View File


linux/dbus/xml_libxml.c → dbus/xml_libxml.c View File


linux/dbus/xml_nop.c → dbus/xml_nop.c View File


linux/dbus/xml_write_raw.c → dbus/xml_write_raw.c View File


+ 8
- 4
example-clients/wscript View File

@@ -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']:


+ 77
- 0
linux/JackAtomic_os.h View File

@@ -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


+ 75
- 0
linux/JackPlatformPlug_os.h View File

@@ -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

+ 61
- 0
linux/JackTime_os.h View File

@@ -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


+ 2
- 2
linux/alsa/JackAlsaAdapter.h View File

@@ -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();


Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save