From 855ceff1f7718f5180eb65d73888504bbc4f70d1 Mon Sep 17 00:00:00 2001 From: pieterpalmers Date: Thu, 1 Feb 2007 15:19:00 +0000 Subject: [PATCH] * fix/extension of 0.102.30 commit freebob_driver.c: * fix the behavior of -P and -C to better reflect their ALSA backend counterpart's behavior. * introduce -D (duplex) as an alias for "-P -C", for completeness. git-svn-id: svn+ssh://jackaudio.org/trunk/jack@1006 0c269be4-1314-0410-8aa9-9f06e86f4224 --- drivers/freebob/freebob_driver.c | 38 +++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/drivers/freebob/freebob_driver.c b/drivers/freebob/freebob_driver.c index c2237fb..a49c7c3 100644 --- a/drivers/freebob/freebob_driver.c +++ b/drivers/freebob/freebob_driver.c @@ -1001,7 +1001,7 @@ driver_get_descriptor () desc = calloc (1, sizeof (jack_driver_desc_t)); strcpy (desc->name, "freebob"); - desc->nparams = 10; + desc->nparams = 11; params = calloc (desc->nparams, sizeof (jack_driver_param_desc_t)); desc->params = params; @@ -1041,19 +1041,27 @@ driver_get_descriptor () i++; strcpy (params[i].name, "capture"); params[i].character = 'C'; - params[i].type = JackDriverParamUInt; - params[i].value.ui = 1U; + params[i].type = JackDriverParamBool; + params[i].value.i = 0; strcpy (params[i].short_desc, "Provide capture ports."); strcpy (params[i].long_desc, params[i].short_desc); i++; strcpy (params[i].name, "playback"); params[i].character = 'P'; - params[i].type = JackDriverParamUInt; - params[i].value.ui = 1U; + params[i].type = JackDriverParamBool; + params[i].value.i = 0; strcpy (params[i].short_desc, "Provide playback ports."); strcpy (params[i].long_desc, params[i].short_desc); + i++; + strcpy (params[i].name, "duplex"); + params[i].character = 'D'; + params[i].type = JackDriverParamBool; + params[i].value.i = 1; + strcpy (params[i].short_desc, "Provide both capture and playback ports."); + strcpy (params[i].long_desc, params[i].short_desc); + i++; strcpy (params[i].name, "input-latency"); params[i].character = 'I'; @@ -1118,8 +1126,8 @@ driver_initialize (jack_client_t *client, JSList * params) cmlparams.buffer_size=3; cmlparams.port=0; cmlparams.node_id=-1; - cmlparams.playback_ports=1; - cmlparams.capture_ports=1; + cmlparams.playback_ports=0; + cmlparams.capture_ports=0; cmlparams.playback_frame_latency=0; cmlparams.capture_frame_latency=0; @@ -1145,10 +1153,14 @@ driver_initialize (jack_client_t *client, JSList * params) cmlparams.sample_rate_set = 1; break; case 'C': - cmlparams.capture_ports = param->value.ui; + cmlparams.capture_ports = 1; break; case 'P': - cmlparams.playback_ports = param->value.ui; + cmlparams.playback_ports = 1; + break; + case 'D': + cmlparams.capture_ports = 1; + cmlparams.playback_ports = 1; break; case 'I': cmlparams.capture_frame_latency = param->value.ui; @@ -1163,7 +1175,13 @@ driver_initialize (jack_client_t *client, JSList * params) break; } } - + + /* duplex is the default */ + if (!cmlparams.playback_ports && !cmlparams.capture_ports) { + cmlparams.playback_ports = TRUE; + cmlparams.capture_ports = TRUE; + } + nbitems=sscanf(device_name,"hw:%u,%u",&port,&node_id); if (nbitems<2) { nbitems=sscanf(device_name,"hw:%u",&port);