git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@2934 0c269be4-1314-0410-8aa9-9f06e86f4224tags/1.90
@@ -23,9 +23,13 @@ Michael Voigt | |||||
Jackdmp changes log | Jackdmp changes log | ||||
--------------------------- | --------------------------- | ||||
2008-08-20 Stephane Letz <letz@grame.fr> | |||||
* Michael Voigt JackAPI cleanup patch. | |||||
2008-08-19 Stephane Letz <letz@grame.fr> | 2008-08-19 Stephane Letz <letz@grame.fr> | ||||
* Michael Voigt JackTime patch. | |||||
* Michael Voigt JackTime cleanup patch. | |||||
2008-09-17 Stephane Letz <letz@grame.fr> | 2008-09-17 Stephane Letz <letz@grame.fr> | ||||
@@ -31,14 +31,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||||
#include "JackTime.h" | #include "JackTime.h" | ||||
#include "JackCompilerDeps.h" | #include "JackCompilerDeps.h" | ||||
#include "JackPortType.h" | #include "JackPortType.h" | ||||
#ifdef __APPLE__ | |||||
#include "JackMachThread.h" | |||||
#elif WIN32 | |||||
#include "JackWinThread.h" | |||||
#else | |||||
#include "JackPosixThread.h" | |||||
#endif | |||||
#include "JackPlatformPlug.h" | |||||
#include <math.h> | #include <math.h> | ||||
#ifdef __CLIENTDEBUG__ | #ifdef __CLIENTDEBUG__ | ||||
@@ -1588,14 +1581,8 @@ EXPORT void jack_reset_max_delayed_usecs(jack_client_t* ext_client) | |||||
// thread.h | // thread.h | ||||
EXPORT int jack_acquire_real_time_scheduling(pthread_t thread, int priority) | EXPORT int jack_acquire_real_time_scheduling(pthread_t thread, int priority) | ||||
{ | { | ||||
#ifdef __APPLE__ | |||||
JackEngineControl* control = GetEngineControl(); | JackEngineControl* control = GetEngineControl(); | ||||
return (control ? JackMachThread::AcquireRealTimeImp(thread, GetEngineControl()->fPeriod, GetEngineControl()->fComputation, GetEngineControl()->fConstraint) : -1); | |||||
#elif WIN32 | |||||
return JackWinThread::AcquireRealTimeImp(thread, priority); | |||||
#else | |||||
return JackPosixThread::AcquireRealTimeImp(thread, priority); | |||||
#endif | |||||
return (control ? JackThread::AcquireRealTimeImp(thread, priority, GetEngineControl()->fPeriod, GetEngineControl()->fComputation, GetEngineControl()->fConstraint) : -1); | |||||
} | } | ||||
EXPORT int jack_client_create_thread(jack_client_t* client, | EXPORT int jack_client_create_thread(jack_client_t* client, | ||||
@@ -1605,42 +1592,22 @@ EXPORT int jack_client_create_thread(jack_client_t* client, | |||||
void *(*start_routine)(void*), | void *(*start_routine)(void*), | ||||
void *arg) | void *arg) | ||||
{ | { | ||||
#ifdef __APPLE__ | |||||
return JackPosixThread::StartImp(thread, priority, realtime, start_routine, arg); | |||||
#elif WIN32 | |||||
return JackWinThread::StartImp(thread, priority, realtime, (ThreadCallback)start_routine, arg); | |||||
#else | |||||
return JackPosixThread::StartImp(thread, priority, realtime, start_routine, arg); | |||||
#endif | |||||
return JackThread::StartImp(thread, priority, realtime, start_routine, arg); | |||||
} | } | ||||
EXPORT int jack_drop_real_time_scheduling(pthread_t thread) | EXPORT int jack_drop_real_time_scheduling(pthread_t thread) | ||||
{ | { | ||||
#ifdef __APPLE__ | |||||
return JackMachThread::DropRealTimeImp(thread); | |||||
#elif WIN32 | |||||
return JackWinThread::DropRealTimeImp(thread); | |||||
#else | |||||
return JackPosixThread::DropRealTimeImp(thread); | |||||
#endif | |||||
return JackThread::DropRealTimeImp(thread); | |||||
} | } | ||||
EXPORT int jack_client_stop_thread(jack_client_t* client, pthread_t thread) | EXPORT int jack_client_stop_thread(jack_client_t* client, pthread_t thread) | ||||
{ | { | ||||
#ifdef WIN32 | |||||
return JackWinThread::StopImp(thread); | |||||
#else | |||||
return JackPosixThread::StopImp(thread); | |||||
#endif | |||||
return JackThread::StopImp(thread); | |||||
} | } | ||||
EXPORT int jack_client_kill_thread(jack_client_t* client, pthread_t thread) | EXPORT int jack_client_kill_thread(jack_client_t* client, pthread_t thread) | ||||
{ | { | ||||
#ifdef WIN32 | |||||
return JackWinThread::KillImp(thread); | |||||
#else | |||||
return JackPosixThread::KillImp(thread); | |||||
#endif | |||||
return JackThread::KillImp(thread); | |||||
} | } | ||||
// intclient.h | // intclient.h | ||||
@@ -27,9 +27,10 @@ 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 "JackGlobals.h" | #include "JackGlobals.h" | ||||
#include "JackServerLaunch.h" | |||||
#include "JackCompilerDeps.h" | #include "JackCompilerDeps.h" | ||||
#include "JackTools.h" | #include "JackTools.h" | ||||
#include "JackSystemDeps.h" | |||||
#include "JackServerLaunch.h" | |||||
using namespace Jack; | using namespace Jack; | ||||
@@ -81,30 +82,25 @@ EXPORT jack_client_t* jack_client_open_aux(const char* ext_client_name, jack_opt | |||||
} | } | ||||
/* parse variable arguments */ | /* parse variable arguments */ | ||||
if (ap) | |||||
if (ap) { | |||||
jack_varargs_parse(options, ap, &va); | jack_varargs_parse(options, ap, &va); | ||||
else | |||||
} else { | |||||
jack_varargs_init(&va); | jack_varargs_init(&va); | ||||
} | |||||
JackLibGlobals::Init(); // jack library initialisation | JackLibGlobals::Init(); // jack library initialisation | ||||
#ifndef WIN32 | |||||
if (try_start_server(&va, options, status)) { | if (try_start_server(&va, options, status)) { | ||||
jack_error("jack server is not running or cannot be started"); | jack_error("jack server is not running or cannot be started"); | ||||
JackLibGlobals::Destroy(); // jack library destruction | JackLibGlobals::Destroy(); // jack library destruction | ||||
return 0; | return 0; | ||||
} | } | ||||
#endif | |||||
#ifndef WIN32 | |||||
char* jack_debug = getenv("JACK_CLIENT_DEBUG"); | |||||
if (jack_debug && strcmp(jack_debug, "on") == 0) | |||||
if (JACK_DEBUG) { | |||||
client = new JackDebugClient(new JackLibClient(GetSynchroTable())); // Debug mode | client = new JackDebugClient(new JackLibClient(GetSynchroTable())); // Debug mode | ||||
else | |||||
} else { | |||||
client = new JackLibClient(GetSynchroTable()); | client = new JackLibClient(GetSynchroTable()); | ||||
#else | |||||
client = new JackLibClient(GetSynchroTable()); | |||||
#endif | |||||
} | |||||
int res = client->Open(va.server_name, client_name, options, status); | int res = client->Open(va.server_name, client_name, options, status); | ||||
if (res < 0) { | if (res < 0) { | ||||
@@ -28,7 +28,6 @@ This program is free software; you can redistribute it and/or modify | |||||
#include "JackServer.h" | #include "JackServer.h" | ||||
#include "JackDebugClient.h" | #include "JackDebugClient.h" | ||||
#include "JackServerGlobals.h" | #include "JackServerGlobals.h" | ||||
#include "JackServerLaunch.h" | |||||
#include "JackTools.h" | #include "JackTools.h" | ||||
#include "JackCompilerDeps.h" | #include "JackCompilerDeps.h" | ||||
#include "JackLockedEngine.h" | #include "JackLockedEngine.h" | ||||
@@ -83,10 +82,11 @@ EXPORT jack_client_t* jack_client_open_aux(const char* ext_client_name, jack_opt | |||||
} | } | ||||
/* parse variable arguments */ | /* parse variable arguments */ | ||||
if (ap) | |||||
if (ap) { | |||||
jack_varargs_parse(options, ap, &va); | jack_varargs_parse(options, ap, &va); | ||||
else | |||||
} else { | |||||
jack_varargs_init(&va); | jack_varargs_init(&va); | ||||
} | |||||
g_nostart = (options & JackNoStartServer) != 0; | g_nostart = (options & JackNoStartServer) != 0; | ||||
if (!g_nostart) { | if (!g_nostart) { | ||||
@@ -97,15 +97,11 @@ EXPORT jack_client_t* jack_client_open_aux(const char* ext_client_name, jack_opt | |||||
} | } | ||||
} | } | ||||
#ifndef WIN32 | |||||
char* jack_debug = getenv("JACK_CLIENT_DEBUG"); | |||||
if (jack_debug && strcmp(jack_debug, "on") == 0) | |||||
if (JACK_DEBUG) { | |||||
client = new JackDebugClient(new JackInternalClient(JackServer::fInstance, GetSynchroTable())); // Debug mode | client = new JackDebugClient(new JackInternalClient(JackServer::fInstance, GetSynchroTable())); // Debug mode | ||||
else | |||||
} else { | |||||
client = new JackInternalClient(JackServer::fInstance, GetSynchroTable()); | client = new JackInternalClient(JackServer::fInstance, GetSynchroTable()); | ||||
#else | |||||
client = new JackInternalClient(JackServer::fInstance, GetSynchroTable()); | |||||
#endif | |||||
} | |||||
int res = client->Open(va.server_name, client_name, options, status); | int res = client->Open(va.server_name, client_name, options, status); | ||||
if (res < 0) { | if (res < 0) { | ||||
@@ -103,6 +103,7 @@ class SERVER_EXPORT JackThreadInterface | |||||
pthread_t GetThreadID(); | pthread_t GetThreadID(); | ||||
static int AcquireRealTimeImp(pthread_t thread, int priority); | static int AcquireRealTimeImp(pthread_t thread, int priority); | ||||
static int AcquireRealTimeImp(pthread_t thread, int priority, UInt64 period, UInt64 computation, UInt64 constraint); | |||||
static int DropRealTimeImp(pthread_t thread); | static int DropRealTimeImp(pthread_t thread); | ||||
static int StartImp(pthread_t* thread, int priority, int realtime, void*(*start_routine)(void*), void* arg); | static int StartImp(pthread_t* thread, int priority, int realtime, void*(*start_routine)(void*), void* arg); | ||||
static int StopImp(pthread_t thread); | static int StopImp(pthread_t thread); | ||||
@@ -23,6 +23,7 @@ | |||||
#include <stdlib.h> | #include <stdlib.h> | ||||
#include <stdarg.h> | #include <stdarg.h> | ||||
#include <string.h> | #include <string.h> | ||||
#include "types.h" | |||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" | extern "C" | ||||
@@ -180,12 +180,12 @@ def build(bld): | |||||
clientlib.source += [ | clientlib.source += [ | ||||
'JackLibClient.cpp', | 'JackLibClient.cpp', | ||||
'JackLibAPI.cpp', | 'JackLibAPI.cpp', | ||||
'JackServerLaunch.cpp', | |||||
] | ] | ||||
if bld.env()['IS_LINUX']: | if bld.env()['IS_LINUX']: | ||||
clientlib.source += [ | clientlib.source += [ | ||||
'../posix/JackSocketClientChannel.cpp', | '../posix/JackSocketClientChannel.cpp', | ||||
'../posix/JackPosixServerLaunch.cpp', | |||||
] | ] | ||||
if bld.env()['IS_MACOSX']: | if bld.env()['IS_MACOSX']: | ||||
@@ -193,6 +193,7 @@ def build(bld): | |||||
'../macosx/JackMachClientChannel.cpp', | '../macosx/JackMachClientChannel.cpp', | ||||
'../macosx/RPC/JackRPCEngineUser.c', | '../macosx/RPC/JackRPCEngineUser.c', | ||||
'../macosx/JackMacLibClientRPC.cpp', | '../macosx/JackMacLibClientRPC.cpp', | ||||
'../posix/JackPosixServerLaunch.cpp', | |||||
] | ] | ||||
clientlib.vnum = bld.env()['JACK_API_VERSION'] | clientlib.vnum = bld.env()['JACK_API_VERSION'] | ||||
@@ -19,7 +19,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||||
*/ | */ | ||||
/* | /* | ||||
Copyright: © Copyright 2002 Apple Computer, Inc. All rights reserved. | |||||
Copyright: Copyright 2002 Apple Computer, Inc. All rights reserved. | |||||
Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. | Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. | ||||
("Apple") in consideration of your agreement to the following terms, and your | ("Apple") in consideration of your agreement to the following terms, and your | ||||
@@ -28,7 +28,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||||
please do not use, install, modify or redistribute this Apple software. | please do not use, install, modify or redistribute this Apple software. | ||||
In consideration of your agreement to abide by the following terms, and subject | In consideration of your agreement to abide by the following terms, and subject | ||||
to these terms, Apple grants you a personal, non-exclusive license, under AppleÕs | |||||
to these terms, Apple grants you a personal, non-exclusive license, under Apple | |||||
copyrights in this original Apple software (the "Apple Software"), to use, | copyrights in this original Apple software (the "Apple Software"), to use, | ||||
reproduce, modify and redistribute the Apple Software, with or without | reproduce, modify and redistribute the Apple Software, with or without | ||||
modifications, in source and/or binary forms; provided that if you redistribute | modifications, in source and/or binary forms; provided that if you redistribute | ||||
@@ -111,6 +111,10 @@ class SERVER_EXPORT JackMachThread : public JackPosixThread | |||||
static int SetThreadToPriority(pthread_t thread, UInt32 inPriority, Boolean inIsFixed, UInt64 period, UInt64 computation, UInt64 constraint); | static int SetThreadToPriority(pthread_t thread, UInt32 inPriority, Boolean inIsFixed, UInt64 period, UInt64 computation, UInt64 constraint); | ||||
static int AcquireRealTimeImp(pthread_t thread, UInt64 period, UInt64 computation, UInt64 constraint); | static int AcquireRealTimeImp(pthread_t thread, UInt64 period, UInt64 computation, UInt64 constraint); | ||||
static int AcquireRealTimeImp(pthread_t thread, int priority, UInt64 period, UInt64 computation, UInt64 constraint) | |||||
{ | |||||
return JackMachThread::AcquireRealTimeImp(thread, period, computation, constraint); | |||||
} | |||||
static int DropRealTimeImp(pthread_t thread); | static int DropRealTimeImp(pthread_t thread); | ||||
}; | }; | ||||
@@ -65,6 +65,8 @@ class SERVER_EXPORT JackPosixThread : public detail::JackThreadInterface | |||||
pthread_t GetThreadID(); | pthread_t GetThreadID(); | ||||
static int AcquireRealTimeImp(pthread_t thread, int priority); | static int AcquireRealTimeImp(pthread_t thread, int priority); | ||||
static int AcquireRealTimeImp(pthread_t thread, int priority, UInt64 period, UInt64 computation, UInt64 constraint) | |||||
{ return JackPosixThread::AcquireRealTimeImp(thread, priority); } | |||||
static int DropRealTimeImp(pthread_t thread); | static int DropRealTimeImp(pthread_t thread); | ||||
static int StartImp(pthread_t* thread, int priority, int realtime, void*(*start_routine)(void*), void* arg); | static int StartImp(pthread_t* thread, int priority, int realtime, void*(*start_routine)(void*), void* arg); | ||||
static int StopImp(pthread_t thread); | static int StopImp(pthread_t thread); | ||||
@@ -30,4 +30,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
#define UnloadDriverModule(handle) dlclose((handle)) | #define UnloadDriverModule(handle) dlclose((handle)) | ||||
#define GetProc(handle, name) dlsym((handle), (name)) | #define GetProc(handle, name) dlsym((handle), (name)) | ||||
#define JACK_DEBUG (getenv("JACK_CLIENT_DEBUG") && strcmp(getenv("JACK_CLIENT_DEBUG"), "on") == 0) | |||||
#endif | #endif |
@@ -31,5 +31,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
#define ENOBUFS 55 | #define ENOBUFS 55 | ||||
#define JACK_DEBUG false | |||||
#define try_start_server 0 | |||||
#endif | #endif | ||||
@@ -64,7 +64,15 @@ class SERVER_EXPORT JackWinThread : public detail::JackThreadInterface | |||||
pthread_t GetThreadID(); | pthread_t GetThreadID(); | ||||
static int AcquireRealTimeImp(pthread_t thread, int priority); | static int AcquireRealTimeImp(pthread_t thread, int priority); | ||||
static int AcquireRealTimeImp(pthread_t thread, int priority, UInt64 period, UInt64 computation, UInt64 constraint) | |||||
{ | |||||
return JackWinThread::AcquireRealTimeImp(thread, priority); | |||||
} | |||||
static int DropRealTimeImp(pthread_t thread); | static int DropRealTimeImp(pthread_t thread); | ||||
static int StartImp(pthread_t* thread, int priority, int realtime, void*(*start_routine)(void*), void* arg) | |||||
{ | |||||
return JackWinThread::StartImp(thread, priority, realtime, (ThreadCallback) start_routine, arg); | |||||
} | |||||
static int StartImp(pthread_t* thread, int priority, int realtime, ThreadCallback start_routine, void* arg); | static int StartImp(pthread_t* thread, int priority, int realtime, ThreadCallback start_routine, void* arg); | ||||
static int StopImp(pthread_t thread); | static int StopImp(pthread_t thread); | ||||
static int KillImp(pthread_t thread); | static int KillImp(pthread_t thread); | ||||