20 #ifndef __JackLibGlobals__ 21 #define __JackLibGlobals__ 23 #include "JackShmMem.h" 24 #include "JackEngineControl.h" 25 #include "JackGlobals.h" 26 #include "JackPlatformPlug.h" 27 #include "JackGraphManager.h" 28 #include "JackMessageBuffer.h" 30 #include "JackClient.h" 31 #include "JackError.h" 37 #include <sys/types.h> 38 typedef _sigset_t sigset_t;
40 typedef HANDLE sigset_t;
60 static int fClientCount;
66 if (!JackMessageBuffer::Create()) {
77 sigemptyset(&signals);
78 sigaddset(&signals, SIGPIPE);
86 for (
int i = 0; i < CLIENT_NUM; i++) {
89 JackMessageBuffer::Destroy();
101 if (!JackGlobals::fServerRunning && fClientCount > 0) {
104 jack_error(
"Jack server was closed but clients are still allocated, cleanup...");
105 for (
int i = 0; i < CLIENT_NUM; i++) {
106 JackClient* client = JackGlobals::fClientTable[i];
120 if (fClientCount++ == 0 && !fGlobals) {
121 jack_log(
"JackLibGlobals Init %x", fGlobals);
123 fGlobals =
new JackLibGlobals();
127 static void Destroy()
129 if (--fClientCount == 0 && fGlobals) {
130 jack_log(
"JackLibGlobals Destroy %x", fGlobals);
Inter process synchronization using POSIX semaphore.
SERVER_EXPORT void jack_error(const char *fmt,...)
Global library static structure: singleton kind of pattern.
Pointer on shared memory segment in the client side.
JackShmReadWritePtr< JackEngineControl > fEngineControl
SERVER_EXPORT void jack_log(const char *fmt,...)
JackSynchro fSynchroTable[CLIENT_NUM]