21 #ifndef __JackClient__
22 #define __JackClient__
24 #include "JackClientInterface.h"
25 #include "JackThread.h"
26 #include "JackConstants.h"
27 #include "JackSynchro.h"
28 #include "JackPlatformPlug.h"
29 #include "JackChannel.h"
36 class JackGraphManager;
39 struct JackClientControl;
40 struct JackEngineControl;
52 JackProcessCallback fProcess;
53 JackGraphOrderCallback fGraphOrder;
54 JackXRunCallback fXrun;
55 JackShutdownCallback fShutdown;
56 JackInfoShutdownCallback fInfoShutdown;
57 JackThreadInitCallback fInit;
58 JackBufferSizeCallback fBufferSize;
59 JackSampleRateCallback fSampleRate;
60 JackClientRegistrationCallback fClientRegistration;
61 JackFreewheelCallback fFreewheel;
62 JackPortRegistrationCallback fPortRegistration;
63 JackPortConnectCallback fPortConnect;
64 JackPortRenameCallback fPortRename;
65 JackTimebaseCallback fTimebase;
66 JackSyncCallback fSync;
67 JackThreadCallback fThreadFun;
69 JackLatencyCallback fLatency;
75 void* fInfoShutdownArg;
79 void* fClientRegistrationArg;
81 void* fPortRegistrationArg;
82 void* fPortConnectArg;
94 std::list<jack_port_id_t> fPortList;
96 JackSessionReply fSessionReply;
99 void SetupDriverSync(
bool freewheel);
102 void CallSyncCallback();
103 void CallTimebaseCallback();
105 virtual int ClientNotifyImp(
int refnum,
const char* name,
int notify,
int sync,
const char* message,
int value1,
int value);
107 inline void DummyCycle();
108 inline void ExecuteThread();
109 inline bool WaitSync();
110 inline void SignalSync();
111 inline int CallProcessCallback();
114 inline jack_nframes_t CycleWaitAux();
115 inline void CycleSignalAux(
int status);
116 inline void CallSyncCallbackAux();
117 inline void CallTimebaseCallbackAux();
118 inline int ActivateAux();
119 inline void InitAux();
121 int HandleLatencyCallback(
int status);
129 virtual int Open(
const char* server_name,
const char* name,
int uuid, jack_options_t options, jack_status_t* status) = 0;
136 virtual int ClientNotify(
int refnum,
const char* name,
int notify,
int sync,
const char* message,
int value1,
int value2);
138 virtual int Activate();
139 virtual int Deactivate();
142 virtual int SetBufferSize(jack_nframes_t buffer_size);
143 virtual int SetFreeWheel(
int onoff);
144 virtual int ComputeTotalLatencies();
145 virtual void ShutDown();
146 virtual jack_native_thread_t GetThreadID();
149 virtual int PortRegister(
const char* port_name,
const char* port_type,
unsigned long flags,
unsigned long buffer_size);
150 virtual int PortUnRegister(jack_port_id_t port);
152 virtual int PortConnect(
const char* src,
const char* dst);
153 virtual int PortDisconnect(
const char* src,
const char* dst);
154 virtual int PortDisconnect(jack_port_id_t src);
156 virtual int PortIsMine(jack_port_id_t port_index);
157 virtual int PortRename(jack_port_id_t port_index,
const char* name);
160 virtual int ReleaseTimebase();
161 virtual int SetSyncCallback(JackSyncCallback sync_callback,
void* arg);
162 virtual int SetSyncTimeout(jack_time_t timeout);
163 virtual int SetTimebaseCallback(
int conditional, JackTimebaseCallback timebase_callback,
void* arg);
164 virtual void TransportLocate(jack_nframes_t frame);
166 virtual jack_nframes_t GetCurrentTransportFrame();
168 virtual void TransportStart();
169 virtual void TransportStop();
172 virtual void OnShutdown(JackShutdownCallback callback,
void *arg);
173 virtual void OnInfoShutdown(JackInfoShutdownCallback callback,
void *arg);
174 virtual int SetProcessCallback(JackProcessCallback callback,
void* arg);
175 virtual int SetXRunCallback(JackXRunCallback callback,
void* arg);
176 virtual int SetInitCallback(JackThreadInitCallback callback,
void* arg);
177 virtual int SetGraphOrderCallback(JackGraphOrderCallback callback,
void* arg);
178 virtual int SetBufferSizeCallback(JackBufferSizeCallback callback,
void* arg);
179 virtual int SetSampleRateCallback(JackBufferSizeCallback callback,
void* arg);
180 virtual int SetClientRegistrationCallback(JackClientRegistrationCallback callback,
void* arg);
181 virtual int SetFreewheelCallback(JackFreewheelCallback callback,
void* arg);
182 virtual int SetPortRegistrationCallback(JackPortRegistrationCallback callback,
void* arg);
183 virtual int SetPortConnectCallback(JackPortConnectCallback callback,
void *arg);
184 virtual int SetPortRenameCallback(JackPortRenameCallback callback,
void *arg);
186 virtual int SetLatencyCallback(JackLatencyCallback callback,
void *arg);
189 virtual char* GetInternalClientName(
int ref);
190 virtual int InternalClientHandle(
const char* client_name, jack_status_t* status);
191 virtual int InternalClientLoad(
const char* client_name, jack_options_t options, jack_status_t* status,
jack_varargs_t* va);
192 virtual void InternalClientUnload(
int ref, jack_status_t* status);
195 jack_nframes_t CycleWait();
196 void CycleSignal(
int status);
197 virtual int SetProcessThread(JackThreadCallback fun,
void *arg);
200 virtual jack_session_command_t* SessionNotify(
const char* target, jack_session_event_type_t type,
const char* path);
202 virtual char* GetUUIDForClientName(
const char* client_name);
203 virtual char* GetClientNameByUUID(
const char* uuid);
204 virtual int ReserveClientName(
const char* client_name,
const char* uuid);
205 virtual int ClientHasSessionCallback(
const char* client_name);