control.h | control.h | |||
---|---|---|---|---|
skipping to change at line 34 | skipping to change at line 34 | |||
* @ingroup publicheader | * @ingroup publicheader | |||
* @brief JACK control API | * @brief JACK control API | |||
* | * | |||
*/ | */ | |||
#ifndef JACKCTL_H__2EEDAD78_DF4C_4B26_83B7_4FF1A446A47E__INCLUDED | #ifndef JACKCTL_H__2EEDAD78_DF4C_4B26_83B7_4FF1A446A47E__INCLUDED | |||
#define JACKCTL_H__2EEDAD78_DF4C_4B26_83B7_4FF1A446A47E__INCLUDED | #define JACKCTL_H__2EEDAD78_DF4C_4B26_83B7_4FF1A446A47E__INCLUDED | |||
#include <jack/jslist.h> | #include <jack/jslist.h> | |||
#include <jack/systemdeps.h> | #include <jack/systemdeps.h> | |||
#if !defined (__sun__) | ||||
#include <stdbool.h> | #include <stdbool.h> | |||
#endif | ||||
/** Parameter types, intentionally similar to jack_driver_param_type_t */ | /** Parameter types, intentionally similar to jack_driver_param_type_t */ | |||
typedef enum | typedef enum | |||
{ | { | |||
JackParamInt = 1, /**< @brief value type is a signed i nteger */ | JackParamInt = 1, /**< @brief value type is a signed i nteger */ | |||
JackParamUInt, /**< @brief value type is an unsigned integer */ | JackParamUInt, /**< @brief value type is an unsigned integer */ | |||
JackParamChar, /**< @brief value type is a char */ | JackParamChar, /**< @brief value type is a char */ | |||
JackParamString, /**< @brief value type is a string w ith max size of ::JACK_PARAM_STRING_MAX+1 chars */ | JackParamString, /**< @brief value type is a string w ith max size of ::JACK_PARAM_STRING_MAX+1 chars */ | |||
JackParamBool, /**< @brief value type is a boolean */ | JackParamBool, /**< @brief value type is a boolean */ | |||
} jackctl_param_type_t; | } jackctl_param_type_t; | |||
End of changes. 2 change blocks. | ||||
0 lines changed or deleted | 2 lines changed or added | |||
jack.h | jack.h | |||
---|---|---|---|---|
skipping to change at line 37 | skipping to change at line 37 | |||
#endif | #endif | |||
#include <jack/systemdeps.h> | #include <jack/systemdeps.h> | |||
#include <jack/types.h> | #include <jack/types.h> | |||
#include <jack/transport.h> | #include <jack/transport.h> | |||
/** | /** | |||
* Note: More documentation can be found in jack/types.h. | * Note: More documentation can be found in jack/types.h. | |||
*/ | */ | |||
/************************************************************* | ||||
* NOTE: JACK_WEAK_EXPORT ***MUST*** be used on every function | ||||
* added to the JACK API after the 0.116.2 release. | ||||
*************************************************************/ | ||||
#ifndef JACK_WEAK_EXPORT | ||||
#ifdef __GNUC__ | ||||
/* JACK_WEAK_EXPORT needs to be a macro which | ||||
expands into a compiler directive. If non-null, the directive | ||||
must tell the compiler to arrange for weak linkage of | ||||
the symbol it used with. For this to work full may | ||||
require linker arguments in the client as well. | ||||
*/ | ||||
#define JACK_WEAK_EXPORT __attribute__((weak)) | ||||
#else | ||||
/* Add other things here for non-gcc platforms */ | ||||
#endif | ||||
#endif | ||||
/** | /** | |||
* @defgroup ClientFunctions Creating & manipulating clients | * @defgroup ClientFunctions Creating & manipulating clients | |||
* @{ | * @{ | |||
*/ | */ | |||
/** | /** | |||
* Call this function to get version of the JACK, in form of several number s | * Call this function to get version of the JACK, in form of several number s | |||
* | * | |||
* @param major_ptr pointer to variable receiving major version of JACK. | * @param major_ptr pointer to variable receiving major version of JACK. | |||
* | * | |||
skipping to change at line 297 | skipping to change at line 316 | |||
* be written as if it were an asynchonrous POSIX signal | * be written as if it were an asynchonrous POSIX signal | |||
* handler --- use only async-safe functions, and remember that it | * handler --- use only async-safe functions, and remember that it | |||
* is executed from another thread. A typical function might | * is executed from another thread. A typical function might | |||
* set a flag or write to a pipe so that the rest of the | * set a flag or write to a pipe so that the rest of the | |||
* application knows that the JACK client thread has shut | * application knows that the JACK client thread has shut | |||
* down. | * down. | |||
* | * | |||
* NOTE: clients do not need to call this. It exists only | * NOTE: clients do not need to call this. It exists only | |||
* to help more complex clients understand what is going | * to help more complex clients understand what is going | |||
* on. It should be called before jack_client_activate(). | * on. It should be called before jack_client_activate(). | |||
* | ||||
* NOTE: if a client calls this AND jack_on_info_shutdown(), then | ||||
* the event of a client thread shutdown, the callback | ||||
* passed to this function will not be called, and the one passed to | ||||
* jack_on_info_shutdown() will. | ||||
*/ | */ | |||
void jack_on_shutdown (jack_client_t *client, | void jack_on_shutdown (jack_client_t *client, | |||
JackShutdownCallback shutdown_callback, void *arg); | JackShutdownCallback shutdown_callback, void *arg) J | |||
ACK_WEAK_EXPORT; | ||||
/** | ||||
* @param client pointer to JACK client structure. | ||||
* @param function The jack_info_shutdown function pointer. | ||||
* @param arg The arguments for the jack_info_shutdown function. | ||||
* | ||||
* 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. | ||||
* | ||||
* 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(). | ||||
* | ||||
* NOTE: if a client calls this AND jack_on_info_shutdown(), then | ||||
* the event of a client thread shutdown, the callback | ||||
* passed to this function will not be called, and the one passed to | ||||
* jack_on_info_shutdown() will. | ||||
*/ | ||||
void jack_on_info_shutdown (jack_client_t *client, | ||||
JackInfoShutdownCallback shutdown_callback, void *ar | ||||
g); | ||||
/** | /** | |||
* Tell the Jack server to call @a process_callback whenever there is | * Tell the Jack server to call @a process_callback whenever there is | |||
* work be done, passing @a arg as the second argument. | * work be done, passing @a arg as the second argument. | |||
* | * | |||
* The code in the supplied function must be suitable for real-time | * The code in the supplied function must be suitable for real-time | |||
* execution. That means that it cannot call functions that might | * execution. That means that it cannot call functions that might | |||
* block for a long time. This includes malloc, free, printf, | * block for a long time. This includes malloc, free, printf, | |||
* pthread_mutex_lock, sleep, wait, poll, select, pthread_join, | * pthread_mutex_lock, sleep, wait, poll, select, pthread_join, | |||
* pthread_cond_wait, etc, etc. See | * pthread_cond_wait, etc, etc. See | |||
End of changes. 3 change blocks. | ||||
1 lines changed or deleted | 53 lines changed or added | |||
jslist.h | jslist.h | |||
---|---|---|---|---|
skipping to change at line 51 | skipping to change at line 51 | |||
JSList *next; | JSList *next; | |||
}; | }; | |||
static __inline__ | static __inline__ | |||
JSList* | JSList* | |||
jack_slist_alloc (void) | jack_slist_alloc (void) | |||
{ | { | |||
JSList *new_list; | JSList *new_list; | |||
new_list = (JSList*)malloc(sizeof(JSList)); | new_list = (JSList*)malloc(sizeof(JSList)); | |||
new_list->data = NULL; | if (new_list) { | |||
new_list->next = NULL; | new_list->data = NULL; | |||
new_list->next = NULL; | ||||
} | ||||
return new_list; | return new_list; | |||
} | } | |||
static __inline__ | static __inline__ | |||
JSList* | JSList* | |||
jack_slist_prepend (JSList* list, void* data) | jack_slist_prepend (JSList* list, void* data) | |||
{ | { | |||
JSList *new_list; | JSList *new_list; | |||
new_list = (JSList*)malloc(sizeof(JSList)); | new_list = (JSList*)malloc(sizeof(JSList)); | |||
new_list->data = data; | if (new_list) { | |||
new_list->next = list; | new_list->data = data; | |||
new_list->next = list; | ||||
} | ||||
return new_list; | return new_list; | |||
} | } | |||
#define jack_slist_next(slist) ((slist) ? (((JSList *)(slist))->next) : NUL L) | #define jack_slist_next(slist) ((slist) ? (((JSList *)(slist))->next) : NUL L) | |||
static __inline__ | static __inline__ | |||
JSList* | JSList* | |||
jack_slist_last (JSList *list) | jack_slist_last (JSList *list) | |||
{ | { | |||
if (list) { | if (list) { | |||
End of changes. 2 change blocks. | ||||
4 lines changed or deleted | 8 lines changed or added | |||
types.h | types.h | |||
---|---|---|---|---|
skipping to change at line 421 | skipping to change at line 421 | |||
JackInitFailure = 0x100, | JackInitFailure = 0x100, | |||
/** | /** | |||
* Unable to access shared memory | * Unable to access shared memory | |||
*/ | */ | |||
JackShmFailure = 0x200, | JackShmFailure = 0x200, | |||
/** | /** | |||
* Client's protocol version does not match | * Client's protocol version does not match | |||
*/ | */ | |||
JackVersionError = 0x400 | JackVersionError = 0x400, | |||
/** | ||||
* Backend error | ||||
*/ | ||||
JackBackendError = 0x800, | ||||
/** | ||||
* Client zombified failure | ||||
*/ | ||||
JackClientZombie = 0x1000 | ||||
}; | }; | |||
/** | /** | |||
* Status word returned from several JACK operations, formed by | * Status word returned from several JACK operations, formed by | |||
* OR-ing together the relevant @ref JackStatus bits. | * OR-ing together the relevant @ref JackStatus bits. | |||
*/ | */ | |||
typedef enum JackStatus jack_status_t; | typedef enum JackStatus jack_status_t; | |||
/** | /** | |||
* Transport states. | * Transport states. | |||
skipping to change at line 645 | skipping to change at line 655 | |||
int tick; | int tick; | |||
double bar_start_tick; | double bar_start_tick; | |||
float beats_per_bar; | float beats_per_bar; | |||
float beat_type; | float beat_type; | |||
double ticks_per_beat; | double ticks_per_beat; | |||
double beats_per_minute; | double beats_per_minute; | |||
} jack_transport_info_t; | } jack_transport_info_t; | |||
/** | ||||
* Prototype for the client supplied function that is called | ||||
* whenever jackd is shutdown. Note that after server shutdown, | ||||
* the client pointer is *not* deallocated by libjack, | ||||
* the application is responsible to properly use jack_client_close() | ||||
* to release client ressources. Warning: jack_client_close() cannot be | ||||
* safely used inside the shutdown callback and has to be called outside of | ||||
* the callback context. | ||||
* @param code a status word, formed by OR-ing together the relevant @ref J | ||||
ackStatus bits. | ||||
* @param reason a string describing the shutdown reason (backend failure, | ||||
server crash... etc...) | ||||
* @param arg pointer to a client supplied structure | ||||
*/ | ||||
typedef void (*JackInfoShutdownCallback)(jack_status_t code, const char* re | ||||
ason, void *arg); | ||||
#endif /* __jack_types_h__ */ | #endif /* __jack_types_h__ */ | |||
End of changes. 2 change blocks. | ||||
1 lines changed or deleted | 29 lines changed or added | |||