Browse Source

Activate now connect to FW driver and start the realtime thread only if clients are actually realtime, that is have setup any of the RT callback.

git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@2279 0c269be4-1314-0410-8aa9-9f06e86f4224
tags/1.90
sletz 17 years ago
parent
commit
7b5eafc311
29 changed files with 176 additions and 100 deletions
  1. +5
    -1
      ChangeLog
  2. +1
    -1
      common/JackChannel.h
  3. +15
    -23
      common/JackClient.cpp
  4. +2
    -2
      common/JackConstants.h
  5. +5
    -4
      common/JackEngine.cpp
  6. +1
    -1
      common/JackEngine.h
  7. +2
    -2
      common/JackInternalClientChannel.h
  8. +0
    -9
      common/JackLibClient.cpp
  9. +2
    -2
      common/JackLockedEngine.h
  10. +2
    -1
      common/JackNotification.h
  11. +6
    -3
      common/JackRequest.h
  12. +2
    -2
      common/JackSocketClientChannel.cpp
  13. +1
    -1
      common/JackSocketClientChannel.h
  14. +1
    -1
      common/JackSocketServerChannel.cpp
  15. +13
    -10
      common/JackTransportEngine.cpp
  16. +2
    -2
      macosx/JackMacEngineRPC.cpp
  17. +2
    -2
      macosx/JackMachClientChannel.cpp
  18. +1
    -1
      macosx/JackMachClientChannel.h
  19. +12
    -12
      macosx/Jackdmp.xcodeproj/project.pbxproj
  20. +2
    -2
      macosx/RPC/JackRPCClientServer.c
  21. +2
    -2
      macosx/RPC/JackRPCClientUser.c
  22. +1
    -0
      macosx/RPC/JackRPCEngine.defs
  23. +2
    -0
      macosx/RPC/JackRPCEngine.h
  24. +82
    -7
      macosx/RPC/JackRPCEngineServer.c
  25. +6
    -2
      macosx/RPC/JackRPCEngineUser.c
  26. +2
    -3
      tests/jdelay.cpp
  27. +2
    -2
      windows/JackWinNamedPipeClientChannel.cpp
  28. +1
    -1
      windows/JackWinNamedPipeClientChannel.h
  29. +1
    -1
      windows/JackWinNamedPipeServerChannel.cpp

+ 5
- 1
ChangeLog View File

@@ -20,7 +20,11 @@ Fernando Lopez-Lezcano
Jackdmp changes log
---------------------------

2008-05-13 Stephane Letz <letz@grame.fr>
2008-05-16 Stephane Letz <letz@grame.fr>

* Activate now connect to FW driver and start the realtime thread only if clients are actually realtime, that is have setup any of the RT callback.

2008-05-14 Stephane Letz <letz@grame.fr>

* Fix JackEngine::Close to only delete "loadable" clients.



+ 1
- 1
common/JackChannel.h View File

@@ -80,7 +80,7 @@ class JackClientChannelInterface
virtual void ClientClose(int refnum, int* result)
{}

virtual void ClientActivate(int refnum, int* result)
virtual void ClientActivate(int refnum, int state, int* result)
{}
virtual void ClientDeactivate(int refnum, int* result)
{}


+ 15
- 23
common/JackClient.cpp View File

@@ -35,6 +35,8 @@ using namespace std;
namespace Jack
{

#define IsRealTime() ((fProcess != NULL) | (fThreadFun != NULL) | (fSync != NULL) | (fTimebase != NULL))
JackClient::JackClient()
{}

@@ -52,7 +54,9 @@ JackClient::JackClient(JackSynchro** table)
fFreewheel = NULL;
fPortRegistration = NULL;
fPortConnect = NULL;
fTimebase = NULL;
fSync = NULL;
fThreadFun = NULL;
fProcessArg = NULL;
fGraphOrderArg = NULL;
fXrunArg = NULL;
@@ -64,7 +68,7 @@ JackClient::JackClient(JackSynchro** table)
fPortRegistrationArg = NULL;
fPortConnectArg = NULL;
fSyncArg = NULL;
fThreadFun = NULL;
fTimebaseArg = NULL;
fThreadFunArg = NULL;
}

@@ -232,25 +236,17 @@ int JackClient::ClientNotify(int refnum, const char* name, int notify, int sync,
\brief We need to start thread before activating in the server, otherwise the FW driver
connected to the client may not be activated.
*/

int JackClient::Activate()
{
jack_log("JackClient::Activate");
if (IsActive())
return 0;

/* TODO : solve WIN32 thread Kill issue
#ifdef WIN32
// Done first so that the RT thread then access an allocated synchro
if (!fSynchroTable[GetClientControl()->fRefNum]->Connect(GetClientControl()->fName)) {
jack_error("Cannot ConnectSemaphore %s client", GetClientControl()->fName);
// RT thread is started only when needed...
if (IsRealTime()) {
if (StartThread() < 0)
return -1;
}
#endif
*/

if (StartThread() < 0)
return -1;
}
/*
Insertion of client in the graph will cause a kGraphOrderCallback notification
@@ -263,7 +259,8 @@ int JackClient::Activate()
GetClientControl()->fTransportTimebase = true;

int result = -1;
fChannel->ClientActivate(GetClientControl()->fRefNum, &result);
GetClientControl()->fCallback[kRealTimeCallback] = IsRealTime();
fChannel->ClientActivate(GetClientControl()->fRefNum, IsRealTime(), &result);
return result;
}

@@ -288,15 +285,10 @@ int JackClient::Deactivate()
jack_log("JackClient::Deactivate res = %ld ", result);
// We need to wait for the new engine cycle before stopping the RT thread, but this is done by ClientDeactivate

/* TODO : solve WIN32 thread Kill issue
#ifdef WIN32
fSynchroTable[GetClientControl()->fRefNum]->Disconnect();
fThread->Stop();
#else
fThread->Kill();
#endif
*/
fThread->Kill();
// RT thread is stopped only when needed...
if (IsRealTime()) {
fThread->Kill();
}
return result;
}



