summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorpaul <paul@0c269be4-1314-0410-8aa9-9f06e86f4224>2010-01-28 15:40:35 +0000
committerpaul <paul@0c269be4-1314-0410-8aa9-9f06e86f4224>2010-01-28 15:40:35 +0000
commitb879a610a34d4cdb6052d1e579d0bd88827428f7 (patch)
tree020ef2c2a58cc8cb032f732594282604ff3f178f /drivers
parent439e1fca82b8f9a622b6293d12f0ddcf8f549ba9 (diff)
downloadjack1-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.c12
-rwxr-xr-xdrivers/coreaudio/coreaudio_driver.c5
-rw-r--r--drivers/dummy/dummy_driver.c10
-rw-r--r--drivers/firewire/ffado_driver.c12
-rw-r--r--drivers/freebob/freebob_driver.c13
-rw-r--r--drivers/netjack/net_driver.c5
-rw-r--r--drivers/oss/oss_driver.c24
-rw-r--r--drivers/portaudio/portaudio_driver.c13
-rw-r--r--drivers/sun/sun_driver.c12
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)