1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3
<title>JACK-AUDIO-CONNECTION-KIT: Client Callbacks</title>
4
<link href="doxygen.css" rel="stylesheet" type="text/css">
5
<link href="tabs.css" rel="stylesheet" type="text/css">
7
<!-- Generated by Doxygen 1.5.6 -->
9
<h1>Client Callbacks</h1><table border="0" cellpadding="0" cellspacing="0">
11
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
12
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Setting.html#gbad6ea38ac9d8e5ff4231a083604fff9">jack_set_thread_init_callback</a> (<a class="el" href="types_8h.html#96cf103940d2ee71b141d4b9d0c116bf">jack_client_t</a> *<a class="el" href="simple__client_8c.html#fed7053cd7bdd1cce33dec7213f340ea">client</a>, <a class="el" href="types_8h.html#7c4428bf3b2caf8bb0b92314acaa1307">JackThreadInitCallback</a> thread_init_callback, void *arg)</td></tr>
14
<tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Setting.html#g76f99f987700b33cd3c28b3cb79f6bf5">jack_on_shutdown</a> (<a class="el" href="types_8h.html#96cf103940d2ee71b141d4b9d0c116bf">jack_client_t</a> *<a class="el" href="simple__client_8c.html#fed7053cd7bdd1cce33dec7213f340ea">client</a>, void(*function)(void *arg), void *arg)</td></tr>
16
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Setting.html#g62351a5803421b6c21b9ffb9124801ef">jack_set_process_callback</a> (<a class="el" href="types_8h.html#96cf103940d2ee71b141d4b9d0c116bf">jack_client_t</a> *<a class="el" href="simple__client_8c.html#fed7053cd7bdd1cce33dec7213f340ea">client</a>, <a class="el" href="types_8h.html#4923142208a8e7dacf00ca7a10681d2b">JackProcessCallback</a> process_callback, void *arg)</td></tr>
18
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Setting.html#gc8e87f2c4054afc41c98c8f6a2460859">jack_set_freewheel_callback</a> (<a class="el" href="types_8h.html#96cf103940d2ee71b141d4b9d0c116bf">jack_client_t</a> *<a class="el" href="simple__client_8c.html#fed7053cd7bdd1cce33dec7213f340ea">client</a>, <a class="el" href="types_8h.html#c7b7d36a121a4828002b2c5a8ddefcd6">JackFreewheelCallback</a> freewheel_callback, void *arg)</td></tr>
20
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Setting.html#g664b5c6516c05878fdcd000af149fad9">jack_set_buffer_size_callback</a> (<a class="el" href="types_8h.html#96cf103940d2ee71b141d4b9d0c116bf">jack_client_t</a> *<a class="el" href="simple__client_8c.html#fed7053cd7bdd1cce33dec7213f340ea">client</a>, <a class="el" href="types_8h.html#0261190ceecb5da2c2f57a95407f3207">JackBufferSizeCallback</a> bufsize_callback, void *arg)</td></tr>
22
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Setting.html#gfb44f979b13f2dc1fbf2ba7b52882d65">jack_set_sample_rate_callback</a> (<a class="el" href="types_8h.html#96cf103940d2ee71b141d4b9d0c116bf">jack_client_t</a> *<a class="el" href="simple__client_8c.html#fed7053cd7bdd1cce33dec7213f340ea">client</a>, <a class="el" href="types_8h.html#b993af9e0b5fe4f9b9645c092abcec35">JackSampleRateCallback</a> srate_callback, void *arg)</td></tr>
24
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Setting.html#gdbabe066f85692eb50546cbf2bd5c209">jack_set_client_registration_callback</a> (<a class="el" href="types_8h.html#96cf103940d2ee71b141d4b9d0c116bf">jack_client_t</a> *, <a class="el" href="types_8h.html#0ae385908cac1f5dffbdf25c377237f4">JackClientRegistrationCallback</a> registration_callback, void *arg)</td></tr>
26
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Setting.html#g36c72f648c7adb7a1698564cb65c4dd9">jack_set_port_registration_callback</a> (<a class="el" href="types_8h.html#96cf103940d2ee71b141d4b9d0c116bf">jack_client_t</a> *, <a class="el" href="types_8h.html#be0df275316020d3607e0cde8e1161d3">JackPortRegistrationCallback</a> registration_callback, void *arg)</td></tr>
28
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Setting.html#g9f1de5c519d43a5ec60a373d8953ad1f">jack_set_port_connect_callback</a> (<a class="el" href="types_8h.html#96cf103940d2ee71b141d4b9d0c116bf">jack_client_t</a> *, <a class="el" href="types_8h.html#a5218343bca6daa13a99c30ea39ac96c">JackPortConnectCallback</a> connect_callback, void *arg)</td></tr>
30
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Setting.html#g50f1f3a79e50cf04016b2ec57be60f0b">jack_set_graph_order_callback</a> (<a class="el" href="types_8h.html#96cf103940d2ee71b141d4b9d0c116bf">jack_client_t</a> *, <a class="el" href="types_8h.html#8a656ca8ccb88cb25255e1ae85e834c7">JackGraphOrderCallback</a> graph_callback, void *)</td></tr>
32
<tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__Setting.html#g185c6859d72bb56452b72d1dcd8924f7">jack_set_xrun_callback</a> (<a class="el" href="types_8h.html#96cf103940d2ee71b141d4b9d0c116bf">jack_client_t</a> *, <a class="el" href="types_8h.html#7955ec486286fec4e2a71243bb66370e">JackXRunCallback</a> xrun_callback, void *arg)</td></tr>
35
<hr><h2>Function Documentation</h2>
36
<a class="anchor" name="g76f99f987700b33cd3c28b3cb79f6bf5"></a><!-- doxytag: member="jack.h::jack_on_shutdown" ref="g76f99f987700b33cd3c28b3cb79f6bf5" args="(jack_client_t *client, void(*function)(void *arg), void *arg)" -->
38
<div class="memproto">
39
<table class="memname">
41
<td class="memname">void jack_on_shutdown </td>
43
<td class="paramtype"><a class="el" href="types_8h.html#96cf103940d2ee71b141d4b9d0c116bf">jack_client_t</a> * </td>
44
<td class="paramname"> <em>client</em>, </td>
47
<td class="paramkey"></td>
49
<td class="paramtype">void(*)(void *arg) </td>
50
<td class="paramname"> <em>function</em>, </td>
53
<td class="paramkey"></td>
55
<td class="paramtype">void * </td>
56
<td class="paramname"> <em>arg</em></td><td> </td>
61
<td></td><td></td><td></td>
68
<dl compact><dt><b>Parameters:</b></dt><dd>
69
<table border="0" cellspacing="2" cellpadding="0">
70
<tr><td valign="top"></td><td valign="top"><em>client</em> </td><td>pointer to JACK client structure. </td></tr>
71
<tr><td valign="top"></td><td valign="top"><em>function</em> </td><td>The jack_shutdown function pointer. </td></tr>
72
<tr><td valign="top"></td><td valign="top"><em>arg</em> </td><td>The arguments for the jack_shutdown function.</td></tr>
75
Register a function (and argument) to be called if and when the JACK server shuts down the client thread. The function must be written as if it were an asynchonrous POSIX signal handler --- use only async-safe functions, and remember that it is executed from another thread. A typical function might set a flag or write to a pipe so that the rest of the application knows that the JACK client thread has shut down.<p>
76
NOTE: clients do not need to call this. It exists only to help more complex clients understand what is going on. It should be called before jack_client_activate().
77
<p>Referenced by <a class="el" href="simple__client_8c-source.html#l00069">main()</a>.</p>
81
<a class="anchor" name="g664b5c6516c05878fdcd000af149fad9"></a><!-- doxytag: member="jack.h::jack_set_buffer_size_callback" ref="g664b5c6516c05878fdcd000af149fad9" args="(jack_client_t *client, JackBufferSizeCallback bufsize_callback, void *arg)" -->
83
<div class="memproto">
84
<table class="memname">
86
<td class="memname">int jack_set_buffer_size_callback </td>
88
<td class="paramtype"><a class="el" href="types_8h.html#96cf103940d2ee71b141d4b9d0c116bf">jack_client_t</a> * </td>
89
<td class="paramname"> <em>client</em>, </td>
92
<td class="paramkey"></td>
94
<td class="paramtype"><a class="el" href="types_8h.html#0261190ceecb5da2c2f57a95407f3207">JackBufferSizeCallback</a> </td>
95
<td class="paramname"> <em>bufsize_callback</em>, </td>
98
<td class="paramkey"></td>
100
<td class="paramtype">void * </td>
101
<td class="paramname"> <em>arg</em></td><td> </td>
106
<td></td><td></td><td></td>
113
Tell JACK to call <em>bufsize_callback</em> whenever the size of the the buffer that will be passed to the <em>process_callback</em> is about to change. Clients that depend on knowing the buffer size must supply a <em>bufsize_callback</em> before activating themselves.<p>
114
<dl compact><dt><b>Parameters:</b></dt><dd>
115
<table border="0" cellspacing="2" cellpadding="0">
116
<tr><td valign="top"></td><td valign="top"><em>client</em> </td><td>pointer to JACK client structure. </td></tr>
117
<tr><td valign="top"></td><td valign="top"><em>bufsize_callback</em> </td><td>function to call when the buffer size changes. </td></tr>
118
<tr><td valign="top"></td><td valign="top"><em>arg</em> </td><td>argument for <em>bufsize_callback</em>.</td></tr>
121
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, otherwise a non-zero error code </dd></dl>
125
<a class="anchor" name="gdbabe066f85692eb50546cbf2bd5c209"></a><!-- doxytag: member="jack.h::jack_set_client_registration_callback" ref="gdbabe066f85692eb50546cbf2bd5c209" args="(jack_client_t *, JackClientRegistrationCallback registration_callback, void *arg)" -->
126
<div class="memitem">
127
<div class="memproto">
128
<table class="memname">
130
<td class="memname">int jack_set_client_registration_callback </td>
132
<td class="paramtype"><a class="el" href="types_8h.html#96cf103940d2ee71b141d4b9d0c116bf">jack_client_t</a> * </td>
133
<td class="paramname">, </td>
136
<td class="paramkey"></td>
138
<td class="paramtype"><a class="el" href="types_8h.html#0ae385908cac1f5dffbdf25c377237f4">JackClientRegistrationCallback</a> </td>
139
<td class="paramname"> <em>registration_callback</em>, </td>
142
<td class="paramkey"></td>
144
<td class="paramtype">void * </td>
145
<td class="paramname"> <em>arg</em></td><td> </td>
150
<td></td><td></td><td></td>
157
Tell the JACK server to call <em>registration_callback</em> whenever a port is registered or unregistered, passing <em>arg</em> as a parameter.<p>
158
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, otherwise a non-zero error code </dd></dl>
162
<a class="anchor" name="gc8e87f2c4054afc41c98c8f6a2460859"></a><!-- doxytag: member="jack.h::jack_set_freewheel_callback" ref="gc8e87f2c4054afc41c98c8f6a2460859" args="(jack_client_t *client, JackFreewheelCallback freewheel_callback, void *arg)" -->
163
<div class="memitem">
164
<div class="memproto">
165
<table class="memname">
167
<td class="memname">int jack_set_freewheel_callback </td>
169
<td class="paramtype"><a class="el" href="types_8h.html#96cf103940d2ee71b141d4b9d0c116bf">jack_client_t</a> * </td>
170
<td class="paramname"> <em>client</em>, </td>
173
<td class="paramkey"></td>
175
<td class="paramtype"><a class="el" href="types_8h.html#c7b7d36a121a4828002b2c5a8ddefcd6">JackFreewheelCallback</a> </td>
176
<td class="paramname"> <em>freewheel_callback</em>, </td>
179
<td class="paramkey"></td>
181
<td class="paramtype">void * </td>
182
<td class="paramname"> <em>arg</em></td><td> </td>
187
<td></td><td></td><td></td>
194
Tell the Jack server to call <em>freewheel_callback</em> whenever we enter or leave "freewheel" mode, passing <em>arg</em> as the second argument. The first argument to the callback will be non-zero if JACK is entering freewheel mode, and zero otherwise.<p>
195
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, otherwise a non-zero error code. </dd></dl>
199
<a class="anchor" name="g50f1f3a79e50cf04016b2ec57be60f0b"></a><!-- doxytag: member="jack.h::jack_set_graph_order_callback" ref="g50f1f3a79e50cf04016b2ec57be60f0b" args="(jack_client_t *, JackGraphOrderCallback graph_callback, void *)" -->
200
<div class="memitem">
201
<div class="memproto">
202
<table class="memname">
204
<td class="memname">int jack_set_graph_order_callback </td>
206
<td class="paramtype"><a class="el" href="types_8h.html#96cf103940d2ee71b141d4b9d0c116bf">jack_client_t</a> * </td>
207
<td class="paramname">, </td>
210
<td class="paramkey"></td>
212
<td class="paramtype"><a class="el" href="types_8h.html#8a656ca8ccb88cb25255e1ae85e834c7">JackGraphOrderCallback</a> </td>
213
<td class="paramname"> <em>graph_callback</em>, </td>
216
<td class="paramkey"></td>
218
<td class="paramtype">void * </td>
219
<td class="paramname"></td><td> </td>
224
<td></td><td></td><td></td>
231
Tell the JACK server to call <em>graph_callback</em> whenever the processing graph is reordered, passing <em>arg</em> as a parameter.<p>
232
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, otherwise a non-zero error code </dd></dl>
236
<a class="anchor" name="g9f1de5c519d43a5ec60a373d8953ad1f"></a><!-- doxytag: member="jack.h::jack_set_port_connect_callback" ref="g9f1de5c519d43a5ec60a373d8953ad1f" args="(jack_client_t *, JackPortConnectCallback connect_callback, void *arg)" -->
237
<div class="memitem">
238
<div class="memproto">
239
<table class="memname">
241
<td class="memname">int jack_set_port_connect_callback </td>
243
<td class="paramtype"><a class="el" href="types_8h.html#96cf103940d2ee71b141d4b9d0c116bf">jack_client_t</a> * </td>
244
<td class="paramname">, </td>
247
<td class="paramkey"></td>
249
<td class="paramtype"><a class="el" href="types_8h.html#a5218343bca6daa13a99c30ea39ac96c">JackPortConnectCallback</a> </td>
250
<td class="paramname"> <em>connect_callback</em>, </td>
253
<td class="paramkey"></td>
255
<td class="paramtype">void * </td>
256
<td class="paramname"> <em>arg</em></td><td> </td>
261
<td></td><td></td><td></td>
268
Tell the JACK server to call <em>connect_callback</em> whenever a port is connected or disconnected, passing <em>arg</em> as a parameter.<p>
269
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, otherwise a non-zero error code </dd></dl>
273
<a class="anchor" name="g36c72f648c7adb7a1698564cb65c4dd9"></a><!-- doxytag: member="jack.h::jack_set_port_registration_callback" ref="g36c72f648c7adb7a1698564cb65c4dd9" args="(jack_client_t *, JackPortRegistrationCallback registration_callback, void *arg)" -->
274
<div class="memitem">
275
<div class="memproto">
276
<table class="memname">
278
<td class="memname">int jack_set_port_registration_callback </td>
280
<td class="paramtype"><a class="el" href="types_8h.html#96cf103940d2ee71b141d4b9d0c116bf">jack_client_t</a> * </td>
281
<td class="paramname">, </td>
284
<td class="paramkey"></td>
286
<td class="paramtype"><a class="el" href="types_8h.html#be0df275316020d3607e0cde8e1161d3">JackPortRegistrationCallback</a> </td>
287
<td class="paramname"> <em>registration_callback</em>, </td>
290
<td class="paramkey"></td>
292
<td class="paramtype">void * </td>
293
<td class="paramname"> <em>arg</em></td><td> </td>
298
<td></td><td></td><td></td>
305
Tell the JACK server to call <em>registration_callback</em> whenever a port is registered or unregistered, passing <em>arg</em> as a parameter.<p>
306
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, otherwise a non-zero error code </dd></dl>
310
<a class="anchor" name="g62351a5803421b6c21b9ffb9124801ef"></a><!-- doxytag: member="jack.h::jack_set_process_callback" ref="g62351a5803421b6c21b9ffb9124801ef" args="(jack_client_t *client, JackProcessCallback process_callback, void *arg)" -->
311
<div class="memitem">
312
<div class="memproto">
313
<table class="memname">
315
<td class="memname">int jack_set_process_callback </td>
317
<td class="paramtype"><a class="el" href="types_8h.html#96cf103940d2ee71b141d4b9d0c116bf">jack_client_t</a> * </td>
318
<td class="paramname"> <em>client</em>, </td>
321
<td class="paramkey"></td>
323
<td class="paramtype"><a class="el" href="types_8h.html#4923142208a8e7dacf00ca7a10681d2b">JackProcessCallback</a> </td>
324
<td class="paramname"> <em>process_callback</em>, </td>
327
<td class="paramkey"></td>
329
<td class="paramtype">void * </td>
330
<td class="paramname"> <em>arg</em></td><td> </td>
335
<td></td><td></td><td></td>
342
Tell the Jack server to call <em>process_callback</em> whenever there is work be done, passing <em>arg</em> as the second argument.<p>
343
The code in the supplied function must be suitable for real-time execution. That means that it cannot call functions that might block for a long time. This includes malloc, free, printf, pthread_mutex_lock, sleep, wait, poll, select, pthread_join, pthread_cond_wait, etc, etc. See <a href="http://jackit.sourceforge.net/docs/design/design.html#SECTION00411000000000000000">http://jackit.sourceforge.net/docs/design/design.html#SECTION00411000000000000000</a> for more information.<p>
344
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, otherwise a non-zero error code, causing JACK to remove that client from the <a class="el" href="simple__client_8c.html#01271cc6cf692278ae35d0062935d7ae">process()</a> graph. </dd></dl>
346
<p>Referenced by <a class="el" href="inprocess_8c-source.html#l00060">jack_initialize()</a>, and <a class="el" href="simple__client_8c-source.html#l00069">main()</a>.</p>
350
<a class="anchor" name="gfb44f979b13f2dc1fbf2ba7b52882d65"></a><!-- doxytag: member="jack.h::jack_set_sample_rate_callback" ref="gfb44f979b13f2dc1fbf2ba7b52882d65" args="(jack_client_t *client, JackSampleRateCallback srate_callback, void *arg)" -->
351
<div class="memitem">
352
<div class="memproto">
353
<table class="memname">
355
<td class="memname">int jack_set_sample_rate_callback </td>
357
<td class="paramtype"><a class="el" href="types_8h.html#96cf103940d2ee71b141d4b9d0c116bf">jack_client_t</a> * </td>
358
<td class="paramname"> <em>client</em>, </td>
361
<td class="paramkey"></td>
363
<td class="paramtype"><a class="el" href="types_8h.html#b993af9e0b5fe4f9b9645c092abcec35">JackSampleRateCallback</a> </td>
364
<td class="paramname"> <em>srate_callback</em>, </td>
367
<td class="paramkey"></td>
369
<td class="paramtype">void * </td>
370
<td class="paramname"> <em>arg</em></td><td> </td>
375
<td></td><td></td><td></td>
382
Tell the Jack server to call <em>srate_callback</em> whenever the system sample rate changes.<p>
383
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, otherwise a non-zero error code </dd></dl>
387
<a class="anchor" name="gbad6ea38ac9d8e5ff4231a083604fff9"></a><!-- doxytag: member="jack.h::jack_set_thread_init_callback" ref="gbad6ea38ac9d8e5ff4231a083604fff9" args="(jack_client_t *client, JackThreadInitCallback thread_init_callback, void *arg)" -->
388
<div class="memitem">
389
<div class="memproto">
390
<table class="memname">
392
<td class="memname">int jack_set_thread_init_callback </td>
394
<td class="paramtype"><a class="el" href="types_8h.html#96cf103940d2ee71b141d4b9d0c116bf">jack_client_t</a> * </td>
395
<td class="paramname"> <em>client</em>, </td>
398
<td class="paramkey"></td>
400
<td class="paramtype"><a class="el" href="types_8h.html#7c4428bf3b2caf8bb0b92314acaa1307">JackThreadInitCallback</a> </td>
401
<td class="paramname"> <em>thread_init_callback</em>, </td>
404
<td class="paramkey"></td>
406
<td class="paramtype">void * </td>
407
<td class="paramname"> <em>arg</em></td><td> </td>
412
<td></td><td></td><td></td>
419
Tell JACK to call <em>thread_init_callback</em> once just after the creation of the thread in which all other callbacks will be handled.<p>
420
The code in the supplied function does not need to be suitable for real-time execution.<p>
421
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, otherwise a non-zero error code, causing JACK to remove that client from the <a class="el" href="simple__client_8c.html#01271cc6cf692278ae35d0062935d7ae">process()</a> graph. </dd></dl>
425
<a class="anchor" name="g185c6859d72bb56452b72d1dcd8924f7"></a><!-- doxytag: member="jack.h::jack_set_xrun_callback" ref="g185c6859d72bb56452b72d1dcd8924f7" args="(jack_client_t *, JackXRunCallback xrun_callback, void *arg)" -->
426
<div class="memitem">
427
<div class="memproto">
428
<table class="memname">
430
<td class="memname">int jack_set_xrun_callback </td>
432
<td class="paramtype"><a class="el" href="types_8h.html#96cf103940d2ee71b141d4b9d0c116bf">jack_client_t</a> * </td>
433
<td class="paramname">, </td>
436
<td class="paramkey"></td>
438
<td class="paramtype"><a class="el" href="types_8h.html#7955ec486286fec4e2a71243bb66370e">JackXRunCallback</a> </td>
439
<td class="paramname"> <em>xrun_callback</em>, </td>
442
<td class="paramkey"></td>
444
<td class="paramtype">void * </td>
445
<td class="paramname"> <em>arg</em></td><td> </td>
450
<td></td><td></td><td></td>
457
Tell the JACK server to call <em>xrun_callback</em> whenever there is a xrun, passing <em>arg</em> as a parameter.<p>
458
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, otherwise a non-zero error code </dd></dl>
463
<hr size="1"><address style="text-align: right;"><small>Generated on Sun Nov 23 17:53:21 2008 for JACK-AUDIO-CONNECTION-KIT by
464
<a href="http://www.doxygen.org/index.html">
465
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>