Browse Source

Add call to the init callback (set up using the jack_set_thread_init_callback API) in Real-Time and Notification threads. Define a new 'kActivateClient' notification.

git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@1327 0c269be4-1314-0410-8aa9-9f06e86f4224
tags/0.61
sletz 18 years ago
parent
commit
cb7f1f35d5
10 changed files with 38 additions and 20 deletions
  1. +4
    -0
      ChangeLog
  2. +10
    -9
      common/JackChannel.h
  3. +9
    -4
      common/JackClient.cpp
  4. +6
    -0
      common/JackEngine.cpp
  5. +1
    -0
      common/JackEngine.h
  6. +1
    -1
      common/JackLibClient.cpp
  7. +1
    -1
      common/JackSocketClientChannel.cpp
  8. +2
    -2
      macosx/JackMachClientChannel.cpp
  9. +3
    -2
      macosx/JackMachClientChannel.h
  10. +1
    -1
      windows/JackWinNamedPipeClientChannel.cpp

+ 4
- 0
ChangeLog View File

@@ -2,6 +2,10 @@
Jackdmp changes log
---------------------------

2007-01-04 Stephane Letz <letz@grame.fr>
* Add call to the init callback (set up using the jack_set_thread_init_callback API) in Real-Time and Notification threads. Define a new 'kActivateClient' notification.

2006-12-23 Stephane Letz <letz@grame.fr>
* shared_ports renamed to shared_graph.


+ 10
- 9
common/JackChannel.h View File

@@ -138,15 +138,16 @@ class JackNotifyChannelInterface
typedef enum {
kAddClient = 0,
kRemoveClient = 1,
kXRunCallback = 2,
kGraphOrderCallback = 3,
kBufferSizeCallback = 4,
kStartFreewheel = 5,
kStopFreewheel = 6,
kPortRegistrationOn = 7,
kPortRegistrationOff = 8,
kZombifyClient = 9,
kDeadClient = 10
kActivateClient = 2,
kXRunCallback = 3,
kGraphOrderCallback = 4,
kBufferSizeCallback = 5,
kStartFreewheel = 6,
kStopFreewheel = 7,
kPortRegistrationOn = 8,
kPortRegistrationOff = 9,
kZombifyClient = 10,
kDeadClient = 11
} NotificationType;

};


+ 9
- 4
common/JackClient.cpp View File

@@ -117,7 +117,7 @@ void JackClient::SetupDriverSync(bool freewheel)

int JackClient::ClientNotifyImp(int refnum, const char* name, int notify, int sync, int value)
{
return 0;
return 0;
}

int JackClient::ClientNotify(int refnum, const char* name, int notify, int sync, int value)
@@ -131,7 +131,12 @@ int JackClient::ClientNotify(int refnum, const char* name, int notify, int sync,
case JackNotifyChannelInterface::kRemoveClient:
res = ClientNotifyImp(refnum, name, notify, sync, value);
break;
}
case JackNotifyChannelInterface::kActivateClient:
JackLog("JackClient::kActivateClient name = %s ref = %ld \n", name, refnum);
Init();
break;
}

/*
The current semantic is that notifications can only be received when the client has been activated,
@@ -191,7 +196,7 @@ int JackClient::ClientNotify(int refnum, const char* name, int notify, int sync,
JackLog("JackClient::kZombifyClient name = %s ref = %ld \n", name, refnum);
ShutDown();
break;
}
}
}

return res;
@@ -279,7 +284,7 @@ bool JackClient::Init()
{
if (fInit) {
JackLog("JackClient::Init calling client thread init callback\n");
fInit(fInitArg);
fInit(fInitArg);
}
return true;
}


+ 6
- 0
common/JackEngine.cpp View File

@@ -323,6 +323,11 @@ void JackEngine::NotifyPortRegistation(jack_port_id_t port_index, bool onoff)
NotifyClients((onoff ? JackNotifyChannelInterface::kPortRegistrationOn : JackNotifyChannelInterface::kPortRegistrationOff), false, port_index);
}

void JackEngine::NotifyActivate(int refnum)
{
NotifyClient(refnum, JackNotifyChannelInterface::kActivateClient, false, 0);
}

//-------------------
// Client management
//-------------------
@@ -497,6 +502,7 @@ int JackEngine::ClientActivate(int refnum)
JackLog("JackEngine::ClientActivate wait error ref = %ld name = %s\n", refnum, client->GetClientControl()->fName);
return -1;
} else {
NotifyActivate(refnum);
return 0;
}
}


+ 1
- 0
common/JackEngine.h View File

@@ -109,6 +109,7 @@ class JackEngine
void NotifyBufferSize(jack_nframes_t nframes);
void NotifyFreewheel(bool onoff);
void NotifyPortRegistation(jack_port_id_t port_index, bool onoff);
void NotifyActivate(int refnum);

void PrintState();
};


+ 1
- 1
common/JackLibClient.cpp View File

@@ -143,7 +143,7 @@ int JackLibClient::ClientNotifyImp(int refnum, const char* name, int notify, int
if (strcmp(GetClientControl()->fName, name) != 0)
res = fSynchroTable[refnum]->Disconnect() ? 0 : -1;
break;
}
}

return res;
}


+ 1
- 1
common/JackSocketClientChannel.cpp View File

@@ -226,7 +226,7 @@ bool JackSocketClientChannel::Init()
jack_error("JackSocketClientChannel: cannot establish notication socket");
return false;
} else {
return true;
return true;
}
}



+ 2
- 2
macosx/JackMachClientChannel.cpp View File

@@ -41,7 +41,7 @@ JackMachClientChannel::~JackMachClientChannel()

// Server <===> client

int JackMachClientChannel::Open(const char* name, JackClient* obj)
int JackMachClientChannel::Open(const char* name, JackClient* client)
{
JackLog("JackMachClientChannel::Open name = %s\n", name);

@@ -60,7 +60,7 @@ int JackMachClientChannel::Open(const char* name, JackClient* obj)
return -1;
}

JackLibGlobals::fGlobals->fClientTable[fClientPort.GetPort()] = obj;
JackLibGlobals::fGlobals->fClientTable[fClientPort.GetPort()] = client;
return 0;
}



+ 3
- 2
macosx/JackMachClientChannel.h View File

@@ -48,7 +48,7 @@ class JackMachClientChannel : public JackClientChannelInterface, public JackRunn
JackMachClientChannel();
virtual ~JackMachClientChannel();

int Open(const char* name, JackClient* obj);
int Open(const char* name, JackClient* client);
void Close();

int Start();
@@ -75,7 +75,8 @@ class JackMachClientChannel : public JackClientChannelInterface, public JackRunn
void ReleaseTimebase(int refnum, int* result);
void SetTimebaseCallback(int refnum, int conditional, int* result);

bool Execute();
// JackRunnableInterface interface
bool Execute();
};




+ 1
- 1
windows/JackWinNamedPipeClientChannel.cpp View File

@@ -222,7 +222,7 @@ bool JackWinNamedPipeClientChannel::Init()
jack_error("JackWinNamedPipeClientChannel: cannot establish notification pipe");
return false;
} else {
return true;
return true;
}
}



Loading…
Cancel
Save