jackdbus/example-clients/zombie.c

89 lines
2.1 KiB
C

/*
Copyright (C) 2002 Jeremy Hall
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: zombie.c,v 1.1 2005/08/18 11:42:08 letz Exp $
*/
#include <stdio.h>
#include <errno.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <jack/jack.h>
int running = 1;
int count = 0;
jack_port_t* output_port;
static int
process(jack_nframes_t nframes, void* arg)
{
if (count++ == 1000) {
printf("process block\n");
//while (1) {}
sleep(1);
}
return 0;
}
static void
shutdown (void *arg)
{
printf("shutdown \n");
running = 0;
}
int
main (int argc, char *argv[])
{
jack_client_t* client = NULL;
/* try to become a client of the JACK server */
if ((client = jack_client_new ("zombie")) == 0) {
fprintf (stderr, "jack server not running?\n");
goto error;
}
jack_set_process_callback (client, process, NULL);
jack_on_shutdown(client, shutdown, NULL);
output_port = jack_port_register (client, "port1", JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0);
/* tell the JACK server that we are ready to roll */
if (jack_activate (client)) {
fprintf (stderr, "cannot activate client");
goto error;
}
jack_connect(client, jack_port_name(output_port), "coreaudio:Built-in Audio:in2");
while (running) {
sleep(1);
printf ("run\n");
}
jack_deactivate (client);
jack_client_close (client);
return 0;
error:
if (client)
jack_client_close (client);
return 1;
}