| @@ -59,6 +59,7 @@ extern void jack_info (const char *fmt, ...); | |||||
| #include <jack/transport.h> | #include <jack/transport.h> | ||||
| #include <jack/session.h> | #include <jack/session.h> | ||||
| #include <jack/thread.h> | #include <jack/thread.h> | ||||
| #include <jack/metadata.h> | |||||
| #include "port.h" | #include "port.h" | ||||
| @@ -221,7 +222,8 @@ typedef enum { | |||||
| ClientRegistered, | ClientRegistered, | ||||
| ClientUnregistered, | ClientUnregistered, | ||||
| SaveSession, | SaveSession, | ||||
| LatencyCallback | |||||
| LatencyCallback, | |||||
| PropertyCallback | |||||
| } JackEventType; | } JackEventType; | ||||
| const char* jack_event_type_name (JackEventType); | const char* jack_event_type_name (JackEventType); | ||||
| @@ -233,12 +235,17 @@ typedef struct { | |||||
| char name[JACK_PORT_NAME_SIZE]; | char name[JACK_PORT_NAME_SIZE]; | ||||
| jack_port_id_t port_id; | jack_port_id_t port_id; | ||||
| jack_port_id_t self_id; | jack_port_id_t self_id; | ||||
| jack_uuid_t property_owner; | |||||
| } x; | } x; | ||||
| union { | union { | ||||
| uint32_t n; | uint32_t n; | ||||
| jack_port_type_id_t ptid; | jack_port_type_id_t ptid; | ||||
| jack_port_id_t other_id; | jack_port_id_t other_id; | ||||
| uint32_t key_size; /* key data will follow the event structure */ | |||||
| } y; | } y; | ||||
| union { | |||||
| jack_property_change_t property_change; | |||||
| } z; | |||||
| } POST_PACKED_STRUCTURE jack_event_t; | } POST_PACKED_STRUCTURE jack_event_t; | ||||
| typedef enum { | typedef enum { | ||||
| @@ -301,6 +308,7 @@ typedef volatile struct { | |||||
| volatile uint8_t thread_cb_cbset; | volatile uint8_t thread_cb_cbset; | ||||
| volatile uint8_t session_cbset; | volatile uint8_t session_cbset; | ||||
| volatile uint8_t latency_cbset; | volatile uint8_t latency_cbset; | ||||
| volatile uint8_t property_cbset; | |||||
| } POST_PACKED_STRUCTURE jack_client_control_t; | } POST_PACKED_STRUCTURE jack_client_control_t; | ||||
| @@ -609,6 +609,7 @@ jack_setup_client_control (jack_engine_t *engine, int fd, ClientType type, const | |||||
| client->control->client_register_cbset = FALSE; | client->control->client_register_cbset = FALSE; | ||||
| client->control->thread_cb_cbset = FALSE; | client->control->thread_cb_cbset = FALSE; | ||||
| client->control->session_cbset = FALSE; | client->control->session_cbset = FALSE; | ||||
| client->control->property_cbset = FALSE; | |||||
| #if 0 | #if 0 | ||||
| if (type != ClientExternal) { | if (type != ClientExternal) { | ||||
| @@ -77,6 +77,8 @@ struct _jack_client { | |||||
| void *session_cb_arg; | void *session_cb_arg; | ||||
| JackLatencyCallback latency_cb; | JackLatencyCallback latency_cb; | ||||
| void *latency_cb_arg; | void *latency_cb_arg; | ||||
| JackPropertyChangeCallback property_cb; | |||||
| void *property_cb_arg; | |||||
| /* external clients: set by libjack | /* external clients: set by libjack | ||||
| * internal clients: set by engine */ | * internal clients: set by engine */ | ||||
| @@ -24,6 +24,7 @@ | |||||
| #include <jack/uuid.h> | #include <jack/uuid.h> | ||||
| #include "internal.h" | #include "internal.h" | ||||
| #include "local.h" | |||||
| static DB* db = NULL; | static DB* db = NULL; | ||||
| @@ -374,11 +375,18 @@ jack_get_all_descriptions (jack_description_t** descs) | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| int jack_set_property_change_callback (jack_client_t* client, | |||||
| JackPropertyChangeCallback callback, | |||||
| void *arg) | |||||
| int | |||||
| jack_set_property_change_callback (jack_client_t *client, | |||||
| JackPropertyChangeCallback callback, void *arg) | |||||
| { | { | ||||
| return 0; | |||||
| if (client->control->active) { | |||||
| jack_error ("You cannot set callbacks on an active client."); | |||||
| return -1; | |||||
| } | |||||
| client->property_cb = callback; | |||||
| client->property_cb_arg = arg; | |||||
| client->control->property_cbset = (callback != NULL); | |||||
| return 0; | |||||
| } | } | ||||
| int | int | ||||