+ 2
- 2
common/JackConstants.h View File

@@ -67,9 +67,9 @@ namespace Jack
#define ALL_CLIENTS -1 // for notification

#if defined(__ppc64__) || defined(__x86_64__)
#define JACK_PROTOCOL_VERSION 4
#define JACK_PROTOCOL_VERSION 5
#else
#define JACK_PROTOCOL_VERSION 3
#define JACK_PROTOCOL_VERSION 4
#endif

#define SOCKET_TIME_OUT 5 // in sec


+ 5
- 4
common/JackEngine.cpp View File

@@ -596,14 +596,15 @@ int JackEngine::ClientCloseAux(int refnum, JackClientInterface* client, bool wai
return 0;
}

int JackEngine::ClientActivate(int refnum)
int JackEngine::ClientActivate(int refnum, bool state)
{
JackClientInterface* client = fClientTable[refnum];
assert(fClientTable[refnum]);
jack_log("JackEngine::ClientActivate ref = %ld name = %s", refnum, client->GetClientControl()->fName);
fGraphManager->Activate(refnum);

if (state)
fGraphManager->Activate(refnum);
// Wait for graph state change to be effective
if (!fSignal->TimedWait(fEngineControl->fTimeOutUsecs * 10)) {
jack_error("JackEngine::ClientActivate wait error ref = %ld name = %s", refnum, client->GetClientControl()->fName);


+ 1
- 1
common/JackEngine.h View File

@@ -86,7 +86,7 @@ class JackEngine
virtual int ClientExternalClose(int refnum);
virtual int ClientInternalClose(int refnum, bool wait);

virtual int ClientActivate(int refnum);
virtual int ClientActivate(int refnum, bool state);
virtual int ClientDeactivate(int refnum);

// Internal client management


+ 2
- 2
common/JackInternalClientChannel.h View File

@@ -63,9 +63,9 @@ class JackInternalClientChannel : public JackClientChannelInterface
*result = fEngine->ClientInternalClose(refnum, true);
}

void ClientActivate(int refnum, int* result)
void ClientActivate(int refnum, int state, int* result)
{
*result = fEngine->ClientActivate(refnum);
*result = fEngine->ClientActivate(refnum, state);
}
void ClientDeactivate(int refnum, int* result)
{


+ 0
- 9
common/JackLibClient.cpp View File

@@ -107,15 +107,6 @@ int JackLibClient::Open(const char* server_name, const char* name, jack_options_

SetupDriverSync(false);

/* TODO : solve WIN32 thread Kill issue
#ifndef WIN32
// Connect shared synchro : the synchro must be usable in I/O mode when several clients live in the same process
if (!fSynchroTable[fClientControl->fRefNum]->Connect(name)) {
jack_error("Cannot ConnectSemaphore %s client", name);
goto error;
}
#endif
*/
// Connect shared synchro : the synchro must be usable in I/O mode when several clients live in the same process
if (!fSynchroTable[GetClientControl()->fRefNum]->Connect(name_res, fServerName)) {
jack_error("Cannot ConnectSemaphore %s client", name_res);


+ 2
- 2
common/JackLockedEngine.h View File

@@ -84,10 +84,10 @@ class JackLockedEngine : public JackEngine, public JackLockAble
return fEngine->ClientInternalClose(refnum, wait);
}

int ClientActivate(int refnum)
int ClientActivate(int refnum, bool state)
{
JackLock lock(this);
return fEngine->ClientActivate(refnum);
return fEngine->ClientActivate(refnum, state);
}
int ClientDeactivate(int refnum)
{


+ 2
- 1
common/JackNotification.h View File

@@ -35,7 +35,8 @@ enum NotificationType {
kPortRegistrationOffCallback = 9,
kPortConnectCallback = 10,
kPortDisconnectCallback = 11,
kDeadClient = 12,
kRealTimeCallback = 12,
kDeadClient = 13,
kMaxNotification
};



+ 6
- 3
common/JackRequest.h View File

@@ -287,21 +287,24 @@ struct JackActivateRequest : public JackRequest
{

int fRefNum;
int fState;

JackActivateRequest()
{}
JackActivateRequest(int refnum): JackRequest(JackRequest::kActivateClient), fRefNum(refnum)
JackActivateRequest(int refnum, int state): JackRequest(JackRequest::kActivateClient), fRefNum(refnum), fState(state)
{}

int Read(JackChannelTransaction* trans)
{
return trans->Read(&fRefNum, sizeof(int));
CheckRes(trans->Read(&fRefNum, sizeof(int)));
return trans->Read(&fState, sizeof(int));
}

int Write(JackChannelTransaction* trans)
{
CheckRes(JackRequest::Write(trans));
return trans->Write(&fRefNum, sizeof(int));
CheckRes(trans->Write(&fRefNum, sizeof(int)));
return trans->Write(&fState, sizeof(int));
}

};


+ 2
- 2
common/JackSocketClientChannel.cpp View File

@@ -165,9 +165,9 @@ void JackSocketClientChannel::ClientClose(int refnum, int* result)
ServerSyncCall(&req, &res, result);
}

void JackSocketClientChannel::ClientActivate(int refnum, int* result)
void JackSocketClientChannel::ClientActivate(int refnum, int state, int* result)
{
JackActivateRequest req(refnum);
JackActivateRequest req(refnum, state);
JackResult res;
ServerSyncCall(&req, &res, result);
}


+ 1
- 1
common/JackSocketClientChannel.h View File

@@ -63,7 +63,7 @@ class JackSocketClientChannel : public JackClientChannelInterface, public JackRu
void ClientOpen(const char* name, int* shared_engine, int* shared_client, int* shared_graph, int* result);
void ClientClose(int refnum, int* result);

void ClientActivate(int refnum, int* result);
void ClientActivate(int refnum, int state, int* result);
void ClientDeactivate(int refnum, int* result);

void PortRegister(int refnum, const char* name, const char* type, unsigned int flags, unsigned int buffer_size, unsigned int* port_index, int* result);


+ 1
- 1
common/JackSocketServerChannel.cpp View File

@@ -190,7 +190,7 @@ int JackSocketServerChannel::HandleRequest(int fd)
JackResult res;
jack_log("JackRequest::ActivateClient");
if (req.Read(socket) == 0)
res.fResult = fServer->GetEngine()->ClientActivate(req.fRefNum);
res.fResult = fServer->GetEngine()->ClientActivate(req.fRefNum, ref.fState);
if (res.Write(socket) < 0)
jack_error("JackRequest::ActivateClient write error ref = %d", req.fRefNum);
break;


+ 13
- 10
common/JackTransportEngine.cpp View File

@@ -101,10 +101,11 @@ void JackTransportEngine::MakeAllStartingLocating(JackClientInterface** table)
for (int i = REAL_REFNUM; i < CLIENT_NUM; i++) {
JackClientInterface* client = table[i];
if (client) {
// Inactive clients don't have their process function called at all, so they must appear as already "rolling" for the transport....
client->GetClientControl()->fTransportState = (client->GetClientControl()->fActive) ? JackTransportStarting : JackTransportRolling;
client->GetClientControl()->fTransportSync = true;
client->GetClientControl()->fTransportTimebase = true;
JackClientControl* control = client->GetClientControl();
// Inactive clients don't have their process function called at all, so they must appear as already "rolling" for the transport....
control->fTransportState = (control->fActive && control->fCallback[kRealTimeCallback]) ? JackTransportStarting : JackTransportRolling;
control->fTransportSync = true;
control->fTransportTimebase = true;
jack_log("MakeAllStartingLocating ref = %ld", i);
}
}
@@ -116,9 +117,10 @@ void JackTransportEngine::MakeAllStopping(JackClientInterface** table)
for (int i = REAL_REFNUM; i < CLIENT_NUM; i++) {
JackClientInterface* client = table[i];
if (client) {
client->GetClientControl()->fTransportState = JackTransportStopped;
client->GetClientControl()->fTransportSync = false;
client->GetClientControl()->fTransportTimebase = false;
JackClientControl* control = client->GetClientControl();
control->fTransportState = JackTransportStopped;
control->fTransportSync = false;
control->fTransportTimebase = false;
jack_log("MakeAllStopping ref = %ld", i);
}
}
@@ -130,8 +132,9 @@ void JackTransportEngine::MakeAllLocating(JackClientInterface** table)
for (int i = REAL_REFNUM; i < CLIENT_NUM; i++) {
JackClientInterface* client = table[i];
if (client) {
client->GetClientControl()->fTransportState = JackTransportStopped;
client->GetClientControl()->fTransportTimebase = true;
JackClientControl* control = client->GetClientControl();
control->fTransportState = JackTransportStopped;
control->fTransportTimebase = true;
jack_log("MakeAllLocating ref = %ld", i);
}
}
@@ -155,7 +158,7 @@ void JackTransportEngine::CycleEnd(JackClientInterface** table, jack_nframes_t f
transport_command_t cmd = fTransportCmd;
if (cmd != fPreviousCmd) {
fPreviousCmd = cmd;
jack_log("transport command: %s", (cmd == TransportCommandStart ? "START" : "STOP"));
jack_log("transport command: %s", (cmd == TransportCommandStart ? "Transport start" : "Transport stop"));
} else {
cmd = TransportCommandNone;
}


+ 2
- 2
macosx/JackMacEngineRPC.cpp View File

@@ -59,12 +59,12 @@ rpc_type server_rpc_jack_client_close(mach_port_t private_port, int refnum, int*
return KERN_SUCCESS;
}

rpc_type server_rpc_jack_client_activate(mach_port_t private_port, int refnum, int* result)
rpc_type server_rpc_jack_client_activate(mach_port_t private_port, int refnum, int state, int* result)
{
jack_log("rpc_jack_client_activate");
JackMachServerChannel* channel = JackMachServerChannel::fPortTable[private_port];
assert(channel);
*result = channel->GetEngine()->ClientActivate(refnum);
*result = channel->GetEngine()->ClientActivate(refnum, state);
return KERN_SUCCESS;
}



+ 2
- 2
macosx/JackMachClientChannel.cpp View File

@@ -152,9 +152,9 @@ void JackMachClientChannel::ClientClose(int refnum, int* result)
}
}

void JackMachClientChannel::ClientActivate(int refnum, int* result)
void JackMachClientChannel::ClientActivate(int refnum, int state, int* result)
{
kern_return_t res = rpc_jack_client_activate(fPrivatePort, refnum, result);
kern_return_t res = rpc_jack_client_activate(fPrivatePort, refnum, state, result);
if (res != KERN_SUCCESS) {
*result = -1;
jack_error("JackMachClientChannel::ClientActivate err = %s", mach_error_string(res));


+ 1
- 1
macosx/JackMachClientChannel.h View File

@@ -60,7 +60,7 @@ class JackMachClientChannel : public JackClientChannelInterface, public JackRunn
void ClientOpen(const char* name, int* shared_engine, int* shared_client, int* shared_graph, int* result);
void ClientClose(int refnum, int* result);

void ClientActivate(int refnum, int* result);
void ClientActivate(int refnum, int state, int* result);
void ClientDeactivate(int refnum, int* result);

void PortRegister(int refnum, const char* name, const char* type, unsigned int flags, unsigned int buffer_size, unsigned int* port_index, int* result);


+ 12
- 12
macosx/Jackdmp.xcodeproj/project.pbxproj View File

@@ -1000,7 +1000,7 @@
4B2C28F908DAD01E00249230 /* JackGlobals.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = JackGlobals.cpp; path = ../common/JackGlobals.cpp; sourceTree = SOURCE_ROOT; };
4B35C4250D4731D1000DE7AE /* jackdmp */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = jackdmp; sourceTree = BUILT_PRODUCTS_DIR; };
4B35C4830D4731D1000DE7AE /* Jackmp.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Jackmp.framework; sourceTree = BUILT_PRODUCTS_DIR; };
4B35C4FC0D4731D1000DE7AE /* Jackdmp.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Jackdmp.framework; sourceTree = BUILT_PRODUCTS_DIR; };
4B35C4FC0D4731D1000DE7AE /* Jackservermp.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Jackservermp.framework; sourceTree = BUILT_PRODUCTS_DIR; };
4B35C5080D4731D1000DE7AE /* Jackwrapper.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Jackwrapper.framework; sourceTree = BUILT_PRODUCTS_DIR; };
4B35C5140D4731D1000DE7AE /* jack_midiseq */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = jack_midiseq; sourceTree = BUILT_PRODUCTS_DIR; };
4B35C5200D4731D1000DE7AE /* jack_midisine */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = jack_midisine; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -1034,10 +1034,10 @@
4B4259E5076B635E00C1ECE1 /* JackMacEngineRPC.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JackMacEngineRPC.cpp; sourceTree = SOURCE_ROOT; };
4B44FAE50C7598370033A72C /* JackServerLaunch.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = JackServerLaunch.cpp; path = ../common/JackServerLaunch.cpp; sourceTree = SOURCE_ROOT; };
4B464301076CAC7700E5077C /* Jack-Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.xml; path = "Jack-Info.plist"; sourceTree = SOURCE_ROOT; };
4B51752F0D8FE69300961F37 /* jack_thread_wait */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = jack_thread_wait; sourceTree = BUILT_PRODUCTS_DIR; };
4B51752F0D8FE69300961F37 /* jack_thread_wait1 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = jack_thread_wait1; sourceTree = BUILT_PRODUCTS_DIR; };
4B56880F08B5C8620022B32D /* JackFifo.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = JackFifo.cpp; path = ../common/JackFifo.cpp; sourceTree = SOURCE_ROOT; };
4B56881008B5C8620022B32D /* JackFifo.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = JackFifo.h; path = ../common/JackFifo.h; sourceTree = SOURCE_ROOT; };
4B57F5950D72C27900B4E719 /* jack_thread_wait */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = jack_thread_wait; sourceTree = BUILT_PRODUCTS_DIR; };
4B57F5950D72C27900B4E719 /* jack_thread_wait1 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = jack_thread_wait1; sourceTree = BUILT_PRODUCTS_DIR; };
4B57F5BA0D72C2B000B4E719 /* tw1.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = tw1.c; path = "../example-clients/tw1.c"; sourceTree = SOURCE_ROOT; };
4B5A1BBB0CD1CB9E0005BF74 /* jack_midiseq */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = jack_midiseq; sourceTree = BUILT_PRODUCTS_DIR; };
4B5A1BBD0CD1CC110005BF74 /* midiseq.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = midiseq.c; path = "../example-clients/midiseq.c"; sourceTree = SOURCE_ROOT; };
@@ -1105,7 +1105,7 @@
4BA692B20CBE4C2D00EAD520 /* ipload.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = ipload.c; path = "../example-clients/ipload.c"; sourceTree = SOURCE_ROOT; };
4BA692D40CBE4C9000EAD520 /* jack_unload */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = jack_unload; sourceTree = BUILT_PRODUCTS_DIR; };
4BA692D60CBE4CC600EAD520 /* ipunload.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = ipunload.c; path = "../example-clients/ipunload.c"; sourceTree = SOURCE_ROOT; };
4BA7FEC30D8E76270017FF73 /* jack_lsp */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = jack_lsp; sourceTree = BUILT_PRODUCTS_DIR; };
4BA7FEC30D8E76270017FF73 /* jack_server_control */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = jack_server_control; sourceTree = BUILT_PRODUCTS_DIR; };
4BA7FEC80D8E76650017FF73 /* control.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = control.c; path = "../example-clients/control.c"; sourceTree = SOURCE_ROOT; };
4BAB95B60B9E20B800A0C723 /* JackPortType.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = JackPortType.cpp; path = ../common/JackPortType.cpp; sourceTree = SOURCE_ROOT; };
4BAB95B70B9E20B800A0C723 /* JackPortType.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = JackPortType.h; path = ../common/JackPortType.h; sourceTree = SOURCE_ROOT; };
@@ -1723,7 +1723,7 @@
4B5A1BDA0CD1CCE10005BF74 /* jack_midisine */,
4B35C4250D4731D1000DE7AE /* jackdmp */,
4B35C4830D4731D1000DE7AE /* Jackmp.framework */,
4B35C4FC0D4731D1000DE7AE /* Jackdmp.framework */,
4B35C4FC0D4731D1000DE7AE /* Jackservermp.framework */,
4B35C5080D4731D1000DE7AE /* Jackwrapper.framework */,
4B35C5140D4731D1000DE7AE /* jack_midiseq */,
4B35C5200D4731D1000DE7AE /* jack_midisine */,
@@ -1752,9 +1752,9 @@
4B0A292D0D52108E002EFF74 /* jack_thread_wait */,
4B0A296D0D5231DC002EFF74 /* jack_mp_thread_wait */,
4B0A2A650D524AB2002EFF74 /* jack_mp_thread_wait */,
4B57F5950D72C27900B4E719 /* jack_thread_wait */,
4BA7FEC30D8E76270017FF73 /* jack_lsp */,
4B51752F0D8FE69300961F37 /* jack_thread_wait */,
4B57F5950D72C27900B4E719 /* jack_thread_wait1 */,
4BA7FEC30D8E76270017FF73 /* jack_server_control */,
4B51752F0D8FE69300961F37 /* jack_thread_wait1 */,
);
name = Products;
sourceTree = "<group>";
@@ -2875,7 +2875,7 @@
);
name = "Jackservermp.framework 64 bits";
productName = Jack;
productReference = 4B35C4FC0D4731D1000DE7AE /* Jackdmp.framework */;
productReference = 4B35C4FC0D4731D1000DE7AE /* Jackservermp.framework */;
productType = "com.apple.product-type.framework";
};
4B35C4FE0D4731D1000DE7AE /* Jackwrapper.framework 64 bits */ = {
@@ -3342,7 +3342,7 @@
name = "jack_thread_wait1 64 bits";
productInstallPath = /usr/local/bin;
productName = testSem;
productReference = 4B51752F0D8FE69300961F37 /* jack_thread_wait */;
productReference = 4B51752F0D8FE69300961F37 /* jack_thread_wait1 */;
productType = "com.apple.product-type.tool";
};
4B57F58B0D72C27900B4E719 /* jack_thread_wait1 */ = {
@@ -3361,7 +3361,7 @@
name = jack_thread_wait1;
productInstallPath = /usr/local/bin;
productName = testSem;
productReference = 4B57F5950D72C27900B4E719 /* jack_thread_wait */;
productReference = 4B57F5950D72C27900B4E719 /* jack_thread_wait1 */;
productType = "com.apple.product-type.tool";
};
4B5A1BB10CD1CB9E0005BF74 /* jack_midiseq Universal */ = {
@@ -3793,7 +3793,7 @@
name = "jack_server_control Universal";
productInstallPath = /usr/local/bin;
productName = jack_lsp;
productReference = 4BA7FEC30D8E76270017FF73 /* jack_lsp */;
productReference = 4BA7FEC30D8E76270017FF73 /* jack_server_control */;
productType = "com.apple.product-type.tool";
};
4BD623ED0CBCF0F000DE782F /* inprocess */ = {


+ 2
- 2
macosx/RPC/JackRPCClientServer.c View File

@@ -1,7 +1,7 @@
/*
* IDENTIFICATION:
* stub generated Mon Jan 28 15:04:07 2008
* with a MiG generated Sun Sep 23 15:44:06 PDT 2007 by root@hoosier.apple.com
* stub generated Fri May 16 09:21:55 2008
* with a MiG generated Tue Feb 19 02:01:43 PST 2008 by root@b75.local
* OPTIONS:
*/



+ 2
- 2
macosx/RPC/JackRPCClientUser.c View File

@@ -1,7 +1,7 @@
/*
* IDENTIFICATION:
* stub generated Mon Jan 28 15:04:07 2008
* with a MiG generated Sun Sep 23 15:44:06 PDT 2007 by root@hoosier.apple.com
* stub generated Fri May 16 09:21:55 2008
* with a MiG generated Tue Feb 19 02:01:43 PST 2008 by root@b75.local
* OPTIONS:
*/
#define __MIG_check__Reply__JackRPCClient_subsystem__ 1


+ 1
- 0
macosx/RPC/JackRPCEngine.defs View File

@@ -57,6 +57,7 @@ routine rpc_jack_client_close(
routine rpc_jack_client_activate(
server_port : mach_port_t;
refnum : int;
state : int;
out result : int);

routine rpc_jack_client_deactivate(


+ 2
- 0
macosx/RPC/JackRPCEngine.h View File

@@ -100,6 +100,7 @@ kern_return_t rpc_jack_client_activate
(
mach_port_t server_port,
int refnum,
int state,
int *result
);

@@ -404,6 +405,7 @@ __END_DECLS
mach_msg_header_t Head;
NDR_record_t NDR;
int refnum;
int state;
} __Request__rpc_jack_client_activate_t;
#ifdef __MigPackStructs
#pragma pack()


+ 82
- 7
macosx/RPC/JackRPCEngineServer.c View File

@@ -1,7 +1,7 @@
/*
* IDENTIFICATION:
* stub generated Mon Jan 28 15:04:07 2008
* with a MiG generated Sun Sep 23 15:44:06 PDT 2007 by root@hoosier.apple.com
* stub generated Fri May 16 09:21:56 2008
* with a MiG generated Tue Feb 19 02:01:43 PST 2008 by root@b75.local
* OPTIONS:
*/

@@ -149,6 +149,7 @@
mach_msg_header_t Head;
NDR_record_t NDR;
int refnum;
int state;
} __Request__rpc_jack_client_activate_t;
#ifdef __MigPackStructs
#pragma pack()
@@ -1463,6 +1464,26 @@ mig_internal novalue _Xrpc_jack_client_close
#endif /* defined(__NDR_convert__*__defined) */
#endif /* __NDR_convert__int_rep__Request__rpc_jack_client_activate_t__refnum__defined */

#ifndef __NDR_convert__int_rep__Request__rpc_jack_client_activate_t__state__defined
#if defined(__NDR_convert__int_rep__JackRPCEngine__int__defined)
#define __NDR_convert__int_rep__Request__rpc_jack_client_activate_t__state__defined
#define __NDR_convert__int_rep__Request__rpc_jack_client_activate_t__state(a, f) \
__NDR_convert__int_rep__JackRPCEngine__int((int *)(a), f)
#elif defined(__NDR_convert__int_rep__int__defined)
#define __NDR_convert__int_rep__Request__rpc_jack_client_activate_t__state__defined
#define __NDR_convert__int_rep__Request__rpc_jack_client_activate_t__state(a, f) \
__NDR_convert__int_rep__int((int *)(a), f)
#elif defined(__NDR_convert__int_rep__JackRPCEngine__int32_t__defined)
#define __NDR_convert__int_rep__Request__rpc_jack_client_activate_t__state__defined
#define __NDR_convert__int_rep__Request__rpc_jack_client_activate_t__state(a, f) \
__NDR_convert__int_rep__JackRPCEngine__int32_t((int32_t *)(a), f)
#elif defined(__NDR_convert__int_rep__int32_t__defined)
#define __NDR_convert__int_rep__Request__rpc_jack_client_activate_t__state__defined
#define __NDR_convert__int_rep__Request__rpc_jack_client_activate_t__state(a, f) \
__NDR_convert__int_rep__int32_t((int32_t *)(a), f)
#endif /* defined(__NDR_convert__*__defined) */
#endif /* __NDR_convert__int_rep__Request__rpc_jack_client_activate_t__state__defined */

#ifndef __NDR_convert__char_rep__Request__rpc_jack_client_activate_t__refnum__defined
#if defined(__NDR_convert__char_rep__JackRPCEngine__int__defined)
#define __NDR_convert__char_rep__Request__rpc_jack_client_activate_t__refnum__defined
@@ -1483,6 +1504,26 @@ mig_internal novalue _Xrpc_jack_client_close
#endif /* defined(__NDR_convert__*__defined) */
#endif /* __NDR_convert__char_rep__Request__rpc_jack_client_activate_t__refnum__defined */

#ifndef __NDR_convert__char_rep__Request__rpc_jack_client_activate_t__state__defined
#if defined(__NDR_convert__char_rep__JackRPCEngine__int__defined)
#define __NDR_convert__char_rep__Request__rpc_jack_client_activate_t__state__defined
#define __NDR_convert__char_rep__Request__rpc_jack_client_activate_t__state(a, f) \
__NDR_convert__char_rep__JackRPCEngine__int((int *)(a), f)
#elif defined(__NDR_convert__char_rep__int__defined)
#define __NDR_convert__char_rep__Request__rpc_jack_client_activate_t__state__defined
#define __NDR_convert__char_rep__Request__rpc_jack_client_activate_t__state(a, f) \
__NDR_convert__char_rep__int((int *)(a), f)
#elif defined(__NDR_convert__char_rep__JackRPCEngine__int32_t__defined)
#define __NDR_convert__char_rep__Request__rpc_jack_client_activate_t__state__defined
#define __NDR_convert__char_rep__Request__rpc_jack_client_activate_t__state(a, f) \
__NDR_convert__char_rep__JackRPCEngine__int32_t((int32_t *)(a), f)
#elif defined(__NDR_convert__char_rep__int32_t__defined)
#define __NDR_convert__char_rep__Request__rpc_jack_client_activate_t__state__defined
#define __NDR_convert__char_rep__Request__rpc_jack_client_activate_t__state(a, f) \
__NDR_convert__char_rep__int32_t((int32_t *)(a), f)
#endif /* defined(__NDR_convert__*__defined) */
#endif /* __NDR_convert__char_rep__Request__rpc_jack_client_activate_t__state__defined */

#ifndef __NDR_convert__float_rep__Request__rpc_jack_client_activate_t__refnum__defined
#if defined(__NDR_convert__float_rep__JackRPCEngine__int__defined)
#define __NDR_convert__float_rep__Request__rpc_jack_client_activate_t__refnum__defined
@@ -1503,6 +1544,26 @@ mig_internal novalue _Xrpc_jack_client_close
#endif /* defined(__NDR_convert__*__defined) */
#endif /* __NDR_convert__float_rep__Request__rpc_jack_client_activate_t__refnum__defined */

#ifndef __NDR_convert__float_rep__Request__rpc_jack_client_activate_t__state__defined
#if defined(__NDR_convert__float_rep__JackRPCEngine__int__defined)
#define __NDR_convert__float_rep__Request__rpc_jack_client_activate_t__state__defined
#define __NDR_convert__float_rep__Request__rpc_jack_client_activate_t__state(a, f) \
__NDR_convert__float_rep__JackRPCEngine__int((int *)(a), f)
#elif defined(__NDR_convert__float_rep__int__defined)
#define __NDR_convert__float_rep__Request__rpc_jack_client_activate_t__state__defined
#define __NDR_convert__float_rep__Request__rpc_jack_client_activate_t__state(a, f) \
__NDR_convert__float_rep__int((int *)(a), f)
#elif defined(__NDR_convert__float_rep__JackRPCEngine__int32_t__defined)
#define __NDR_convert__float_rep__Request__rpc_jack_client_activate_t__state__defined
#define __NDR_convert__float_rep__Request__rpc_jack_client_activate_t__state(a, f) \
__NDR_convert__float_rep__JackRPCEngine__int32_t((int32_t *)(a), f)
#elif defined(__NDR_convert__float_rep__int32_t__defined)
#define __NDR_convert__float_rep__Request__rpc_jack_client_activate_t__state__defined
#define __NDR_convert__float_rep__Request__rpc_jack_client_activate_t__state(a, f) \
__NDR_convert__float_rep__int32_t((int32_t *)(a), f)
#endif /* defined(__NDR_convert__*__defined) */
#endif /* __NDR_convert__float_rep__Request__rpc_jack_client_activate_t__state__defined */


mig_internal kern_return_t __MIG_check__Request__rpc_jack_client_activate_t(__attribute__((__unused__)) __Request__rpc_jack_client_activate_t *In0P)
{
@@ -1514,27 +1575,39 @@ mig_internal kern_return_t __MIG_check__Request__rpc_jack_client_activate_t(__at
return MIG_BAD_ARGUMENTS;
#endif /* __MigTypeCheck */

#if defined(__NDR_convert__int_rep__Request__rpc_jack_client_activate_t__refnum__defined)
#if defined(__NDR_convert__int_rep__Request__rpc_jack_client_activate_t__refnum__defined) || \
defined(__NDR_convert__int_rep__Request__rpc_jack_client_activate_t__state__defined)
if (In0P->NDR.int_rep != NDR_record.int_rep) {
#if defined(__NDR_convert__int_rep__Request__rpc_jack_client_activate_t__refnum__defined)
__NDR_convert__int_rep__Request__rpc_jack_client_activate_t__refnum(&In0P->refnum, In0P->NDR.int_rep);
#endif /* __NDR_convert__int_rep__Request__rpc_jack_client_activate_t__refnum__defined */
#if defined(__NDR_convert__int_rep__Request__rpc_jack_client_activate_t__state__defined)
__NDR_convert__int_rep__Request__rpc_jack_client_activate_t__state(&In0P->state, In0P->NDR.int_rep);
#endif /* __NDR_convert__int_rep__Request__rpc_jack_client_activate_t__state__defined */
}
#endif /* defined(__NDR_convert__int_rep...) */

#if defined(__NDR_convert__char_rep__Request__rpc_jack_client_activate_t__refnum__defined)
#if defined(__NDR_convert__char_rep__Request__rpc_jack_client_activate_t__refnum__defined) || \
defined(__NDR_convert__char_rep__Request__rpc_jack_client_activate_t__state__defined)
if (In0P->NDR.char_rep != NDR_record.char_rep) {
#if defined(__NDR_convert__char_rep__Request__rpc_jack_client_activate_t__refnum__defined)
__NDR_convert__char_rep__Request__rpc_jack_client_activate_t__refnum(&In0P->refnum, In0P->NDR.char_rep);
#endif /* __NDR_convert__char_rep__Request__rpc_jack_client_activate_t__refnum__defined */
#if defined(__NDR_convert__char_rep__Request__rpc_jack_client_activate_t__state__defined)
__NDR_convert__char_rep__Request__rpc_jack_client_activate_t__state(&In0P->state, In0P->NDR.char_rep);
#endif /* __NDR_convert__char_rep__Request__rpc_jack_client_activate_t__state__defined */
}
#endif /* defined(__NDR_convert__char_rep...) */

#if defined(__NDR_convert__float_rep__Request__rpc_jack_client_activate_t__refnum__defined)
#if defined(__NDR_convert__float_rep__Request__rpc_jack_client_activate_t__refnum__defined) || \
defined(__NDR_convert__float_rep__Request__rpc_jack_client_activate_t__state__defined)
if (In0P->NDR.float_rep != NDR_record.float_rep) {
#if defined(__NDR_convert__float_rep__Request__rpc_jack_client_activate_t__refnum__defined)
__NDR_convert__float_rep__Request__rpc_jack_client_activate_t__refnum(&In0P->refnum, In0P->NDR.float_rep);
#endif /* __NDR_convert__float_rep__Request__rpc_jack_client_activate_t__refnum__defined */
#if defined(__NDR_convert__float_rep__Request__rpc_jack_client_activate_t__state__defined)
__NDR_convert__float_rep__Request__rpc_jack_client_activate_t__state(&In0P->state, In0P->NDR.float_rep);
#endif /* __NDR_convert__float_rep__Request__rpc_jack_client_activate_t__state__defined */
}
#endif /* defined(__NDR_convert__float_rep...) */

@@ -1555,6 +1628,7 @@ kern_return_t server_rpc_jack_client_activate
(
mach_port_t server_port,
int refnum,
int state,
int *result
);

@@ -1570,6 +1644,7 @@ mig_internal novalue _Xrpc_jack_client_activate
mach_msg_header_t Head;
NDR_record_t NDR;
int refnum;
int state;
mach_msg_trailer_t trailer;
} Request;
#ifdef __MigPackStructs
@@ -1601,7 +1676,7 @@ mig_internal novalue _Xrpc_jack_client_activate
{ MIG_RETURN_ERROR(OutP, check_result); }
#endif /* defined(__MIG_check__Request__rpc_jack_client_activate_t__defined) */

OutP->RetCode = server_rpc_jack_client_activate(In0P->Head.msgh_request_port, In0P->refnum, &OutP->result);
OutP->RetCode = server_rpc_jack_client_activate(In0P->Head.msgh_request_port, In0P->refnum, In0P->state, &OutP->result);
if (OutP->RetCode != KERN_SUCCESS) {
MIG_RETURN_ERROR(OutP, OutP->RetCode);
}
@@ -6129,7 +6204,7 @@ const struct server_JackRPCEngine_subsystem {
{ (mig_impl_routine_t) 0,
(mig_stub_routine_t) _Xrpc_jack_client_close, 3, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_client_close_t)},
{ (mig_impl_routine_t) 0,
(mig_stub_routine_t) _Xrpc_jack_client_activate, 3, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_client_activate_t)},
(mig_stub_routine_t) _Xrpc_jack_client_activate, 4, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_client_activate_t)},
{ (mig_impl_routine_t) 0,
(mig_stub_routine_t) _Xrpc_jack_client_deactivate, 3, 0, (routine_arg_descriptor_t)0, (mach_msg_size_t)sizeof(__Reply__rpc_jack_client_deactivate_t)},
{ (mig_impl_routine_t) 0,


+ 6
- 2
macosx/RPC/JackRPCEngineUser.c View File

@@ -1,7 +1,7 @@
/*
* IDENTIFICATION:
* stub generated Mon Jan 28 15:04:07 2008
* with a MiG generated Sun Sep 23 15:44:06 PDT 2007 by root@hoosier.apple.com
* stub generated Fri May 16 09:21:56 2008
* with a MiG generated Tue Feb 19 02:01:43 PST 2008 by root@b75.local
* OPTIONS:
*/
#define __MIG_check__Reply__JackRPCEngine_subsystem__ 1
@@ -1425,6 +1425,7 @@ mig_external kern_return_t rpc_jack_client_activate
(
mach_port_t server_port,
int refnum,
int state,
int *result
)
{
@@ -1436,6 +1437,7 @@ mig_external kern_return_t rpc_jack_client_activate
mach_msg_header_t Head;
NDR_record_t NDR;
int refnum;
int state;
} Request;
#ifdef __MigPackStructs
#pragma pack()
@@ -1495,6 +1497,8 @@ mig_external kern_return_t rpc_jack_client_activate

InP->refnum = refnum;

InP->state = state;

InP->Head.msgh_bits =
MACH_MSGH_BITS(19, MACH_MSG_TYPE_MAKE_SEND_ONCE);
/* msgh_size passed as argument */


+ 2
- 3
tests/jdelay.cpp View File

@@ -22,7 +22,7 @@

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <math.h>
#include <jack/jack.h>
#ifdef WIN32
#define M_PI 3.141562653
@@ -181,8 +181,7 @@ static int jack_callback (jack_nframes_t nframes, void *arg)

int main (int ac, char *av [])
{
int i, k;
const char** ports;
const char** ports;

if ((jack_handle = jack_client_new ("jdelay")) == 0)
{


+ 2
- 2
windows/JackWinNamedPipeClientChannel.cpp View File

@@ -168,9 +168,9 @@ void JackWinNamedPipeClientChannel::ClientClose(int refnum, int* result)
ServerSyncCall(&req, &res, result);
}

void JackWinNamedPipeClientChannel::ClientActivate(int refnum, int* result)
void JackWinNamedPipeClientChannel::ClientActivate(int refnum, int state, int* result)
{
JackActivateRequest req(refnum);
JackActivateRequest req(refnum, state);
JackResult res;
ServerSyncCall(&req, &res, result);
}


+ 1
- 1
windows/JackWinNamedPipeClientChannel.h View File

@@ -62,7 +62,7 @@ class JackWinNamedPipeClientChannel : public JackClientChannelInterface, public
void ClientOpen(const char* name, int* shared_engine, int* shared_client, int* shared_graph, int* result);
void ClientClose(int refnum, int* result);

void ClientActivate(int refnum, int* result);
void ClientActivate(int refnum, int state, int* result);
void ClientDeactivate(int refnum, int* result);

void PortRegister(int refnum, const char* name, const char* type, unsigned int flags, unsigned int buffer_size, unsigned int* port_index, int* result);


+ 1
- 1
windows/JackWinNamedPipeServerChannel.cpp View File

@@ -144,7 +144,7 @@ int JackClientPipeThread::HandleRequest()
JackResult res;
jack_log("JackRequest::ActivateClient");
if (req.Read(fPipe) == 0)
res.fResult = fServer->GetEngine()->ClientActivate(req.fRefNum);
res.fResult = fServer->GetEngine()->ClientActivate(req.fRefNum, req.fState);
res.Write(fPipe);
break;
}


Loading…
Cancel
Save