--- example-clients/capture_client.c.orig	2009-01-15 11:46:14.000000000 +0100
+++ example-clients/capture_client.c	2009-01-15 11:48:45.000000000 +0100
@@ -62,6 +62,7 @@
 pthread_cond_t  data_ready = PTHREAD_COND_INITIALIZER;
 long overruns = 0;
 
+int capture_stopped = 0;
 
 void *
 disk_thread (void *arg)
@@ -120,7 +121,7 @@
 	jack_thread_info_t *info = (jack_thread_info_t *) arg;
 
 	/* Do nothing until we're ready to begin. */
-	if ((!info->can_process) || (!info->can_capture))
+	if ((!info->can_process) || (!info->can_capture) || capture_stopped)
 		return 0;
 
 	for (chn = 0; chn < nports; chn++)
@@ -269,6 +270,12 @@
 	raise (sig);
 }
 
+static void
+usr_signal_handler (int sig)
+{
+	capture_stopped = sig == SIGUSR1;
+}
+
 int
 main (int argc, char *argv[])
 
@@ -290,6 +297,8 @@
 
 	signal (SIGTERM, signal_handler);
 	signal (SIGINT, signal_handler);
+	signal (SIGUSR1, usr_signal_handler);
+	signal (SIGUSR2, usr_signal_handler);
 
 	memset (&thread_info, 0, sizeof (thread_info));
 	thread_info.rb_size = DEFAULT_RB_SIZE;
EOF
