jackdbus/example-clients/control.c

76 lines
1.7 KiB
C

/** @file simple_client.c
*
* @brief This simple client demonstrates the basic features of JACK
* as they would be used by many applications.
*/
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
#include <math.h>
#include <jack/jack.h>
jack_client_t *client;
static int reorder = 0;
static int Jack_Graph_Order_Callback(void *arg)
{
const char **ports;
int i;
printf("Jack_Graph_Order_Callback count = %d\n", reorder++);
ports = jack_get_ports(client, NULL, NULL, JackPortIsPhysical|JackPortIsOutput);
if (ports) {
for (i = 0; ports[i]; ++i) {
printf("name: %s\n", ports[i]);
}
free(ports);
}
ports = jack_get_ports(client, NULL, NULL, JackPortIsPhysical|JackPortIsInput);
if (ports) {
for (i = 0; ports[i]; ++i) {
printf("name: %s\n", ports[i]);
}
free(ports);
}
return 0;
}
int
main (int argc, char *argv[])
{
jack_options_t options = JackNullOption;
jack_status_t status;
/* open a client connection to the JACK server */
client = jack_client_open("control_client", options, &status);
if (client == NULL) {
printf("jack_client_open() failed \n");
exit(1);
}
if (jack_set_graph_order_callback(client, Jack_Graph_Order_Callback, 0) != 0) {
printf("Error when calling jack_set_graph_order_callback() !\n");
}
/* Tell the JACK server that we are ready to roll. Our
* process() callback will start running now. */
if (jack_activate(client)) {
printf("cannot activate client");
exit(1);
}
printf("Type 'q' to quit\n");
while ((getchar() != 'q')) {}
jack_client_close(client);
exit (0);
}