diff options
author | paul <paul@0c269be4-1314-0410-8aa9-9f06e86f4224> | 2010-01-28 15:40:35 +0000 |
---|---|---|
committer | paul <paul@0c269be4-1314-0410-8aa9-9f06e86f4224> | 2010-01-28 15:40:35 +0000 |
commit | b879a610a34d4cdb6052d1e579d0bd88827428f7 (patch) | |
tree | 020ef2c2a58cc8cb032f732594282604ff3f178f /drivers | |
parent | 439e1fca82b8f9a622b6293d12f0ddcf8f549ba9 (diff) | |
download | jack1-b879a610a34d4cdb6052d1e579d0bd88827428f7.tar.gz |
check return result of engine->set_buffer_size() in all backends, so that if the user specifies -M <insane>, we fail cleanly rather than with a segfault; update man page with comments about -M values
git-svn-id: svn+ssh://jackaudio.org/trunk/jack@3888 0c269be4-1314-0410-8aa9-9f06e86f4224
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/alsa/alsa_driver.c | 12 | ||||
-rwxr-xr-x | drivers/coreaudio/coreaudio_driver.c | 5 | ||||
-rw-r--r-- | drivers/dummy/dummy_driver.c | 10 | ||||
-rw-r--r-- | drivers/firewire/ffado_driver.c | 12 | ||||
-rw-r--r-- | drivers/freebob/freebob_driver.c | 13 | ||||
-rw-r--r-- | drivers/netjack/net_driver.c | 5 | ||||
-rw-r--r-- | drivers/oss/oss_driver.c | 24 | ||||
-rw-r--r-- | drivers/portaudio/portaudio_driver.c | 13 | ||||
-rw-r--r-- | drivers/sun/sun_driver.c | 12 |
9 files changed, 82 insertions, 24 deletions
diff --git a/drivers/alsa/alsa_driver.c b/drivers/alsa/alsa_driver.c index 51009fa..95b6946 100644 --- a/drivers/alsa/alsa_driver.c +++ b/drivers/alsa/alsa_driver.c @@ -863,8 +863,11 @@ alsa_driver_set_parameters (alsa_driver_t *driver, driver->poll_timeout = (int) floor (1.5f * driver->period_usecs); if (driver->engine) { - driver->engine->set_buffer_size (driver->engine, - driver->frames_per_cycle); + if (driver->engine->set_buffer_size (driver->engine, + driver->frames_per_cycle)) { + jack_error ("ALSA: Cannot set engine buffer size to %d (check MIDI)", driver->frames_per_cycle); + return -1; + } } return 0; @@ -1733,7 +1736,10 @@ alsa_driver_attach (alsa_driver_t *driver) jack_port_t *port; int port_flags; - driver->engine->set_buffer_size (driver->engine, driver->frames_per_cycle); + if (driver->engine->set_buffer_size (driver->engine, driver->frames_per_cycle)) { + jack_error ("ALSA: cannot set engine buffer size for %d (check MIDI)", driver->frames_per_cycle); + return -1; + } driver->engine->set_sample_rate (driver->engine, driver->frame_rate); port_flags = JackPortIsOutput|JackPortIsPhysical|JackPortIsTerminal; diff --git a/drivers/coreaudio/coreaudio_driver.c b/drivers/coreaudio/coreaudio_driver.c index 9a49a22..208b7ae 100755 --- a/drivers/coreaudio/coreaudio_driver.c +++ b/drivers/coreaudio/coreaudio_driver.c @@ -440,7 +440,10 @@ coreaudio_driver_attach(coreaudio_driver_t * driver, jack_engine_t * engine) driver->engine = engine; - driver->engine->set_buffer_size(engine, driver->frames_per_cycle); + if (driver->engine->set_buffer_size(engine, driver->frames_per_cycle)) { + jack_error ("coreaudio: cannot set engine buffer size to %d (check MIDI)", driver->frames_per_cycle); + return -1; + } driver->engine->set_sample_rate(engine, driver->frame_rate); port_flags = JackPortIsOutput | JackPortIsPhysical | JackPortIsTerminal; diff --git a/drivers/dummy/dummy_driver.c b/drivers/dummy/dummy_driver.c index ea840ae..2004e20 100644 --- a/drivers/dummy/dummy_driver.c +++ b/drivers/dummy/dummy_driver.c @@ -237,7 +237,10 @@ dummy_driver_bufsize (dummy_driver_t* driver, jack_nframes_t nframes) * 1000000.0f); /* tell the engine to change its buffer size */ - driver->engine->set_buffer_size (driver->engine, nframes); + if (driver->engine->set_buffer_size (driver->engine, nframes)) { + jack_error ("dummy: cannot set engine buffer size to %d (check MIDI)", nframes); + return -1; + } return 0; } @@ -257,7 +260,10 @@ dummy_driver_attach (dummy_driver_t *driver) unsigned int chn; int port_flags; - driver->engine->set_buffer_size (driver->engine, driver->period_size); + if (driver->engine->set_buffer_size (driver->engine, driver->period_size)) { + jack_error ("dummy: cannot set engine buffer size to %d (check MIDI)", driver->period_size); + return -1; + } driver->engine->set_sample_rate (driver->engine, driver->sample_rate); port_flags = JackPortIsOutput|JackPortIsPhysical|JackPortIsTerminal; diff --git a/drivers/firewire/ffado_driver.c b/drivers/firewire/ffado_driver.c index bafe6c0..33d4ef1 100644 --- a/drivers/firewire/ffado_driver.c +++ b/drivers/firewire/ffado_driver.c @@ -66,7 +66,10 @@ ffado_driver_attach (ffado_driver_t *driver) g_verbose=driver->engine->verbose; - driver->engine->set_buffer_size (driver->engine, driver->period_size); + if (driver->engine->set_buffer_size (driver->engine, driver->period_size)) { + jack_error ("FFADO: cannot set engine buffer size to %d (check MIDI)", driver->period_size); + return -1; + } driver->engine->set_sample_rate (driver->engine, driver->sample_rate); /* preallocate some buffers such that they don't have to be allocated @@ -679,7 +682,12 @@ ffado_driver_bufsize (ffado_driver_t* driver, jack_nframes_t nframes) */ /* tell the engine to change its buffer size */ - //driver->engine->set_buffer_size (driver->engine, nframes); +#if 0 + if (driver->engine->set_buffer_size (driver->engine, nframes)) { + jack_error ("FFADO: cannot set engine buffer size to %d (check MIDI)", nframes); + return -1; + } +#endif return -1; // unsupported } diff --git a/drivers/freebob/freebob_driver.c b/drivers/freebob/freebob_driver.c index d419e50..4f75ae6 100644 --- a/drivers/freebob/freebob_driver.c +++ b/drivers/freebob/freebob_driver.c @@ -74,7 +74,10 @@ freebob_driver_attach (freebob_driver_t *driver) g_verbose=driver->engine->verbose; driver->device_options.verbose=g_verbose; - driver->engine->set_buffer_size (driver->engine, driver->period_size); + if (driver->engine->set_buffer_size (driver->engine, driver->period_size)) { + jack_error ("FREEBOB: cannot set engine buffer size to %d (check MIDI)", driver->period_size); + return -1; + } driver->engine->set_sample_rate (driver->engine, driver->sample_rate); /* packetizer thread options */ @@ -678,8 +681,12 @@ freebob_driver_bufsize (freebob_driver_t* driver, jack_nframes_t nframes) */ /* tell the engine to change its buffer size */ - //driver->engine->set_buffer_size (driver->engine, nframes); - +#if 0 + if (driver->engine->set_buffer_size (driver->engine, nframes)) { + jack_error ("FREEBOB: cannot set engine buffer size to %d (check MIDI)", driver->period_size); + return -1; + } +#endif return -1; // unsupported } diff --git a/drivers/netjack/net_driver.c b/drivers/netjack/net_driver.c index f3ea260..e3f9f87 100644 --- a/drivers/netjack/net_driver.c +++ b/drivers/netjack/net_driver.c @@ -268,7 +268,10 @@ static int net_driver_attach (net_driver_t *driver) { netjack_driver_state_t *netj = &( driver->netj ); - driver->engine->set_buffer_size (driver->engine, netj->period_size); + if (driver->engine->set_buffer_size (driver->engine, netj->period_size)) { + jack_error ("netjack: cannot set engine buffer size to %d (check MIDI)", netj->period_size); + return -1; + } driver->engine->set_sample_rate (driver->engine, netj->sample_rate); netjack_attach( netj ); diff --git a/drivers/oss/oss_driver.c b/drivers/oss/oss_driver.c index 42226e9..2cf9572 100644 --- a/drivers/oss/oss_driver.c +++ b/drivers/oss/oss_driver.c @@ -356,7 +356,10 @@ static int oss_driver_attach (oss_driver_t *driver, jack_engine_t *engine) driver->engine = engine; - engine->set_buffer_size(engine, driver->period_size); + if (engine->set_buffer_size(engine, driver->period_size)) { + jack_error ("OSS: cannot set engine buffer size to %d (check MIDI)", driver->period_size); + return -1; + } engine->set_sample_rate(engine, driver->sample_rate); port_flags = JackPortIsOutput|JackPortIsPhysical|JackPortIsTerminal; @@ -612,8 +615,11 @@ static int oss_driver_start (oss_driver_t *driver) driver->period_usecs = ((double) driver->period_size / (double) driver->sample_rate) * 1e6; - driver->engine->set_buffer_size(driver->engine, - driver->period_size); + if (driver->engine->set_buffer_size(driver->engine, + driver->period_size)) { + jack_error ("OSS: cannot set engine buffer size to %d (check MIDI)", driver->period_size); + return -1; + } } } @@ -648,8 +654,11 @@ static int oss_driver_start (oss_driver_t *driver) driver->period_usecs = ((double) driver->period_size / (double) driver->sample_rate) * 1e6; - driver->engine->set_buffer_size(driver->engine, - driver->period_size); + if (driver->engine->set_buffer_size(driver->engine, + driver->period_size)) { + jack_error ("OSS: cannot set engine buffer size to %d (check MIDI)", driver->period_size); + return -1; + } } } @@ -906,7 +915,10 @@ static int oss_driver_bufsize (oss_driver_t *driver, jack_nframes_t nframes) oss_driver_stop(driver); set_period_size(driver, nframes); - driver->engine->set_buffer_size(driver->engine, driver->period_size); + if (driver->engine->set_buffer_size(driver->engine, driver->period_size)) { + jack_error ("OSS: cannot set engine buffer size to %d (check MIDI)", driver->period_size); + return -1; + } jack_info("oss_driver: period size update: %u", nframes); oss_driver_start(driver); diff --git a/drivers/portaudio/portaudio_driver.c b/drivers/portaudio/portaudio_driver.c index c11aee9..7ed0637 100644 --- a/drivers/portaudio/portaudio_driver.c +++ b/drivers/portaudio/portaudio_driver.c @@ -135,7 +135,10 @@ portaudio_driver_attach (portaudio_driver_t *driver, jack_engine_t *engine) driver->engine = engine; - driver->engine->set_buffer_size (engine, driver->frames_per_cycle); + if (driver->engine->set_buffer_size (engine, driver->frames_per_cycle)) { + jack_error ("portaudio: cannot set engine buffer size to %d (check MIDI)", driver->frames_per_cycle); + return -1; + } driver->engine->set_sample_rate (engine, driver->frame_rate); port_flags = JackPortIsOutput|JackPortIsPhysical|JackPortIsTerminal; @@ -323,8 +326,12 @@ portaudio_driver_set_parameters (portaudio_driver_t* driver, /* tell engine about buffer size */ if (driver->engine) { - driver->engine->set_buffer_size ( - driver->engine, driver->frames_per_cycle); + if (driver->engine->set_buffer_size ( + driver->engine, driver->frames_per_cycle)) { + jack_error ("portaudio: cannot set engine buffer size to %d (check MIDI)", driver->frames_per_cycle); + return -1; + } + } return 0; diff --git a/drivers/sun/sun_driver.c b/drivers/sun/sun_driver.c index 88a81e1..074733b 100644 --- a/drivers/sun/sun_driver.c +++ b/drivers/sun/sun_driver.c @@ -565,7 +565,10 @@ sun_driver_attach (sun_driver_t *driver) char channel_name[64]; jack_port_t *port; - driver->engine->set_buffer_size(driver->engine, driver->period_size); + if (driver->engine->set_buffer_size(driver->engine, driver->period_size)) { + jack_error ("sun_driver: cannot set engine buffer size to %d (check MIDI)", driver->period_size); + return -1; + } driver->engine->set_sample_rate(driver->engine, driver->sample_rate); port_flags = JackPortIsOutput|JackPortIsPhysical|JackPortIsTerminal; @@ -1002,8 +1005,11 @@ sun_driver_set_parameters (sun_driver_t *driver) set_period_size (driver, period_size); if (driver->engine) - driver->engine->set_buffer_size(driver->engine, - driver->period_size); + if (driver->engine->set_buffer_size(driver->engine, + driver->period_size)) { + jack_error ("sun_driver: cannot set engine buffer size to %d (check MIDI)", driver->period_size); + return -1; + } } if (driver->infd >= 0 && driver->capture_channels > 0) |