summaryrefslogtreecommitdiff
path: root/jackd
diff options
context:
space:
mode:
authortorben <torben@0c269be4-1314-0410-8aa9-9f06e86f4224>2011-05-29 00:45:55 +0000
committertorben <torben@0c269be4-1314-0410-8aa9-9f06e86f4224>2011-05-29 00:45:55 +0000
commitc3145813a16459c5378651e431f91ed74988603c (patch)
tree1f36698575e2d6cc2875038ef4a6beb72f7ea46d /jackd
parentd3a0ec4cadcfa350182ed44798433b9bfbeea3b9 (diff)
downloadjack1-c3145813a16459c5378651e431f91ed74988603c.tar.gz
[jackd] add support for slave drivers into jackd executable
cant pass parameters to slave drivers yet. this is similar to jack2 for now. git-svn-id: svn+ssh://jackaudio.org/trunk/jack@4399 0c269be4-1314-0410-8aa9-9f06e86f4224
Diffstat (limited to 'jackd')
-rw-r--r--jackd/jackd.c26
1 files changed, 22 insertions, 4 deletions
diff --git a/jackd/jackd.c b/jackd/jackd.c
index d0a0c1f..4259ae1 100644
--- a/jackd/jackd.c
+++ b/jackd/jackd.c
@@ -70,6 +70,9 @@ static int nozombies = 0;
extern int sanitycheck (int, int);
+static jack_driver_desc_t *
+jack_find_driver_descriptor (const char * name);
+
static void
do_nothing_handler (int sig)
{
@@ -84,13 +87,14 @@ do_nothing_handler (int sig)
}
static int
-jack_main (jack_driver_desc_t * driver_desc, JSList * driver_params)
+jack_main (jack_driver_desc_t * driver_desc, JSList * driver_params, JSList * slave_names)
{
int sig;
int i;
sigset_t allsignals;
struct sigaction action;
int waiting;
+ JSList * node;
/* ensure that we are in our own process group so that
kill (SIG, -pgrp) does the right thing.
@@ -163,7 +167,16 @@ jack_main (jack_driver_desc_t * driver_desc, JSList * driver_params)
goto error;
}
- if (engine->driver->start (engine->driver) != 0) {
+ for (node=slave_names; node; node=jack_slist_next(node)) {
+ char *sl_name = node->data;
+ jack_driver_desc_t *sl_desc = jack_find_driver_descriptor(sl_name);
+ if (sl_desc) {
+ jack_engine_load_slave_driver(engine, sl_desc, NULL);
+ }
+ }
+
+
+ if (jack_drivers_start (engine) != 0) {
jack_error ("cannot start driver");
goto error;
}
@@ -522,7 +535,7 @@ main (int argc, char *argv[])
int do_sanity_checks = 1;
int show_version = 0;
- const char *options = "-d:P:uvshVrRZTFlt:mM:n:Np:c:";
+ const char *options = "-d:P:uvshVrRZTFlt:mM:n:Np:c:X:";
struct option long_options[] =
{
/* keep ordered by single-letter option code */
@@ -547,6 +560,7 @@ main (int argc, char *argv[])
{ "unlock", 0, 0, 'u' },
{ "version", 0, 0, 'V' },
{ "verbose", 0, 0, 'v' },
+ { "slave-driver", 1, 0, 'X' },
{ "nozombies", 0, 0, 'Z' },
{ 0, 0, 0, 0 }
};
@@ -556,6 +570,7 @@ main (int argc, char *argv[])
char *driver_name = NULL;
char **driver_args = NULL;
JSList * driver_params;
+ JSList * slave_drivers = NULL;
size_t midi_buffer_size = 0;
int driver_nargs = 1;
int i;
@@ -659,6 +674,9 @@ main (int argc, char *argv[])
show_version = 1;
break;
+ case 'X':
+ slave_drivers = jack_slist_append(slave_drivers, optarg);
+ break;
case 'Z':
nozombies = 1;
break;
@@ -769,7 +787,7 @@ main (int argc, char *argv[])
jack_cleanup_files (server_name);
/* run the server engine until it terminates */
- jack_main (desc, driver_params);
+ jack_main (desc, driver_params, slave_drivers);
/* clean up shared memory and files from this server instance */
if (verbose)