Browse Source

Version 0.109.4 : Nedko Arnaudov log patch

git-svn-id: svn+ssh://jackaudio.org/trunk/jack@1092 0c269be4-1314-0410-8aa9-9f06e86f4224
tags/0.115.6
sletz 17 years ago
parent
commit
f0bfb84688
21 changed files with 271 additions and 230 deletions
  1. +1
    -1
      configure.ac
  2. +40
    -40
      drivers/alsa-midi/alsa_rawmidi.c
  3. +29
    -29
      drivers/alsa/alsa_driver.c
  4. +1
    -1
      drivers/alsa/hammerfall.c
  5. +5
    -5
      drivers/alsa/usx2y.c
  6. +3
    -3
      drivers/coreaudio/coreaudio_driver.c
  7. +4
    -4
      drivers/dummy/dummy_driver.c
  8. +8
    -8
      drivers/oss/oss_driver.c
  9. +9
    -9
      drivers/portaudio/portaudio_driver.c
  10. +2
    -0
      jack/internal.h
  11. +15
    -0
      jack/jack.h
  12. +11
    -11
      jackd/clientengine.c
  13. +65
    -66
      jackd/engine.c
  14. +17
    -18
      jackd/jackd.c
  15. +22
    -22
      jackd/transengine.c
  16. +31
    -5
      libjack/client.c
  17. +3
    -3
      libjack/messagebuffer.c
  18. +1
    -1
      libjack/shm.c
  19. +1
    -1
      libjack/simd.c
  20. +1
    -1
      libjack/transclient.c
  21. +2
    -2
      libjack/unlock.c

+ 1
- 1
configure.ac View File

@@ -17,7 +17,7 @@ dnl changes are made
dnl --- dnl ---
JACK_MAJOR_VERSION=0 JACK_MAJOR_VERSION=0
JACK_MINOR_VERSION=109 JACK_MINOR_VERSION=109
JACK_MICRO_VERSION=3
JACK_MICRO_VERSION=4


dnl --- dnl ---
dnl HOWTO: updating the jack protocol version dnl HOWTO: updating the jack protocol version


+ 40
- 40
drivers/alsa-midi/alsa_rawmidi.c View File

@@ -218,7 +218,7 @@ int stream_init(midi_stream_t *s, alsa_rawmidi_t *midi, const char *name)
s->name = name; s->name = name;
if (pipe(s->wake_pipe)==-1) { if (pipe(s->wake_pipe)==-1) {
s->wake_pipe[0] = -1; s->wake_pipe[0] = -1;
error_log("pipe() in stream_init(%s) failed: %s\n", name, strerror(errno));
error_log("pipe() in stream_init(%s) failed: %s", name, strerror(errno));
return -errno; return -errno;
} }
s->jack.new_ports = jack_ringbuffer_create(sizeof(midi_port_t*)*MAX_PORTS); s->jack.new_ports = jack_ringbuffer_create(sizeof(midi_port_t*)*MAX_PORTS);
@@ -256,7 +256,7 @@ alsa_midi_t* alsa_rawmidi_new(jack_client_t *jack)
goto fail_0; goto fail_0;
midi->client = jack; midi->client = jack;
if (pipe(midi->scan.wake_pipe)==-1) { if (pipe(midi->scan.wake_pipe)==-1) {
error_log("pipe() in alsa_midi_new failed: %s\n", strerror(errno));
error_log("pipe() in alsa_midi_new failed: %s", strerror(errno));
goto fail_1; goto fail_1;
} }


@@ -526,7 +526,7 @@ void alsa_get_id(alsa_id_t *id, snd_rawmidi_info_t *info)
static inline static inline
void alsa_error(const char *func, int err) void alsa_error(const char *func, int err)
{ {
error_log("%s() failed\n", snd_strerror(err));
error_log("%s() failed", snd_strerror(err));
} }


typedef struct { typedef struct {
@@ -555,14 +555,14 @@ void scan_cycle(alsa_rawmidi_t *midi)
scan_t scan; scan_t scan;
midi_port_t **ports; midi_port_t **ports;


//debug_log("scan: cleanup\n");
//debug_log("scan: cleanup");
scan_cleanup(midi); scan_cleanup(midi);


scan.midi = midi; scan.midi = midi;
scan.iterator = &midi->scan.ports; scan.iterator = &midi->scan.ports;
snd_rawmidi_info_alloca(&scan.info); snd_rawmidi_info_alloca(&scan.info);


//debug_log("scan: rescan\n");
//debug_log("scan: rescan");
while ((err = snd_card_next(&card))>=0 && card>=0) { while ((err = snd_card_next(&card))>=0 && card>=0) {
char name[32]; char name[32];
snprintf(name, sizeof(name), "hw:%d", card); snprintf(name, sizeof(name), "hw:%d", card);
@@ -663,7 +663,7 @@ midi_port_t** scan_port_add(scan_t *scan, const alsa_id_t *id, midi_port_t **lis


port->next = *list; port->next = *list;
*list = port; *list = port;
error_log("scan: added port %s %s\n", port->dev, port->name);
error_log("scan: added port %s %s", port->dev, port->name);
return &port->next; return &port->next;
} }


@@ -687,7 +687,7 @@ midi_port_t** scan_port_open(alsa_rawmidi_t *midi, midi_port_t **list)
port->state = PORT_ADDED_TO_JACK; port->state = PORT_ADDED_TO_JACK;
jack_ringbuffer_write(str->jack.new_ports, (char*) &port, sizeof(port)); jack_ringbuffer_write(str->jack.new_ports, (char*) &port, sizeof(port));


error_log("scan: opened port %s %s\n", port->dev, port->name);
error_log("scan: opened port %s %s", port->dev, port->name);
return &port->next; return &port->next;


fail_2: fail_2:
@@ -696,7 +696,7 @@ midi_port_t** scan_port_open(alsa_rawmidi_t *midi, midi_port_t **list)
midi_port_close(midi, port); midi_port_close(midi, port);
fail_0: fail_0:
*list = port->next; *list = port->next;
error_log("scan: can't open port %s %s\n", port->dev, port->name);
error_log("scan: can't open port %s %s", port->dev, port->name);
free(port); free(port);
return list; return list;
} }
@@ -706,7 +706,7 @@ midi_port_t** scan_port_del(alsa_rawmidi_t *midi, midi_port_t **list)
{ {
midi_port_t *port = *list; midi_port_t *port = *list;
if (port->state == PORT_REMOVED_FROM_JACK) { if (port->state == PORT_REMOVED_FROM_JACK) {
error_log("scan: deleted port %s %s\n", port->dev, port->name);
error_log("scan: deleted port %s %s", port->dev, port->name);
*list = port->next; *list = port->next;
if (port->id.id[2] ) if (port->id.id[2] )
(midi->out.port_close)(midi, port); (midi->out.port_close)(midi, port);
@@ -716,7 +716,7 @@ midi_port_t** scan_port_del(alsa_rawmidi_t *midi, midi_port_t **list)
free(port); free(port);
return list; return list;
} else { } else {
//debug_log("can't delete port %s, wrong state: %d\n", port->name, (int)port->state);
//debug_log("can't delete port %s, wrong state: %d", port->name, (int)port->state);
return &port->next; return &port->next;
} }
} }
@@ -730,7 +730,7 @@ void* scan_thread(void *arg)
wakeup.events = POLLIN|POLLERR|POLLNVAL; wakeup.events = POLLIN|POLLERR|POLLNVAL;
while (midi->keep_walking) { while (midi->keep_walking) {
int res; int res;
//error_log("scanning....\n");
//error_log("scanning....");
scan_cycle(midi); scan_cycle(midi);
res = poll(&wakeup, 1, 2000); res = poll(&wakeup, 1, 2000);
if (res>0) { if (res>0) {
@@ -776,7 +776,7 @@ void jack_process(midi_stream_t *str, jack_nframes_t nframes)
if (proc.frame_time + proc.nframes < cur_frames) { if (proc.frame_time + proc.nframes < cur_frames) {
int periods_lost = (cur_frames - proc.frame_time) / proc.nframes; int periods_lost = (cur_frames - proc.frame_time) / proc.nframes;
proc.frame_time += periods_lost * proc.nframes; proc.frame_time += periods_lost * proc.nframes;
debug_log("xrun detected: %d periods lost\n", periods_lost);
debug_log("xrun detected: %d periods lost", periods_lost);
} }


// process existing ports // process existing ports
@@ -802,7 +802,7 @@ void jack_process(midi_stream_t *str, jack_nframes_t nframes)
++w; ++w;
} }
if (str->jack.nports != w) if (str->jack.nports != w)
debug_log("jack_%s: nports %d -> %d\n", str->name, str->jack.nports, w);
debug_log("jack_%s: nports %d -> %d", str->name, str->jack.nports, w);
str->jack.nports = w; str->jack.nports = w;


jack_add_ports(str); // it makes no sense to add them earlier since they have no data yet jack_add_ports(str); // it makes no sense to add them earlier since they have no data yet
@@ -828,7 +828,7 @@ void *midi_thread(void *arg)
pfds[0].events = POLLIN|POLLERR|POLLNVAL; pfds[0].events = POLLIN|POLLERR|POLLNVAL;
npfds = 1; npfds = 1;


//debug_log("midi_thread(%s): enter\n", str->name);
//debug_log("midi_thread(%s): enter", str->name);


while (midi->keep_walking) { while (midi->keep_walking) {
int poll_timeout; int poll_timeout;
@@ -850,13 +850,13 @@ void *midi_thread(void *arg)
clock_nanosleep(CLOCK_MONOTONIC, 0, &ts, NULL); clock_nanosleep(CLOCK_MONOTONIC, 0, &ts, NULL);
} }
int res = poll((struct pollfd*)&pfds, npfds, poll_timeout); int res = poll((struct pollfd*)&pfds, npfds, poll_timeout);
//debug_log("midi_thread(%s): poll exit: %d\n", str->name, res);
//debug_log("midi_thread(%s): poll exit: %d", str->name, res);
if (!midi->keep_walking) if (!midi->keep_walking)
break; break;
if (res < 0) { if (res < 0) {
if (errno == EINTR) if (errno == EINTR)
continue; continue;
error_log("midi_thread(%s) poll failed: %s\n", str->name, strerror(errno));
error_log("midi_thread(%s) poll failed: %s", str->name, strerror(errno));
break; break;
} }


@@ -873,7 +873,7 @@ void *midi_thread(void *arg)
midi_port_t *port; midi_port_t *port;
jack_ringbuffer_read(str->midi.new_ports, (char*)&port, sizeof(port)); jack_ringbuffer_read(str->midi.new_ports, (char*)&port, sizeof(port));
str->midi.ports[str->midi.nports++] = port; str->midi.ports[str->midi.nports++] = port;
debug_log("midi_thread(%s): added port %s\n", str->name, port->name);
debug_log("midi_thread(%s): added port %s", str->name, port->name);
} }


// if (res == 0) // if (res == 0)
@@ -901,10 +901,10 @@ void *midi_thread(void *arg)
++wp; ++wp;
} }
if (str->midi.nports != wp) if (str->midi.nports != wp)
debug_log("midi_%s: nports %d -> %d\n", str->name, str->midi.nports, wp);
debug_log("midi_%s: nports %d -> %d", str->name, str->midi.nports, wp);
str->midi.nports = wp; str->midi.nports = wp;
if (npfds != w) if (npfds != w)
debug_log("midi_%s: npfds %d -> %d\n", str->name, npfds, w);
debug_log("midi_%s: npfds %d -> %d", str->name, npfds, w);
npfds = w; npfds = w;


/* /*
@@ -913,16 +913,16 @@ void *midi_thread(void *arg)
* So, zero timeout will not cause busy-looping. * So, zero timeout will not cause busy-looping.
*/ */
if (proc.next_time < proc.cur_time) { if (proc.next_time < proc.cur_time) {
debug_log("%s: late: next_time = %d, cur_time = %d\n", str->name, (int)proc.next_time, (int)proc.cur_time);
debug_log("%s: late: next_time = %d, cur_time = %d", str->name, (int)proc.next_time, (int)proc.cur_time);
wait_nsec = 0; // we are late wait_nsec = 0; // we are late
} else if (proc.next_time != NFRAMES_INF) { } else if (proc.next_time != NFRAMES_INF) {
jack_time_t wait_frames = proc.next_time - proc.cur_time; jack_time_t wait_frames = proc.next_time - proc.cur_time;
jack_nframes_t rate = jack_get_sample_rate(midi->client); jack_nframes_t rate = jack_get_sample_rate(midi->client);
wait_nsec = (wait_frames * (1000*1000*1000)) / rate; wait_nsec = (wait_frames * (1000*1000*1000)) / rate;
debug_log("midi_%s: timeout = %d\n", str->name, (int)wait_frames);
debug_log("midi_%s: timeout = %d", str->name, (int)wait_frames);
} else } else
wait_nsec = 1000*1000*1000; wait_nsec = 1000*1000*1000;
//debug_log("midi_thread(%s): wait_nsec = %lld\n", str->name, wait_nsec);
//debug_log("midi_thread(%s): wait_nsec = %lld", str->name, wait_nsec);
} }
return NULL; return NULL;
} }
@@ -935,17 +935,17 @@ int midi_is_ready(process_midi_t *proc)
unsigned short revents = 0; unsigned short revents = 0;
int res = snd_rawmidi_poll_descriptors_revents(port->rawmidi, proc->rpfds, port->npfds, &revents); int res = snd_rawmidi_poll_descriptors_revents(port->rawmidi, proc->rpfds, port->npfds, &revents);
if (res) { if (res) {
error_log("snd_rawmidi_poll_descriptors_revents failed on port %s with: %s\n", port->name, snd_strerror(res));
error_log("snd_rawmidi_poll_descriptors_revents failed on port %s with: %s", port->name, snd_strerror(res));
return 0; return 0;
} }


if (revents & ~proc->mode) { if (revents & ~proc->mode) {
debug_log("midi: port %s failed\n", port->name);
debug_log("midi: port %s failed", port->name);
return 0; return 0;
} }
if (revents & proc->mode) { if (revents & proc->mode) {
port->is_ready = 1; port->is_ready = 1;
debug_log("midi: is_ready %s\n", port->name);
debug_log("midi: is_ready %s", port->name);
} }
} }
return 1; return 1;
@@ -958,7 +958,7 @@ int midi_update_pfds(process_midi_t *proc)
if (port->npfds == 0) { if (port->npfds == 0) {
port->npfds = snd_rawmidi_poll_descriptors_count(port->rawmidi); port->npfds = snd_rawmidi_poll_descriptors_count(port->rawmidi);
if (port->npfds > proc->max_pfds) { if (port->npfds > proc->max_pfds) {
debug_log("midi: not enough pfds for port %s\n", port->name);
debug_log("midi: not enough pfds for port %s", port->name);
return 0; return 0;
} }
snd_rawmidi_poll_descriptors(port->rawmidi, proc->wpfds, port->npfds); snd_rawmidi_poll_descriptors(port->rawmidi, proc->wpfds, port->npfds);
@@ -1019,7 +1019,7 @@ void do_jack_input(process_jack_t *p)
int avail = todo < vec[i].len ? todo : vec[i].len; int avail = todo < vec[i].len ? todo : vec[i].len;
int done = midi_unpack_buf(&port->unpack, (unsigned char*)vec[i].buf, avail, p->buffer, time); int done = midi_unpack_buf(&port->unpack, (unsigned char*)vec[i].buf, avail, p->buffer, time);
if (done != avail) { if (done != avail) {
debug_log("jack_in: buffer overflow in port %s\n", port->base.name);
debug_log("jack_in: buffer overflow in port %s", port->base.name);
break; break;
} }
todo -= done; todo -= done;
@@ -1046,14 +1046,14 @@ int do_midi_input(process_midi_t *proc)
if (jack_ringbuffer_write_space(port->base.event_ring) < sizeof(event_head_t) || vec[0].len < 1) { if (jack_ringbuffer_write_space(port->base.event_ring) < sizeof(event_head_t) || vec[0].len < 1) {
port->overruns++; port->overruns++;
if (port->base.npfds) if (port->base.npfds)
debug_log("midi_in: internal overflow on %s\n", port->base.name);
debug_log("midi_in: internal overflow on %s", port->base.name);
// remove from poll to prevent busy-looping // remove from poll to prevent busy-looping
port->base.npfds = 0; port->base.npfds = 0;
return 1; return 1;
} }
res = snd_rawmidi_read(port->base.rawmidi, vec[0].buf, vec[0].len); res = snd_rawmidi_read(port->base.rawmidi, vec[0].buf, vec[0].len);
if (res < 0 && res != -EWOULDBLOCK) { if (res < 0 && res != -EWOULDBLOCK) {
error_log("midi_in: reading from port %s failed: %s\n", port->base.name, snd_strerror(res));
error_log("midi_in: reading from port %s failed: %s", port->base.name, snd_strerror(res));
return 0; return 0;
} else if (res > 0) { } else if (res > 0) {
event_head_t event; event_head_t event;
@@ -1061,7 +1061,7 @@ int do_midi_input(process_midi_t *proc)
event.size = res; event.size = res;
event.overruns = port->overruns; event.overruns = port->overruns;
port->overruns = 0; port->overruns = 0;
debug_log("midi_in: read %d bytes at %d\n", (int)event.size, (int)event.time);
debug_log("midi_in: read %d bytes at %d", (int)event.size, (int)event.time);
jack_ringbuffer_write_advance(port->base.data_ring, event.size); jack_ringbuffer_write_advance(port->base.data_ring, event.size);
jack_ringbuffer_write(port->base.event_ring, (char*)&event, sizeof(event)); jack_ringbuffer_write(port->base.event_ring, (char*)&event, sizeof(event));
} }
@@ -1099,7 +1099,7 @@ void do_jack_output(process_jack_t *proc)
int nevents = jack_midi_get_event_count(proc->buffer); int nevents = jack_midi_get_event_count(proc->buffer);
int i; int i;
if (nevents) if (nevents)
debug_log("jack_out: %d events in %s\n", nevents, port->base.name);
debug_log("jack_out: %d events in %s", nevents, port->base.name);
for (i=0; i<nevents; ++i) { for (i=0; i<nevents; ++i) {
jack_midi_event_t event; jack_midi_event_t event;
event_head_t hdr; event_head_t hdr;
@@ -1107,7 +1107,7 @@ void do_jack_output(process_jack_t *proc)
jack_midi_event_get(&event, proc->buffer, i); jack_midi_event_get(&event, proc->buffer, i);


if (jack_ringbuffer_write_space(port->base.data_ring) < event.size || jack_ringbuffer_write_space(port->base.event_ring) < sizeof(hdr)) { if (jack_ringbuffer_write_space(port->base.data_ring) < event.size || jack_ringbuffer_write_space(port->base.event_ring) < sizeof(hdr)) {
debug_log("jack_out: output buffer overflow on %s\n", port->base.name);
debug_log("jack_out: output buffer overflow on %s", port->base.name);
break; break;
} }


@@ -1118,7 +1118,7 @@ void do_jack_output(process_jack_t *proc)
hdr.time = proc->frame_time + event.time + proc->nframes; hdr.time = proc->frame_time + event.time + proc->nframes;
hdr.size = event.size; hdr.size = event.size;
jack_ringbuffer_write(port->base.event_ring, (char*)&hdr, sizeof(hdr)); jack_ringbuffer_write(port->base.event_ring, (char*)&hdr, sizeof(hdr));
debug_log("jack_out: sent %d-byte event at %ld\n", (int)event.size, (long)event.time);
debug_log("jack_out: sent %d-byte event at %ld", (int)event.size, (long)event.time);
} }
} }


@@ -1139,16 +1139,16 @@ int do_midi_output(process_midi_t *proc)
port->next_event.size = 0; port->next_event.size = 0;
break; break;
} else } else
debug_log("midi_out: at %ld got %d bytes for %ld\n", (long)proc->cur_time, (int)port->next_event.size, (long)port->next_event.time);
debug_log("midi_out: at %ld got %d bytes for %ld", (long)proc->cur_time, (int)port->next_event.size, (long)port->next_event.time);
} }
if (port->todo) if (port->todo)
debug_log("midi_out: todo = %d at %ld\n", (int)port->todo, (long)proc->cur_time);
debug_log("midi_out: todo = %d at %ld", (int)port->todo, (long)proc->cur_time);


// calc next wakeup time // calc next wakeup time
if (!port->todo && port->next_event.time && port->next_event.time < proc->next_time) { if (!port->todo && port->next_event.time && port->next_event.time < proc->next_time) {
proc->next_time = port->next_event.time; proc->next_time = port->next_event.time;
debug_log("midi_out: next_time = %ld\n", (long)proc->next_time);
debug_log("midi_out: next_time = %ld", (long)proc->next_time);
} }


if (port->todo && port->base.is_ready) { if (port->todo && port->base.is_ready) {
@@ -1165,15 +1165,15 @@ int do_midi_output(process_midi_t *proc)
res = snd_rawmidi_write(port->base.rawmidi, vec[0].buf, size); res = snd_rawmidi_write(port->base.rawmidi, vec[0].buf, size);
if (res > 0) { if (res > 0) {
jack_ringbuffer_read_advance(port->base.data_ring, res); jack_ringbuffer_read_advance(port->base.data_ring, res);
debug_log("midi_out: written %d bytes to %s\n", res, port->base.name);
debug_log("midi_out: written %d bytes to %s", res, port->base.name);
port->todo -= res; port->todo -= res;
worked = 1; worked = 1;
} else if (res == -EWOULDBLOCK) { } else if (res == -EWOULDBLOCK) {
port->base.is_ready = 0; port->base.is_ready = 0;
debug_log("midi_out: -EWOULDBLOCK on %s\n", port->base.name);
debug_log("midi_out: -EWOULDBLOCK on %s", port->base.name);
return 1; return 1;
} else { } else {
error_log("midi_out: writing to port %s failed: %s\n", port->base.name, snd_strerror(res));
error_log("midi_out: writing to port %s failed: %s", port->base.name, snd_strerror(res));
return 0; return 0;
} }
snd_rawmidi_drain(port->base.rawmidi); snd_rawmidi_drain(port->base.rawmidi);
@@ -1186,7 +1186,7 @@ int do_midi_output(process_midi_t *proc)
if (!port->todo) { if (!port->todo) {
int i; int i;
if (worked) if (worked)
debug_log("midi_out: relaxing on %s\n", port->base.name);
debug_log("midi_out: relaxing on %s", port->base.name);
for (i=0; i<port->base.npfds; ++i) for (i=0; i<port->base.npfds; ++i)
proc->wpfds[i].events &= ~POLLOUT; proc->wpfds[i].events &= ~POLLOUT;
} else { } else {


+ 29
- 29
drivers/alsa/alsa_driver.c View File

@@ -115,7 +115,7 @@ alsa_driver_check_card_type (alsa_driver_t *driver)
char tmp[5]; char tmp[5];
strncpy(tmp,strstr(driver->alsa_name_playback,"hw"),4); strncpy(tmp,strstr(driver->alsa_name_playback,"hw"),4);
tmp[4]='\0'; tmp[4]='\0';
printf("control device %s\n",tmp);
jack_info("control device %s",tmp);
ctl_name = strdup(tmp); ctl_name = strdup(tmp);
} else { } else {
ctl_name = strdup(driver->alsa_name_playback); ctl_name = strdup(driver->alsa_name_playback);
@@ -243,21 +243,21 @@ alsa_driver_setup_io_function_pointers (alsa_driver_t *driver)


switch (driver->dither) { switch (driver->dither) {
case Rectangular: case Rectangular:
printf("Rectangular dithering at 16 bits\n");
jack_info("Rectangular dithering at 16 bits");
driver->write_via_copy = driver->quirk_bswap? driver->write_via_copy = driver->quirk_bswap?
sample_move_dither_rect_d16_sSs: sample_move_dither_rect_d16_sSs:
sample_move_dither_rect_d16_sS; sample_move_dither_rect_d16_sS;
break; break;


case Triangular: case Triangular:
printf("Triangular dithering at 16 bits\n");
jack_info("Triangular dithering at 16 bits");
driver->write_via_copy = driver->quirk_bswap? driver->write_via_copy = driver->quirk_bswap?
sample_move_dither_tri_d16_sSs: sample_move_dither_tri_d16_sSs:
sample_move_dither_tri_d16_sS; sample_move_dither_tri_d16_sS;
break; break;


case Shaped: case Shaped:
printf("Noise-shaped dithering at 16 bits\n");
jack_info("Noise-shaped dithering at 16 bits");
driver->write_via_copy = driver->quirk_bswap? driver->write_via_copy = driver->quirk_bswap?
sample_move_dither_shaped_d16_sSs: sample_move_dither_shaped_d16_sSs:
sample_move_dither_shaped_d16_sS; sample_move_dither_shaped_d16_sS;
@@ -279,21 +279,21 @@ alsa_driver_setup_io_function_pointers (alsa_driver_t *driver)


switch (driver->dither) { switch (driver->dither) {
case Rectangular: case Rectangular:
printf("Rectangular dithering at 16 bits\n");
jack_info("Rectangular dithering at 16 bits");
driver->write_via_copy = driver->quirk_bswap? driver->write_via_copy = driver->quirk_bswap?
sample_move_dither_rect_d24_sSs: sample_move_dither_rect_d24_sSs:
sample_move_dither_rect_d24_sS; sample_move_dither_rect_d24_sS;
break; break;


case Triangular: case Triangular:
printf("Triangular dithering at 16 bits\n");
jack_info("Triangular dithering at 16 bits");
driver->write_via_copy = driver->quirk_bswap? driver->write_via_copy = driver->quirk_bswap?
sample_move_dither_tri_d24_sSs: sample_move_dither_tri_d24_sSs:
sample_move_dither_tri_d24_sS; sample_move_dither_tri_d24_sS;
break; break;


case Shaped: case Shaped:
printf("Noise-shaped dithering at 16 bits\n");
jack_info("Noise-shaped dithering at 16 bits");
driver->write_via_copy = driver->quirk_bswap? driver->write_via_copy = driver->quirk_bswap?
sample_move_dither_shaped_d24_sSs: sample_move_dither_shaped_d24_sSs:
sample_move_dither_shaped_d24_sS; sample_move_dither_shaped_d24_sS;
@@ -315,21 +315,21 @@ alsa_driver_setup_io_function_pointers (alsa_driver_t *driver)
switch (driver->dither) { switch (driver->dither) {
case Rectangular: case Rectangular:
printf("Rectangular dithering at 16 bits\n");
jack_info("Rectangular dithering at 16 bits");
driver->write_via_copy = driver->quirk_bswap? driver->write_via_copy = driver->quirk_bswap?
sample_move_dither_rect_d32u24_sSs: sample_move_dither_rect_d32u24_sSs:
sample_move_dither_rect_d32u24_sS; sample_move_dither_rect_d32u24_sS;
break; break;


case Triangular: case Triangular:
printf("Triangular dithering at 16 bits\n");
jack_info("Triangular dithering at 16 bits");
driver->write_via_copy = driver->quirk_bswap? driver->write_via_copy = driver->quirk_bswap?
sample_move_dither_tri_d32u24_sSs: sample_move_dither_tri_d32u24_sSs:
sample_move_dither_tri_d32u24_sS; sample_move_dither_tri_d32u24_sS;
break; break;


case Shaped: case Shaped:
printf("Noise-shaped dithering at 16 bits\n");
jack_info("Noise-shaped dithering at 16 bits");
driver->write_via_copy = driver->quirk_bswap? driver->write_via_copy = driver->quirk_bswap?
sample_move_dither_shaped_d32u24_sSs: sample_move_dither_shaped_d32u24_sSs:
sample_move_dither_shaped_d32u24_sS; sample_move_dither_shaped_d32u24_sS;
@@ -436,7 +436,7 @@ alsa_driver_configure_stream (alsa_driver_t *driver, char *device_name,
} else { } else {
driver->quirk_bswap = 0; driver->quirk_bswap = 0;
} }
jack_error ("ALSA: final selected sample format for %s: %s", stream_name, formats[format].Name);
jack_info ("ALSA: final selected sample format for %s: %s", stream_name, formats[format].Name);
break; break;
} }
} }
@@ -514,7 +514,7 @@ alsa_driver_configure_stream (alsa_driver_t *driver, char *device_name,
stream_name); stream_name);
return -1; return -1;
} }
jack_error ("ALSA: use %d periods for %s", *nperiodsp, stream_name);
jack_info ("ALSA: use %d periods for %s", *nperiodsp, stream_name);
if (!jack_power_of_two(driver->frames_per_cycle)) { if (!jack_power_of_two(driver->frames_per_cycle)) {
jack_error("JACK: frames must be a power of two " jack_error("JACK: frames must be a power of two "
@@ -567,7 +567,7 @@ alsa_driver_configure_stream (alsa_driver_t *driver, char *device_name,
} }


#if 0 #if 0
fprintf (stderr, "set silence size to %lu * %lu = %lu\n",
jack_info ("set silence size to %lu * %lu = %lu",
driver->frames_per_cycle, *nperiodsp, driver->frames_per_cycle, *nperiodsp,
driver->frames_per_cycle * *nperiodsp); driver->frames_per_cycle * *nperiodsp);


@@ -621,8 +621,8 @@ alsa_driver_set_parameters (alsa_driver_t *driver,
driver->frames_per_cycle = frames_per_cycle; driver->frames_per_cycle = frames_per_cycle;
driver->user_nperiods = user_nperiods; driver->user_nperiods = user_nperiods;


fprintf (stderr, "configuring for %" PRIu32 "Hz, period = %"
PRIu32 " frames (%.1f ms), buffer = %" PRIu32 " periods\n",
jack_info ("configuring for %" PRIu32 "Hz, period = %"
PRIu32 " frames (%.1f ms), buffer = %" PRIu32 " periods",
rate, frames_per_cycle, (((float)frames_per_cycle / (float) rate) * 1000.0f), user_nperiods); rate, frames_per_cycle, (((float)frames_per_cycle / (float) rate) * 1000.0f), user_nperiods);
if (driver->capture_handle) { if (driver->capture_handle) {
@@ -1299,7 +1299,7 @@ alsa_driver_wait (alsa_driver_t *driver, int extra_fd, int *status, float
if (poll_result < 0) { if (poll_result < 0) {


if (errno == EINTR) { if (errno == EINTR) {
printf ("poll interrupt\n");
jack_info ("poll interrupt");
// this happens mostly when run // this happens mostly when run
// under gdb, or when exiting due to a signal // under gdb, or when exiting due to a signal
if (under_gdb) { if (under_gdb) {
@@ -1329,8 +1329,8 @@ alsa_driver_wait (alsa_driver_t *driver, int extra_fd, int *status, float
} }


#ifdef DEBUG_WAKEUP #ifdef DEBUG_WAKEUP
fprintf (stderr, "%" PRIu64 ": checked %d fds, %" PRIu64
" usecs since poll entered\n", poll_ret, nfds,
jack_info ("%" PRIu64 ": checked %d fds, %" PRIu64
" usecs since poll entered", poll_ret, nfds,
poll_ret - poll_enter); poll_ret - poll_enter);
#endif #endif


@@ -1368,8 +1368,8 @@ alsa_driver_wait (alsa_driver_t *driver, int extra_fd, int *status, float
if (revents & POLLOUT) { if (revents & POLLOUT) {
need_playback = 0; need_playback = 0;
#ifdef DEBUG_WAKEUP #ifdef DEBUG_WAKEUP
fprintf (stderr, "%" PRIu64
" playback stream ready\n",
jack_info ("%" PRIu64
" playback stream ready",
poll_ret); poll_ret);
#endif #endif
} }
@@ -1391,8 +1391,8 @@ alsa_driver_wait (alsa_driver_t *driver, int extra_fd, int *status, float
if (revents & POLLIN) { if (revents & POLLIN) {
need_capture = 0; need_capture = 0;
#ifdef DEBUG_WAKEUP #ifdef DEBUG_WAKEUP
fprintf (stderr, "%" PRIu64
" capture stream ready\n",
jack_info ("%" PRIu64
" capture stream ready",
poll_ret); poll_ret);
#endif #endif
} }
@@ -1449,8 +1449,8 @@ alsa_driver_wait (alsa_driver_t *driver, int extra_fd, int *status, float
avail = capture_avail < playback_avail ? capture_avail : playback_avail; avail = capture_avail < playback_avail ? capture_avail : playback_avail;


#ifdef DEBUG_WAKEUP #ifdef DEBUG_WAKEUP
fprintf (stderr, "wakeup complete, avail = %lu, pavail = %lu "
"cavail = %lu\n",
jack_info ("wakeup complete, avail = %lu, pavail = %lu "
"cavail = %lu",
avail, playback_avail, capture_avail); avail, playback_avail, capture_avail);
#endif #endif


@@ -1600,7 +1600,7 @@ alsa_driver_read (alsa_driver_t *driver, jack_nframes_t nframes)
if ((err = snd_pcm_mmap_commit (driver->capture_handle, if ((err = snd_pcm_mmap_commit (driver->capture_handle,
offset, contiguous)) < 0) { offset, contiguous)) < 0) {
jack_error ("ALSA: could not complete read of %" jack_error ("ALSA: could not complete read of %"
PRIu32 " frames: error = %d\n", contiguous, err);
PRIu32 " frames: error = %d", contiguous, err);
return -1; return -1;
} }


@@ -2011,8 +2011,8 @@ alsa_driver_new (char *name, char *playback_alsa_device,


alsa_driver_t *driver; alsa_driver_t *driver;


printf ("creating alsa driver ... %s|%s|%" PRIu32 "|%" PRIu32
"|%" PRIu32"|%" PRIu32"|%" PRIu32 "|%s|%s|%s|%s\n",
jack_info ("creating alsa driver ... %s|%s|%" PRIu32 "|%" PRIu32
"|%" PRIu32"|%" PRIu32"|%" PRIu32 "|%s|%s|%s|%s",
playing ? playback_alsa_device : "-", playing ? playback_alsa_device : "-",
capturing ? capture_alsa_device : "-", capturing ? capture_alsa_device : "-",
frames_per_cycle, user_nperiods, rate, frames_per_cycle, user_nperiods, rate,
@@ -2343,7 +2343,7 @@ dither_opt (char c, DitherAlgorithm* dither)
break; break;
default: default:
fprintf (stderr, "ALSA driver: illegal dithering mode %c\n", c);
jack_error ("ALSA driver: illegal dithering mode %c", c);
return -1; return -1;
} }
return 0; return 0;
@@ -2600,7 +2600,7 @@ driver_initialize (jack_client_t *client, const JSList * params)


case 'r': case 'r':
srate = param->value.ui; srate = param->value.ui;
fprintf (stderr, "apparent rate = %d\n", srate);
jack_info ("apparent rate = %d", srate);
break; break;
case 'p': case 'p':


+ 1
- 1
drivers/alsa/hammerfall.c View File

@@ -109,7 +109,7 @@ hammerfall_check_sync (hammerfall_t *h, snd_ctl_elem_value_t *ctl)
int val; int val;
snd_ctl_elem_id_t *ctl_id; snd_ctl_elem_id_t *ctl_id;
printf ("check sync\n");
jack_info ("check sync");


snd_ctl_elem_id_alloca (&ctl_id); snd_ctl_elem_id_alloca (&ctl_id);
snd_ctl_elem_value_get_id (ctl, ctl_id); snd_ctl_elem_value_get_id (ctl, ctl_id);


+ 5
- 5
drivers/alsa/usx2y.c View File

@@ -122,7 +122,7 @@ usx2y_driver_get_channel_addresses_playback (alsa_driver_t *driver,
if (dbg_offset < (sizeof(dbg_buffer) - 256)) if (dbg_offset < (sizeof(dbg_buffer) - 256))
dbg_offset += sprintf(dbg_buffer + dbg_offset, "avail %li@%p\n", *playback_avail, driver->playback_addr[0]); dbg_offset += sprintf(dbg_buffer + dbg_offset, "avail %li@%p\n", *playback_avail, driver->playback_addr[0]);
else { else {
printf(dbg_buffer);
jack_info_multiline(dbg_buffer);
return -1; return -1;
} }
#endif #endif
@@ -196,7 +196,7 @@ usx2y_driver_get_channel_addresses_capture (alsa_driver_t *driver,
if (dbg_offset < (sizeof(dbg_buffer) - 256)) if (dbg_offset < (sizeof(dbg_buffer) - 256))
dbg_offset += sprintf(dbg_buffer + dbg_offset, "avail %li@%p\n", *capture_avail, driver->capture_addr[0]); dbg_offset += sprintf(dbg_buffer + dbg_offset, "avail %li@%p\n", *capture_avail, driver->capture_addr[0]);
else { else {
printf(dbg_buffer);
jack_info_multiline(dbg_buffer);
return -1; return -1;
} }
#endif #endif
@@ -397,7 +397,7 @@ usx2y_driver_null_cycle (alsa_driver_t* driver, jack_nframes_t nframes)
int chn; int chn;


VERBOSE(driver->engine, VERBOSE(driver->engine,
"usx2y_driver_null_cycle (%p, %i)\n", driver, nframes);
"usx2y_driver_null_cycle (%p, %i)", driver, nframes);


if (driver->capture_handle) { if (driver->capture_handle) {
nf = nframes; nf = nframes;
@@ -687,8 +687,8 @@ jack_alsa_usx2y_hw_new (alsa_driver_t *driver)
hw->private = h; hw->private = h;
/* Set our own operational function pointers. */ /* Set our own operational function pointers. */
usx2y_driver_setup(driver); usx2y_driver_setup(driver);
printf("ALSA/USX2Y: EXPERIMENTAL hwdep pcm device %s"
" (aka \"rawusb\")\n", driver->alsa_name_playback);
jack_info("ALSA/USX2Y: EXPERIMENTAL hwdep pcm device %s"
" (aka \"rawusb\")", driver->alsa_name_playback);
} }
} }




+ 3
- 3
drivers/coreaudio/coreaudio_driver.c View File

@@ -272,8 +272,8 @@ static OSStatus display_device_names()
err = AudioDeviceGetProperty(devices[i], 0, false, kAudioDevicePropertyDeviceName, &size, device_name); err = AudioDeviceGetProperty(devices[i], 0, false, kAudioDevicePropertyDeviceName, &size, device_name);
if (err != noErr) if (err != noErr)
return err; return err;
printf("ICI\n");
printf("Device name = \'%s\', internal_name = \'%s\' (to be used as -d parameter)\n", device_name, internal_name);
jack_info("ICI");
jack_info("Device name = \'%s\', internal_name = \'%s\' (to be used as -d parameter)", device_name, internal_name);
} }
return noErr; return noErr;
@@ -627,7 +627,7 @@ static jack_driver_t *coreaudio_driver_new(char* name,
jack_driver_init((jack_driver_t *) driver); jack_driver_init((jack_driver_t *) driver);


if (!jack_power_of_two(nframes)) { if (!jack_power_of_two(nframes)) {
fprintf(stderr, "CA: -p must be a power of two.\n");
jack_error("CA: -p must be a power of two.");
goto error; goto error;
} }




+ 4
- 4
drivers/dummy/dummy_driver.c View File

@@ -50,7 +50,7 @@ FakeVideoSync( dummy_driver_t *driver )
jack_position_t *position = &driver->engine->control->current_time; jack_position_t *position = &driver->engine->control->current_time;


if ( period >= VIDEO_SYNC_PERIOD ) { if ( period >= VIDEO_SYNC_PERIOD ) {
printf("JACK driver period size too large for simple video sync emulation. Halting.\n");
jack_error("JACK driver period size too large for simple video sync emulation. Halting.");
exit(0); exit(0);
} }


@@ -87,7 +87,7 @@ dummy_driver_wait (dummy_driver_t *driver, int extra_fd, int *status,
> (PRETEND_BUFFER_SIZE * 1000000LL > (PRETEND_BUFFER_SIZE * 1000000LL
/ driver->sample_rate)) { / driver->sample_rate)) {
/* xrun */ /* xrun */
fprintf(stderr,"**** dummy: xrun of %ju usec\n",
jack_error("**** dummy: xrun of %ju usec",
(uintmax_t)now - driver->next_time); (uintmax_t)now - driver->next_time);
driver->next_time = now + driver->wait_time; driver->next_time = now + driver->wait_time;
} else { } else {
@@ -267,8 +267,8 @@ dummy_driver_new (jack_client_t * client,
{ {
dummy_driver_t * driver; dummy_driver_t * driver;


printf ("creating dummy driver ... %s|%" PRIu32 "|%" PRIu32
"|%lu|%u|%u\n", name, sample_rate, period_size, wait_time,
jack_info ("creating dummy driver ... %s|%" PRIu32 "|%" PRIu32
"|%lu|%u|%u", name, sample_rate, period_size, wait_time,
capture_ports, playback_ports); capture_ports, playback_ports);


driver = (dummy_driver_t *) calloc (1, sizeof (dummy_driver_t)); driver = (dummy_driver_t *) calloc (1, sizeof (dummy_driver_t));


+ 8
- 8
drivers/oss/oss_driver.c View File

@@ -599,14 +599,14 @@ static int oss_driver_start (oss_driver_t *driver)
jack_error( jack_error(
"OSS: failed to set samplerate for %s: %s@%i, errno=%d", "OSS: failed to set samplerate for %s: %s@%i, errno=%d",
indev, __FILE__, __LINE__, errno); indev, __FILE__, __LINE__, errno);
printf("oss_driver: %s : 0x%x/%i/%i (%i)\n", indev,
jack_info("oss_driver: %s : 0x%x/%i/%i (%i)", indev,
format, channels, samplerate, get_fragment(infd)); format, channels, samplerate, get_fragment(infd));
period_size = get_fragment(infd) / samplesize / channels; period_size = get_fragment(infd) / samplesize / channels;
if (period_size != driver->period_size && if (period_size != driver->period_size &&
!driver->ignorehwbuf) !driver->ignorehwbuf)
{ {
printf("oss_driver: period size update: %u\n",
jack_info("oss_driver: period size update: %u",
period_size); period_size);
driver->period_size = period_size; driver->period_size = period_size;
driver->period_usecs = driver->period_usecs =
@@ -634,7 +634,7 @@ static int oss_driver_start (oss_driver_t *driver)
jack_error( jack_error(
"OSS: failed to set samplerate for %s: %s@%i, errno=%d", "OSS: failed to set samplerate for %s: %s@%i, errno=%d",
outdev, __FILE__, __LINE__, errno); outdev, __FILE__, __LINE__, errno);
printf("oss_driver: %s : 0x%x/%i/%i (%i)\n", outdev,
jack_info("oss_driver: %s : 0x%x/%i/%i (%i)", outdev,
format, channels, samplerate, format, channels, samplerate,
get_fragment(outfd)); get_fragment(outfd));


@@ -642,7 +642,7 @@ static int oss_driver_start (oss_driver_t *driver)
if (period_size != driver->period_size && if (period_size != driver->period_size &&
!driver->ignorehwbuf) !driver->ignorehwbuf)
{ {
printf("oss_driver: period size update: %u\n",
jack_info("oss_driver: period size update: %u",
period_size); period_size);
driver->period_size = period_size; driver->period_size = period_size;
driver->period_usecs = driver->period_usecs =
@@ -691,7 +691,7 @@ static int oss_driver_start (oss_driver_t *driver)
driver->outdevbuf = NULL; driver->outdevbuf = NULL;
} }


printf("oss_driver: indevbuf %zd B, outdevbuf %zd B\n",
jack_info("oss_driver: indevbuf %zd B, outdevbuf %zd B",
driver->indevbufsize, driver->outdevbufsize); driver->indevbufsize, driver->outdevbufsize);


pthread_mutex_init(&driver->mutex_in, NULL); pthread_mutex_init(&driver->mutex_in, NULL);
@@ -907,7 +907,7 @@ static int oss_driver_bufsize (oss_driver_t *driver, jack_nframes_t nframes)


set_period_size(driver, nframes); set_period_size(driver, nframes);
driver->engine->set_buffer_size(driver->engine, driver->period_size); driver->engine->set_buffer_size(driver->engine, driver->period_size);
printf("oss_driver: period size update: %u\n", nframes);
jack_info("oss_driver: period size update: %u", nframes);


oss_driver_start(driver); oss_driver_start(driver);


@@ -1102,7 +1102,7 @@ jack_driver_desc_t * driver_get_descriptor ()
desc = (jack_driver_desc_t *) calloc(1, sizeof(jack_driver_desc_t)); desc = (jack_driver_desc_t *) calloc(1, sizeof(jack_driver_desc_t));
if (desc == NULL) if (desc == NULL)
{ {
printf("oss_driver: calloc() failed: %s@%i, errno=%d\n",
jack_error("oss_driver: calloc() failed: %s@%i, errno=%d",
__FILE__, __LINE__, errno); __FILE__, __LINE__, errno);
return NULL; return NULL;
} }
@@ -1112,7 +1112,7 @@ jack_driver_desc_t * driver_get_descriptor ()
params = calloc(desc->nparams, sizeof(jack_driver_param_desc_t)); params = calloc(desc->nparams, sizeof(jack_driver_param_desc_t));
if (params == NULL) if (params == NULL)
{ {
printf("oss_driver: calloc() failed: %s@%i, errno=%d\n",
jack_error("oss_driver: calloc() failed: %s@%i, errno=%d",
__FILE__, __LINE__, errno); __FILE__, __LINE__, errno);
return NULL; return NULL;
} }


+ 9
- 9
drivers/portaudio/portaudio_driver.c View File

@@ -332,9 +332,9 @@ portaudio_driver_set_parameters (portaudio_driver_t* driver,


// JOQ: this driver is dead. How do we terminate it? // JOQ: this driver is dead. How do we terminate it?
Pa_Terminate(); Pa_Terminate();
fprintf(stderr, "Unable to set portaudio parameters\n");
fprintf(stderr, "Error number: %d\n", err);
fprintf(stderr, "Error message: %s\n", Pa_GetErrorText(err));
jack_error("Unable to set portaudio parameters");
jack_error("Error number: %d", err);
jack_error("Error message: %s", Pa_GetErrorText(err));
return EIO; return EIO;
} }
} }
@@ -345,8 +345,8 @@ portaudio_driver_reset_parameters (portaudio_driver_t* driver,
jack_nframes_t rate) jack_nframes_t rate)
{ {
if (!jack_power_of_two(nframes)) { if (!jack_power_of_two(nframes)) {
fprintf (stderr, "PA: frames must be a power of two "
"(64, 512, 1024, ...)\n");
jack_error("PA: frames must be a power of two "
"(64, 512, 1024, ...)");
return EINVAL; return EINVAL;
} }


@@ -541,7 +541,7 @@ portaudio_driver_new (char *name,
jack_driver_init ((jack_driver_t *) driver); jack_driver_init ((jack_driver_t *) driver);


if (!jack_power_of_two(frames_per_cycle)) { if (!jack_power_of_two(frames_per_cycle)) {
fprintf (stderr, "PA: -p must be a power of two.\n");
jack_error ("PA: -p must be a power of two.");
goto error; goto error;
} }


@@ -653,9 +653,9 @@ portaudio_driver_new (char *name,
error: error:


Pa_Terminate(); Pa_Terminate();
fprintf(stderr, "An error occured while using the portaudio stream\n");
fprintf(stderr, "Error number: %d\n", err);
fprintf(stderr, "Error message: %s\n", Pa_GetErrorText(err));
jack_error("An error occured while using the portaudio stream");
jack_error("Error number: %d", err);
jack_error("Error message: %s", Pa_GetErrorText(err));
free(driver); free(driver);
return NULL; return NULL;
} }


+ 2
- 0
jack/internal.h View File

@@ -37,6 +37,8 @@
/* Needed by <sysdeps/time.h> */ /* Needed by <sysdeps/time.h> */
extern void jack_error (const char *fmt, ...); extern void jack_error (const char *fmt, ...);


extern void jack_info (const char *fmt, ...);

#include <jack/jack.h> #include <jack/jack.h>
#include <jack/types.h> #include <jack/types.h>
#include <jack/port.h> #include <jack/port.h>


+ 15
- 0
jack/jack.h View File

@@ -856,6 +856,21 @@ extern void (*jack_error_callback)(const char *msg);
*/ */
void jack_set_error_function (void (*func)(const char *)); void jack_set_error_function (void (*func)(const char *));


/**
* Display JACK info message.
*
* Set via jack_set_info_function(), otherwise a JACK-provided
* default will print @a msg (plus a newline) to stdout.
*
* @param msg info message text (no newline at end).
*/
extern void (*jack_info_callback)(const char *msg);

/**
* Set the @ref jack_info_callback for info message display.
*/
void jack_set_info_function (void (*func)(const char *));

#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif


+ 11
- 11
jackd/clientengine.c View File

@@ -87,7 +87,7 @@ jack_client_do_deactivate (jack_engine_t *engine,
static void static void
jack_zombify_client (jack_engine_t *engine, jack_client_internal_t *client) jack_zombify_client (jack_engine_t *engine, jack_client_internal_t *client)
{ {
VERBOSE (engine, "removing client \"%s\" from the processing chain\n",
VERBOSE (engine, "removing client \"%s\" from the processing chain",
client->control->name); client->control->name);


/* caller must hold the client_lock */ /* caller must hold the client_lock */
@@ -109,7 +109,7 @@ jack_remove_client (jack_engine_t *engine, jack_client_internal_t *client)


/* caller must hold the client_lock */ /* caller must hold the client_lock */


VERBOSE (engine, "removing client \"%s\"\n", client->control->name);
VERBOSE (engine, "removing client \"%s\"", client->control->name);


/* if its not already a zombie, make it so */ /* if its not already a zombie, make it so */


@@ -187,7 +187,7 @@ jack_remove_clients (jack_engine_t* engine)
if (client->error >= JACK_ERROR_WITH_SOCKETS) { if (client->error >= JACK_ERROR_WITH_SOCKETS) {
VERBOSE (engine, "removing failed " VERBOSE (engine, "removing failed "
"client %s state = %s errors" "client %s state = %s errors"
" = %d\n",
" = %d",
client->control->name, client->control->name,
jack_client_state_name (client), jack_client_state_name (client),
client->error); client->error);
@@ -197,7 +197,7 @@ jack_remove_clients (jack_engine_t* engine)
} else { } else {
VERBOSE (engine, "client failure: " VERBOSE (engine, "client failure: "
"client %s state = %s errors" "client %s state = %s errors"
" = %d\n",
" = %d",
client->control->name, client->control->name,
jack_client_state_name (client), jack_client_state_name (client),
client->error); client->error);
@@ -527,7 +527,7 @@ setup_client (jack_engine_t *engine, ClientType type, char *name,
} }


VERBOSE (engine, "new client: %s, id = %" PRIu32 VERBOSE (engine, "new client: %s, id = %" PRIu32
" type %d @ %p fd = %d\n",
" type %d @ %p fd = %d",
client->control->name, client->control->id, client->control->name, client->control->id,
type, client->control, client_fd); type, client->control, client_fd);


@@ -568,7 +568,7 @@ setup_client (jack_engine_t *engine, ClientType type, char *name,


/* failed: clean up client data */ /* failed: clean up client data */
VERBOSE (engine, VERBOSE (engine,
"%s jack_initialize() failed!\n",
"%s jack_initialize() failed!",
client->control->name); client->control->name);
jack_lock_graph (engine); jack_lock_graph (engine);
jack_remove_client (engine, client); jack_remove_client (engine, client);
@@ -628,7 +628,7 @@ handle_unload_client (jack_engine_t *engine, jack_client_id_t id)
jack_lock_graph (engine); jack_lock_graph (engine);


if ((client = jack_client_internal_by_id (engine, id))) { if ((client = jack_client_internal_by_id (engine, id))) {
VERBOSE (engine, "unloading client \"%s\"\n",
VERBOSE (engine, "unloading client \"%s\"",
client->control->name); client->control->name);
jack_remove_client (engine, client); jack_remove_client (engine, client);
status = 0; status = 0;
@@ -824,7 +824,7 @@ jack_client_disconnect (jack_engine_t *engine, int fd)


if (client) { if (client) {
VERBOSE (engine, "removing disconnected client %s state = " VERBOSE (engine, "removing disconnected client %s state = "
"%s errors = %d\n", client->control->name,
"%s errors = %d", client->control->name,
jack_client_state_name (client), jack_client_state_name (client),
client->error); client->error);
jack_remove_client(engine, client); jack_remove_client(engine, client);
@@ -906,7 +906,7 @@ jack_intclient_load_request (jack_engine_t *engine, jack_request_t *req)
jack_status_t status = 0; jack_status_t status = 0;


VERBOSE (engine, "load internal client %s from %s, init `%s', " VERBOSE (engine, "load internal client %s from %s, init `%s', "
"options: 0x%x\n", req->x.intclient.name,
"options: 0x%x", req->x.intclient.name,
req->x.intclient.path, req->x.intclient.init, req->x.intclient.path, req->x.intclient.init,
req->x.intclient.options); req->x.intclient.options);


@@ -917,7 +917,7 @@ jack_intclient_load_request (jack_engine_t *engine, jack_request_t *req)
if (client == NULL) { if (client == NULL) {
status |= JackFailure; /* just making sure */ status |= JackFailure; /* just making sure */
req->x.intclient.id = 0; req->x.intclient.id = 0;
VERBOSE (engine, "load failed, status = 0x%x\n", status);
VERBOSE (engine, "load failed, status = 0x%x", status);
} else { } else {
req->x.intclient.id = client->control->id; req->x.intclient.id = client->control->id;
} }
@@ -955,7 +955,7 @@ jack_intclient_unload_request (jack_engine_t *engine, jack_request_t *req)
handle_unload_client (engine, req->x.intclient.id); handle_unload_client (engine, req->x.intclient.id);
pthread_mutex_lock (&engine->request_lock); pthread_mutex_lock (&engine->request_lock);
} else { } else {
VERBOSE (engine, "invalid unload request\n");
VERBOSE (engine, "invalid unload request");
req->status = JackFailure; req->status = JackFailure;
} }
} }

+ 65
- 66
jackd/engine.c View File

@@ -510,7 +510,7 @@ jack_driver_buffer_size (jack_engine_t *engine, jack_nframes_t nframes)
jack_event_t event; jack_event_t event;
JSList *node; JSList *node;


VERBOSE (engine, "new buffer size %" PRIu32 "\n", nframes);
VERBOSE (engine, "new buffer size %" PRIu32, nframes);


engine->control->buffer_size = nframes; engine->control->buffer_size = nframes;
if (engine->driver) if (engine->driver)
@@ -709,7 +709,7 @@ jack_process_external(jack_engine_t *engine, JSList *node)
" waiting on %d for %" PRIu64 " waiting on %d for %" PRIu64
" usecs, status = %d sig = %" PRIu64 " usecs, status = %d sig = %" PRIu64
" awa = %" PRIu64 " fin = %" PRIu64 " awa = %" PRIu64 " fin = %" PRIu64
" dur=%" PRIu64 "\n",
" dur=%" PRIu64,
now, now,
client->subgraph_wait_fd, client->subgraph_wait_fd,
now - then, now - then,
@@ -808,7 +808,7 @@ jack_calc_cpu_load(jack_engine_t *engine)
engine->rolling_client_usecs[engine->rolling_client_usecs_index++] = engine->rolling_client_usecs[engine->rolling_client_usecs_index++] =
cycle_end - engine->control->current_time.usecs; cycle_end - engine->control->current_time.usecs;


//printf ("cycle_end - engine->control->current_time.usecs %ld\n",
//jack_info ("cycle_end - engine->control->current_time.usecs %ld",
// (long) (cycle_end - engine->control->current_time.usecs)); // (long) (cycle_end - engine->control->current_time.usecs));


if (engine->rolling_client_usecs_index >= JACK_ENGINE_ROLLING_COUNT) { if (engine->rolling_client_usecs_index >= JACK_ENGINE_ROLLING_COUNT) {
@@ -847,7 +847,7 @@ jack_calc_cpu_load(jack_engine_t *engine)
+ (engine->control->cpu_load * 0.5f); + (engine->control->cpu_load * 0.5f);


VERBOSE (engine, "load = %.4f max usecs: %.3f, " VERBOSE (engine, "load = %.4f max usecs: %.3f, "
"spare = %.3f\n", engine->control->cpu_load,
"spare = %.3f", engine->control->cpu_load,
max_usecs, engine->spare_usecs); max_usecs, engine->spare_usecs);
} }


@@ -880,7 +880,7 @@ jack_engine_post_process (jack_engine_t *engine)
ctl->timed_out++) { ctl->timed_out++) {
VERBOSE(engine, "client %s error: awake_at = %" VERBOSE(engine, "client %s error: awake_at = %"
PRIu64 PRIu64
" state = %d timed_out = %d\n",
" state = %d timed_out = %d",
ctl->name, ctl->name,
ctl->awake_at, ctl->awake_at,
ctl->state, ctl->state,
@@ -1077,14 +1077,14 @@ static int check_capabilities (jack_engine_t *engine)


if (caps == NULL) { if (caps == NULL) {
VERBOSE (engine, "check: could not allocate capability" VERBOSE (engine, "check: could not allocate capability"
" working storage\n");
" working storage");
return 0; return 0;
} }
pid = getpid (); pid = getpid ();
cap_clear (caps); cap_clear (caps);
if (capgetp (pid, caps)) { if (capgetp (pid, caps)) {
VERBOSE (engine, "check: could not get capabilities " VERBOSE (engine, "check: could not get capabilities "
"for process %d\n", pid);
"for process %d", pid);
return 0; return 0;
} }
/* check that we are able to give capabilites to other processes */ /* check that we are able to give capabilites to other processes */
@@ -1123,13 +1123,13 @@ static int give_capabilities (jack_engine_t *engine, pid_t pid)


if (caps == NULL) { if (caps == NULL) {
VERBOSE (engine, "give: could not allocate capability" VERBOSE (engine, "give: could not allocate capability"
" working storage\n");
" working storage");
return -1; return -1;
} }
cap_clear(caps); cap_clear(caps);
if (capgetp (pid, caps)) { if (capgetp (pid, caps)) {
VERBOSE (engine, "give: could not get current " VERBOSE (engine, "give: could not get current "
"capabilities for process %d\n", pid);
"capabilities for process %d", pid);
cap_clear(caps); cap_clear(caps);
} }
cap_set_flag(caps, CAP_EFFECTIVE, caps_size, cap_list , CAP_SET); cap_set_flag(caps, CAP_EFFECTIVE, caps_size, cap_list , CAP_SET);
@@ -1156,11 +1156,11 @@ jack_set_client_capabilities (jack_engine_t *engine, pid_t cap_pid)


if ((ret = give_capabilities (engine, cap_pid)) != 0) { if ((ret = give_capabilities (engine, cap_pid)) != 0) {
jack_error ("could not give capabilities to " jack_error ("could not give capabilities to "
"process %d\n",
"process %d",
cap_pid); cap_pid);
} else { } else {
VERBOSE (engine, "gave capabilities to" VERBOSE (engine, "gave capabilities to"
" process %d\n",
" process %d",
cap_pid); cap_pid);
} }


@@ -1672,7 +1672,7 @@ jack_engine_new (int realtime, int rtpriority, int do_mlock, int do_unlock,
&jack_builtin_port_types[i], &jack_builtin_port_types[i],
sizeof (jack_port_type_info_t)); sizeof (jack_port_type_info_t));


VERBOSE (engine, "registered builtin port type %s\n",
VERBOSE (engine, "registered builtin port type %s",
engine->control->port_types[i].type_name); engine->control->port_types[i].type_name);


/* the port type id is index into port_types array */ /* the port type id is index into port_types array */
@@ -1730,7 +1730,7 @@ jack_engine_new (int realtime, int rtpriority, int do_mlock, int do_unlock,
jack_set_clock_source (clock_source); jack_set_clock_source (clock_source);
engine->control->clock_source = clock_source; engine->control->clock_source = clock_source;


VERBOSE (engine, "clock source = %s\n", jack_clock_source_name (clock_source));
VERBOSE (engine, "clock source = %s", jack_clock_source_name (clock_source));


engine->control->frame_timer.frames = frame_time_offset; engine->control->frame_timer.frames = frame_time_offset;
engine->control->frame_timer.reset_pending = 0; engine->control->frame_timer.reset_pending = 0;
@@ -1764,20 +1764,20 @@ jack_engine_new (int realtime, int rtpriority, int do_mlock, int do_unlock,
#ifdef USE_CAPABILITIES #ifdef USE_CAPABILITIES
if (uid == 0 || euid == 0) { if (uid == 0 || euid == 0) {
VERBOSE (engine, "running with uid=%d and euid=%d, " VERBOSE (engine, "running with uid=%d and euid=%d, "
"will not try to use capabilites\n",
"will not try to use capabilites",
uid, euid); uid, euid);
} else { } else {
/* only try to use capabilities if not running as root */ /* only try to use capabilities if not running as root */
engine->control->has_capabilities = check_capabilities (engine); engine->control->has_capabilities = check_capabilities (engine);
if (engine->control->has_capabilities == 0) { if (engine->control->has_capabilities == 0) {
VERBOSE (engine, "required capabilities not " VERBOSE (engine, "required capabilities not "
"available\n");
"available");
} }
if (engine->verbose) { if (engine->verbose) {
size_t size; size_t size;
cap_t cap = cap_init(); cap_t cap = cap_init();
capgetp(0, cap); capgetp(0, cap);
VERBOSE (engine, "capabilities: %s\n",
VERBOSE (engine, "capabilities: %s",
cap_to_text(cap, &size)); cap_to_text(cap, &size));
} }
} }
@@ -1852,7 +1852,7 @@ jack_engine_freewheel (void *arg)
{ {
jack_engine_t* engine = (jack_engine_t *) arg; jack_engine_t* engine = (jack_engine_t *) arg;


VERBOSE (engine, "freewheel thread starting ...\n");
VERBOSE (engine, "freewheel thread starting ...");


/* we should not be running SCHED_FIFO, so we don't /* we should not be running SCHED_FIFO, so we don't
have to do anything about scheduling. have to do anything about scheduling.
@@ -1872,7 +1872,7 @@ jack_engine_freewheel (void *arg)
jack_unlock_graph (engine); jack_unlock_graph (engine);
} }


VERBOSE (engine, "freewheel came to an end, naturally\n");
VERBOSE (engine, "freewheel came to an end, naturally");
return 0; return 0;
} }


@@ -1929,7 +1929,7 @@ jack_stop_freewheeling (jack_engine_t* engine)
} }


if (!engine->freewheeling) { if (!engine->freewheeling) {
VERBOSE (engine, "stop freewheel when not freewheeling\n");
VERBOSE (engine, "stop freewheel when not freewheeling");
return 0; return 0;
} }


@@ -1938,9 +1938,9 @@ jack_stop_freewheeling (jack_engine_t* engine)
*/ */


engine->freewheeling = 0; engine->freewheeling = 0;
VERBOSE (engine, "freewheeling stopped, waiting for thread\n");
VERBOSE (engine, "freewheeling stopped, waiting for thread");
pthread_join (engine->freewheel_thread, &ftstatus); pthread_join (engine->freewheel_thread, &ftstatus);
VERBOSE (engine, "freewheel thread has returned\n");
VERBOSE (engine, "freewheel thread has returned");


/* tell everyone we've stopped */ /* tell everyone we've stopped */


@@ -2028,7 +2028,7 @@ jack_run_one_cycle (jack_engine_t *engine, jack_nframes_t nframes,
if (client->control->type == ClientExternal) { if (client->control->type == ClientExternal) {
if (kill (client->control->pid, 0)) { if (kill (client->control->pid, 0)) {
VERBOSE(engine, VERBOSE(engine,
"client %s has died/exited\n",
"client %s has died/exited",
client->control->name); client->control->name);
client->error++; client->error++;
} }
@@ -2120,7 +2120,7 @@ jack_run_cycle (jack_engine_t *engine, jack_nframes_t nframes,
if (nframes != b_size) { if (nframes != b_size) {
VERBOSE (engine, VERBOSE (engine,
"late driver wakeup: nframes to process = %" "late driver wakeup: nframes to process = %"
PRIu32 ".\n", nframes);
PRIu32 ".", nframes);
} }
} }


@@ -2143,7 +2143,7 @@ jack_engine_delete (jack_engine_t *engine)
if (engine == NULL) if (engine == NULL)
return; return;


VERBOSE (engine, "starting server engine shutdown\n");
VERBOSE (engine, "starting server engine shutdown");


engine->control->engine_ok = 0; /* tell clients we're going away */ engine->control->engine_ok = 0; /* tell clients we're going away */


@@ -2160,23 +2160,23 @@ jack_engine_delete (jack_engine_t *engine)
if (engine->driver) { if (engine->driver) {
jack_driver_t* driver = engine->driver; jack_driver_t* driver = engine->driver;


VERBOSE (engine, "stopping driver\n");
VERBOSE (engine, "stopping driver");
driver->stop (driver); driver->stop (driver);
// VERBOSE (engine, "detaching driver\n");
// VERBOSE (engine, "detaching driver");
// driver->detach (driver, engine); // driver->detach (driver, engine);
VERBOSE (engine, "unloading driver\n");
VERBOSE (engine, "unloading driver");
jack_driver_unload (driver); jack_driver_unload (driver);
engine->driver = NULL; engine->driver = NULL;
} }


VERBOSE (engine, "freeing shared port segments\n");
VERBOSE (engine, "freeing shared port segments");
for (i = 0; i < engine->control->n_port_types; ++i) { for (i = 0; i < engine->control->n_port_types; ++i) {
jack_release_shm (&engine->port_segment[i]); jack_release_shm (&engine->port_segment[i]);
jack_destroy_shm (&engine->port_segment[i]); jack_destroy_shm (&engine->port_segment[i]);
} }


/* stop the other engine threads */ /* stop the other engine threads */
VERBOSE (engine, "stopping server thread\n");
VERBOSE (engine, "stopping server thread");


#if JACK_USE_MACH_THREADS #if JACK_USE_MACH_THREADS
// MacOSX pthread_cancel still not implemented correctly in Darwin // MacOSX pthread_cancel still not implemented correctly in Darwin
@@ -2194,26 +2194,25 @@ jack_engine_delete (jack_engine_t *engine)
* drivers already contain a similar mechanism. * drivers already contain a similar mechanism.
*/ */
if (engine->control->real_time && engine->watchdog_thread) { if (engine->control->real_time && engine->watchdog_thread) {
VERBOSE (engine, "stopping watchdog thread\n");
VERBOSE (engine, "stopping watchdog thread");
pthread_cancel (engine->watchdog_thread); pthread_cancel (engine->watchdog_thread);
pthread_join (engine->watchdog_thread, NULL); pthread_join (engine->watchdog_thread, NULL);
} }
#endif #endif


VERBOSE (engine, "last xrun delay: %.3f usecs\n",
VERBOSE (engine, "last xrun delay: %.3f usecs",
engine->control->xrun_delayed_usecs); engine->control->xrun_delayed_usecs);
VERBOSE (engine, "max delay reported by backend: %.3f usecs\n",
VERBOSE (engine, "max delay reported by backend: %.3f usecs",
engine->control->max_delayed_usecs); engine->control->max_delayed_usecs);


/* free engine control shm segment */ /* free engine control shm segment */
engine->control = NULL; engine->control = NULL;
VERBOSE (engine, "freeing engine shared memory\n");
VERBOSE (engine, "freeing engine shared memory");
jack_release_shm (&engine->control_shm); jack_release_shm (&engine->control_shm);
jack_destroy_shm (&engine->control_shm); jack_destroy_shm (&engine->control_shm);


VERBOSE (engine, "max usecs: %.3f, ", engine->max_usecs);
VERBOSE (engine, "max usecs: %.3f, engine deleted", engine->max_usecs);


VERBOSE (engine, "engine deleted\n");
free (engine); free (engine);


jack_messagebuffer_exit(); jack_messagebuffer_exit();
@@ -2409,7 +2408,7 @@ jack_rechain_graph (jack_engine_t *engine)


subgraph_client = 0; subgraph_client = 0;


VERBOSE(engine, "++ jack_rechain_graph():\n");
VERBOSE(engine, "++ jack_rechain_graph():");


event.type = GraphReordered; event.type = GraphReordered;


@@ -2455,7 +2454,7 @@ jack_rechain_graph (jack_engine_t *engine)
jack_get_fifo_fd (engine, n); jack_get_fifo_fd (engine, n);
VERBOSE (engine, "client %s: wait_fd=" VERBOSE (engine, "client %s: wait_fd="
"%d, execution_order=" "%d, execution_order="
"%lu.\n",
"%lu.",
subgraph_client-> subgraph_client->
control->name, control->name,
subgraph_client-> subgraph_client->
@@ -2465,7 +2464,7 @@ jack_rechain_graph (jack_engine_t *engine)


VERBOSE (engine, "client %s: internal " VERBOSE (engine, "client %s: internal "
"client, execution_order=" "client, execution_order="
"%lu.\n",
"%lu.",
client->control->name, n); client->control->name, n);


/* this does the right thing for /* this does the right thing for
@@ -2491,7 +2490,7 @@ jack_rechain_graph (jack_engine_t *engine)
jack_get_fifo_fd (engine, n); jack_get_fifo_fd (engine, n);
VERBOSE (engine, "client %s: " VERBOSE (engine, "client %s: "
"start_fd=%d, execution" "start_fd=%d, execution"
"_order=%lu.\n",
"_order=%lu.",
subgraph_client-> subgraph_client->
control->name, control->name,
subgraph_client-> subgraph_client->
@@ -2509,7 +2508,7 @@ jack_rechain_graph (jack_engine_t *engine)
VERBOSE (engine, "client %s: in" VERBOSE (engine, "client %s: in"
" subgraph after %s, " " subgraph after %s, "
"execution_order=" "execution_order="
"%lu.\n",
"%lu.",
client->control->name, client->control->name,
subgraph_client-> subgraph_client->
control->name, n); control->name, n);
@@ -2541,12 +2540,12 @@ jack_rechain_graph (jack_engine_t *engine)
subgraph_client->subgraph_wait_fd = subgraph_client->subgraph_wait_fd =
jack_get_fifo_fd (engine, n); jack_get_fifo_fd (engine, n);
VERBOSE (engine, "client %s: wait_fd=%d, " VERBOSE (engine, "client %s: wait_fd=%d, "
"execution_order=%lu (last client).\n",
"execution_order=%lu (last client).",
subgraph_client->control->name, subgraph_client->control->name,
subgraph_client->subgraph_wait_fd, n); subgraph_client->subgraph_wait_fd, n);
} }


VERBOSE (engine, "-- jack_rechain_graph()\n");
VERBOSE (engine, "-- jack_rechain_graph()");


return err; return err;
} }
@@ -2584,7 +2583,7 @@ jack_get_port_total_latency (jack_engine_t *engine,
} }


#ifdef DEBUG_TOTAL_LATENCY_COMPUTATION #ifdef DEBUG_TOTAL_LATENCY_COMPUTATION
fprintf (stderr, "\n%sFor port %s (%s)\n", prefix, port->shared->name, (toward_port ? "toward" : "away"));
jack_info ("%sFor port %s (%s)", prefix, port->shared->name, (toward_port ? "toward" : "away"));
#endif #endif
for (node = port->connections; node; node = jack_slist_next (node)) { for (node = port->connections; node; node = jack_slist_next (node)) {
@@ -2601,7 +2600,7 @@ jack_get_port_total_latency (jack_engine_t *engine,
(connection->destination->shared == port->shared))) { (connection->destination->shared == port->shared))) {


#ifdef DEBUG_TOTAL_LATENCY_COMPUTATION #ifdef DEBUG_TOTAL_LATENCY_COMPUTATION
fprintf (stderr, "%s\tskip connection %s->%s\n",
jack_info ("%s\tskip connection %s->%s",
prefix, prefix,
connection->source->shared->name, connection->source->shared->name,
connection->destination->shared->name); connection->destination->shared->name);
@@ -2611,7 +2610,7 @@ jack_get_port_total_latency (jack_engine_t *engine,
} }


#ifdef DEBUG_TOTAL_LATENCY_COMPUTATION #ifdef DEBUG_TOTAL_LATENCY_COMPUTATION
fprintf (stderr, "%s\tconnection %s->%s ... ",
jack_info ("%s\tconnection %s->%s ... ",
prefix, prefix,
connection->source->shared->name, connection->source->shared->name,
connection->destination->shared->name); connection->destination->shared->name);
@@ -2658,7 +2657,7 @@ jack_get_port_total_latency (jack_engine_t *engine,
} }


#ifdef DEBUG_TOTAL_LATENCY_COMPUTATION #ifdef DEBUG_TOTAL_LATENCY_COMPUTATION
fprintf (stderr, "%s\treturn %lu + %lu = %lu\n", prefix, latency, max_latency, latency + max_latency);
jack_info ("%s\treturn %lu + %lu = %lu", prefix, latency, max_latency, latency + max_latency);
#endif #endif


return latency + max_latency; return latency + max_latency;
@@ -2793,7 +2792,7 @@ jack_check_acyclic (jack_engine_t *engine)
int stuck; int stuck;
int unsortedclients = 0; int unsortedclients = 0;


VERBOSE (engine, "checking for graph become acyclic\n");
VERBOSE (engine, "checking for graph become acyclic");


for (srcnode = engine->clients; srcnode; for (srcnode = engine->clients; srcnode;
srcnode = jack_slist_next (srcnode)) { srcnode = jack_slist_next (srcnode)) {
@@ -2834,10 +2833,10 @@ jack_check_acyclic (jack_engine_t *engine)
if (stuck) { if (stuck) {


VERBOSE (engine, "graph is still cyclic\n" );
VERBOSE (engine, "graph is still cyclic" );
} else { } else {


VERBOSE (engine, "graph has become acyclic\n");
VERBOSE (engine, "graph has become acyclic");


/* turn feedback connections around in sortfeeds */ /* turn feedback connections around in sortfeeds */
for (srcnode = engine->clients; srcnode; for (srcnode = engine->clients; srcnode;
@@ -2863,7 +2862,7 @@ jack_check_acyclic (jack_engine_t *engine)
VERBOSE (engine, VERBOSE (engine,
"reversing connection from " "reversing connection from "
"%s to %s\n",
"%s to %s",
conn->srcclient->control->name, conn->srcclient->control->name,
conn->dstclient->control->name); conn->dstclient->control->name);
conn->dir = 1; conn->dir = 1;
@@ -2885,7 +2884,7 @@ jack_check_acyclic (jack_engine_t *engine)
} }


/** /**
* Dumps current engine configuration to stderr.
* Dumps current engine configuration.
*/ */
void jack_dump_configuration(jack_engine_t *engine, int take_lock) void jack_dump_configuration(jack_engine_t *engine, int take_lock)
{ {
@@ -2896,7 +2895,7 @@ void jack_dump_configuration(jack_engine_t *engine, int take_lock)
jack_connection_internal_t* connection; jack_connection_internal_t* connection;
int n, m, o; int n, m, o;
fprintf(stderr, "engine.c: <-- dump begins -->\n");
jack_info ("engine.c: <-- dump begins -->");


if (take_lock) { if (take_lock) {
jack_lock_graph (engine); jack_lock_graph (engine);
@@ -2907,8 +2906,8 @@ void jack_dump_configuration(jack_engine_t *engine, int take_lock)
client = (jack_client_internal_t *) clientnode->data; client = (jack_client_internal_t *) clientnode->data;
ctl = client->control; ctl = client->control;


fprintf (stderr, "client #%d: %s (type: %d, process? %s,"
" start=%d wait=%d\n",
jack_info ("client #%d: %s (type: %d, process? %s,"
" start=%d wait=%d",
++n, ++n,
ctl->name, ctl->name,
ctl->type, ctl->type,
@@ -2920,7 +2919,7 @@ void jack_dump_configuration(jack_engine_t *engine, int take_lock)
portnode = jack_slist_next (portnode)) { portnode = jack_slist_next (portnode)) {
port = (jack_port_internal_t *) portnode->data; port = (jack_port_internal_t *) portnode->data;


fprintf(stderr, "\t port #%d: %s\n", ++m,
jack_info("\t port #%d: %s", ++m,
port->shared->name); port->shared->name);


for(o = 0, connectionnode = port->connections; for(o = 0, connectionnode = port->connections;
@@ -2930,7 +2929,7 @@ void jack_dump_configuration(jack_engine_t *engine, int take_lock)
connection = (jack_connection_internal_t *) connection = (jack_connection_internal_t *)
connectionnode->data; connectionnode->data;
fprintf(stderr, "\t\t connection #%d: %s %s\n",
jack_info("\t\t connection #%d: %s %s",
++o, ++o,
(port->shared->flags (port->shared->flags
& JackPortIsInput)? "<-": "->", & JackPortIsInput)? "<-": "->",
@@ -2946,7 +2945,7 @@ void jack_dump_configuration(jack_engine_t *engine, int take_lock)
} }


fprintf(stderr, "engine.c: <-- dump ends -->\n");
jack_info("engine.c: <-- dump ends -->");
} }


static int static int
@@ -3060,7 +3059,7 @@ jack_port_do_connect (jack_engine_t *engine,
feedback */ feedback */
VERBOSE (engine, VERBOSE (engine,
"connect %s and %s (output)\n",
"connect %s and %s (output)",
srcport->shared->name, srcport->shared->name,
dstport->shared->name); dstport->shared->name);


@@ -3083,7 +3082,7 @@ jack_port_do_connect (jack_engine_t *engine,
this is a feedback connection */ this is a feedback connection */
VERBOSE (engine, VERBOSE (engine,
"connect %s and %s (feedback)\n",
"connect %s and %s (feedback)",
srcport->shared->name, srcport->shared->name,
dstport->shared->name); dstport->shared->name);
@@ -3093,7 +3092,7 @@ jack_port_do_connect (jack_engine_t *engine,
connection->dir = -1; connection->dir = -1;
engine->feedbackcount++; engine->feedbackcount++;
VERBOSE (engine, VERBOSE (engine,
"feedback count up to %d\n",
"feedback count up to %d",
engine->feedbackcount); engine->feedbackcount);


} else { } else {
@@ -3101,7 +3100,7 @@ jack_port_do_connect (jack_engine_t *engine,
/* this is not a feedback connection */ /* this is not a feedback connection */


VERBOSE (engine, VERBOSE (engine,
"connect %s and %s (forward)\n",
"connect %s and %s (forward)",
srcport->shared->name, srcport->shared->name,
dstport->shared->name); dstport->shared->name);


@@ -3116,7 +3115,7 @@ jack_port_do_connect (jack_engine_t *engine,
/* this is a connection to self */ /* this is a connection to self */


VERBOSE (engine, VERBOSE (engine,
"connect %s and %s (self)\n",
"connect %s and %s (self)",
srcport->shared->name, srcport->shared->name,
dstport->shared->name); dstport->shared->name);
@@ -3171,7 +3170,7 @@ jack_port_disconnect_internal (jack_engine_t *engine,
if (connect->source == srcport && if (connect->source == srcport &&
connect->destination == dstport) { connect->destination == dstport) {


VERBOSE (engine, "DIS-connect %s and %s\n",
VERBOSE (engine, "DIS-connect %s and %s",
srcport->shared->name, srcport->shared->name,
dstport->shared->name); dstport->shared->name);
@@ -3236,7 +3235,7 @@ jack_port_disconnect_internal (jack_engine_t *engine,
(dst->sortfeeds, src); (dst->sortfeeds, src);
engine->feedbackcount--; engine->feedbackcount--;
VERBOSE (engine, VERBOSE (engine,
"feedback count down to %d\n",
"feedback count down to %d",
engine->feedbackcount); engine->feedbackcount);
} }
@@ -3267,7 +3266,7 @@ jack_port_do_disconnect_all (jack_engine_t *engine,
return -1; return -1;
} }


VERBOSE (engine, "clear connections for %s\n",
VERBOSE (engine, "clear connections for %s",
engine->internal_ports[port_id].shared->name); engine->internal_ports[port_id].shared->name);


jack_lock_graph (engine); jack_lock_graph (engine);
@@ -3594,7 +3593,7 @@ next:
jack_port_registration_notify (engine, port_id, TRUE); jack_port_registration_notify (engine, port_id, TRUE);
jack_unlock_graph (engine); jack_unlock_graph (engine);


VERBOSE (engine, "registered port %s, offset = %u\n",
VERBOSE (engine, "registered port %s, offset = %u",
shared->name, (unsigned int)shared->offset); shared->name, (unsigned int)shared->offset);


req->x.port_info.port_id = port_id; req->x.port_info.port_id = port_id;


+ 17
- 18
jackd/jackd.c View File

@@ -148,14 +148,14 @@ jack_main (jack_driver_desc_t * driver_desc, JSList * driver_params)
temporary, verbose, client_timeout, temporary, verbose, client_timeout,
port_max, getpid(), frame_time_offset, port_max, getpid(), frame_time_offset,
nozombies, drivers)) == 0) { nozombies, drivers)) == 0) {
fprintf (stderr, "cannot create engine\n");
jack_error ("cannot create engine");
return -1; return -1;
} }


fprintf (stderr, "loading driver ..\n");
jack_info ("loading driver ..");
if (jack_engine_load_driver (engine, driver_desc, driver_params)) { if (jack_engine_load_driver (engine, driver_desc, driver_params)) {
fprintf (stderr, "cannot load driver module %s\n",
jack_error ("cannot load driver module %s",
driver_desc->name); driver_desc->name);
goto error; goto error;
} }
@@ -181,7 +181,7 @@ jack_main (jack_driver_desc_t * driver_desc, JSList * driver_params)
} }
if (verbose) { if (verbose) {
fprintf (stderr, "%d waiting for signals\n", getpid());
jack_info ("%d waiting for signals", getpid());
} }


waiting = TRUE; waiting = TRUE;
@@ -189,7 +189,7 @@ jack_main (jack_driver_desc_t * driver_desc, JSList * driver_params)
while (waiting) { while (waiting) {
sigwait (&signals, &sig); sigwait (&signals, &sig);


fprintf (stderr, "jack main caught signal %d\n", sig);
jack_info ("jack main caught signal %d", sig);
switch (sig) { switch (sig) {
case SIGUSR1: case SIGUSR1:
@@ -241,7 +241,7 @@ jack_drivers_get_descriptor (JSList * drivers, const char * sofile)
sprintf (filename, "%s/%s", driver_dir, sofile); sprintf (filename, "%s/%s", driver_dir, sofile);


if (verbose) { if (verbose) {
fprintf (stderr, "getting driver descriptor from %s\n", filename);
jack_info ("getting driver descriptor from %s", filename);
} }


if ((dlhandle = dlopen (filename, RTLD_NOW|RTLD_GLOBAL)) == NULL) { if ((dlhandle = dlopen (filename, RTLD_NOW|RTLD_GLOBAL)) == NULL) {
@@ -254,7 +254,7 @@ jack_drivers_get_descriptor (JSList * drivers, const char * sofile)
dlsym (dlhandle, "driver_get_descriptor"); dlsym (dlhandle, "driver_get_descriptor");


if ((dlerr = dlerror ()) != NULL) { if ((dlerr = dlerror ()) != NULL) {
fprintf(stderr, "%s\n", dlerr);
jack_error("%s", dlerr);
dlclose (dlhandle); dlclose (dlhandle);
free (filename); free (filename);
return NULL; return NULL;
@@ -479,24 +479,23 @@ maybe_use_capabilities ()
char c = 1; char c = 1;


if (write (PIPE_WRITE_FD, &c, 1) != 1) { if (write (PIPE_WRITE_FD, &c, 1) != 1) {
fprintf (stderr, "cannot write to jackstart sync "
"pipe %d (%s)\n", PIPE_WRITE_FD,
jack_error ("cannot write to jackstart sync "
"pipe %d (%s)", PIPE_WRITE_FD,
strerror (errno)); strerror (errno));
} }


if (close(PIPE_WRITE_FD) != 0) { if (close(PIPE_WRITE_FD) != 0) {
fprintf(stderr,
"jackd: error on startup pipe close: %s\n",
strerror (errno));
jack_error("jackd: error on startup pipe close: %s",
strerror (errno));
} else { } else {
/* wait for jackstart process to set our capabilities */ /* wait for jackstart process to set our capabilities */
if (wait (&status) == -1) { if (wait (&status) == -1) {
fprintf (stderr, "jackd: wait for startup "
"process exit failed\n");
jack_error ("jackd: wait for startup "
"process exit failed");
} }
if (!WIFEXITED (status) || WEXITSTATUS (status)) { if (!WIFEXITED (status) || WEXITSTATUS (status)) {
fprintf(stderr, "jackd: jackstart did not "
"exit cleanly\n");
jack_error ("jackd: jackstart did not "
"exit cleanly");
exit (1); exit (1);
} }
} }
@@ -627,8 +626,8 @@ main (int argc, char *argv[])
break; break;


default: default:
fprintf (stderr, "Unknown option character %c\n",
optopt);
jack_error ("Unknown option character %c",
optopt);
/*fallthru*/ /*fallthru*/
case 'h': case 'h':
usage (stdout); usage (stdout);


+ 22
- 22
jackd/transengine.c View File

@@ -48,10 +48,10 @@ jack_sync_poll_new (jack_engine_t *engine, jack_client_internal_t *client)
// JOQ: I don't like doing this here... // JOQ: I don't like doing this here...
if (engine->control->transport_state == JackTransportRolling) { if (engine->control->transport_state == JackTransportRolling) {
engine->control->transport_state = JackTransportStarting; engine->control->transport_state = JackTransportStarting;
VERBOSE (engine, "force transport state to Starting\n");
VERBOSE (engine, "force transport state to Starting");
} }


VERBOSE (engine, "polling sync client %" PRIu32 "\n",
VERBOSE (engine, "polling sync client %" PRIu32,
client->control->id); client->control->id);
} }


@@ -67,7 +67,7 @@ jack_sync_poll_deactivate (jack_engine_t *engine,
client->control->sync_new = 0; client->control->sync_new = 0;
engine->control->sync_remain--; engine->control->sync_remain--;
VERBOSE (engine, "sync poll interrupted for client %" VERBOSE (engine, "sync poll interrupted for client %"
PRIu32 "\n", client->control->id);
PRIu32, client->control->id);
} }
client->control->active_slowsync = 0; client->control->active_slowsync = 0;
engine->control->sync_clients--; engine->control->sync_clients--;
@@ -97,7 +97,7 @@ jack_sync_poll_stop (jack_engine_t *engine)
assert (poll_count == engine->control->sync_remain); assert (poll_count == engine->control->sync_remain);
VERBOSE (engine, VERBOSE (engine,
"sync poll halted with %" PRIu32 "sync poll halted with %" PRIu32
" clients and %8.6f secs remaining\n",
" clients and %8.6f secs remaining",
engine->control->sync_remain, engine->control->sync_remain,
(double) (engine->control->sync_time_left / 1000000.0)); (double) (engine->control->sync_time_left / 1000000.0));
engine->control->sync_remain = 0; engine->control->sync_remain = 0;
@@ -127,7 +127,7 @@ jack_sync_poll_start (jack_engine_t *engine)
engine->control->sync_remain = sync_count; engine->control->sync_remain = sync_count;
engine->control->sync_time_left = engine->control->sync_timeout; engine->control->sync_time_left = engine->control->sync_timeout;
VERBOSE (engine, "transport Starting, sync poll of %" PRIu32 VERBOSE (engine, "transport Starting, sync poll of %" PRIu32
" clients for %8.6f secs\n", engine->control->sync_remain,
" clients for %8.6f secs", engine->control->sync_remain,
(double) (engine->control->sync_time_left / 1000000.0)); (double) (engine->control->sync_time_left / 1000000.0));
} }


@@ -147,7 +147,7 @@ jack_sync_timeout (jack_engine_t *engine)
} }


/* timed out */ /* timed out */
VERBOSE (engine, "transport sync timeout\n");
VERBOSE (engine, "transport sync timeout");
ectl->sync_time_left = 0; ectl->sync_time_left = 0;
return TRUE; return TRUE;
} }
@@ -182,7 +182,7 @@ jack_timebase_reset (jack_engine_t *engine, jack_client_id_t client_id)
client->control->timebase_new = 0; client->control->timebase_new = 0;
engine->timebase_client = NULL; engine->timebase_client = NULL;
ectl->pending_time.valid = 0; ectl->pending_time.valid = 0;
VERBOSE (engine, "%s resigned as timebase master\n",
VERBOSE (engine, "%s resigned as timebase master",
client->control->name); client->control->name);
ret = 0; ret = 0;
} else } else
@@ -206,7 +206,7 @@ jack_timebase_set (jack_engine_t *engine,
client = jack_client_internal_by_id (engine, client_id); client = jack_client_internal_by_id (engine, client_id);


if (client == NULL) { if (client == NULL) {
VERBOSE (engine, " %" PRIu32 " no longer exists\n", client_id);
VERBOSE (engine, " %" PRIu32 " no longer exists", client_id);
jack_unlock_graph (engine); jack_unlock_graph (engine);
return EINVAL; return EINVAL;
} }
@@ -215,13 +215,13 @@ jack_timebase_set (jack_engine_t *engine,


/* see if timebase master is someone else */ /* see if timebase master is someone else */
if (client != engine->timebase_client) { if (client != engine->timebase_client) {
VERBOSE (engine, "conditional timebase for %s failed\n"
" %s is already the master\n",
client->control->name,
VERBOSE (engine, "conditional timebase for %s failed",
client->control->name);
VERBOSE (engine, " %s is already the master",
engine->timebase_client->control->name); engine->timebase_client->control->name);
ret = EBUSY; ret = EBUSY;
} else } else
VERBOSE (engine, " %s was already timebase master:\n",
VERBOSE (engine, " %s was already timebase master:",
client->control->name); client->control->name);


} else { } else {
@@ -234,7 +234,7 @@ jack_timebase_set (jack_engine_t *engine,
client->control->is_timebase = 1; client->control->is_timebase = 1;
if (client->control->active) if (client->control->active)
client->control->timebase_new = 1; client->control->timebase_new = 1;
VERBOSE (engine, "new timebase master: %s\n",
VERBOSE (engine, "new timebase master: %s",
client->control->name); client->control->name);
} }


@@ -297,7 +297,7 @@ jack_transport_client_exit (jack_engine_t *engine,
engine->timebase_client->control->is_timebase = 0; engine->timebase_client->control->is_timebase = 0;
engine->timebase_client->control->timebase_new = 0; engine->timebase_client->control->timebase_new = 0;
engine->timebase_client = NULL; engine->timebase_client = NULL;
VERBOSE (engine, "timebase master exit\n");
VERBOSE (engine, "timebase master exit");
} }
engine->control->current_time.valid = 0; engine->control->current_time.valid = 0;
engine->control->pending_time.valid = 0; engine->control->pending_time.valid = 0;
@@ -410,7 +410,7 @@ jack_transport_cycle_end (jack_engine_t *engine)
(jack_sync_timeout(engine))) { (jack_sync_timeout(engine))) {
ectl->transport_state = JackTransportRolling; ectl->transport_state = JackTransportRolling;
VERBOSE (engine, "transport Rolling, %8.6f sec" VERBOSE (engine, "transport Rolling, %8.6f sec"
" left for poll\n",
" left for poll",
(double) (ectl->sync_time_left / 1000000.0)); (double) (ectl->sync_time_left / 1000000.0));
} }
} }
@@ -419,7 +419,7 @@ jack_transport_cycle_end (jack_engine_t *engine)
cmd = ectl->transport_cmd; cmd = ectl->transport_cmd;
if (cmd != ectl->previous_cmd) { if (cmd != ectl->previous_cmd) {
ectl->previous_cmd = cmd; ectl->previous_cmd = cmd;
VERBOSE (engine, "transport command: %s\n",
VERBOSE (engine, "transport command: %s",
(cmd == TransportCommandStart? "START": "STOP")); (cmd == TransportCommandStart? "START": "STOP"));
} else } else
cmd = TransportCommandNone; cmd = TransportCommandNone;
@@ -435,7 +435,7 @@ jack_transport_cycle_end (jack_engine_t *engine)
jack_sync_poll_start(engine); jack_sync_poll_start(engine);
} else { } else {
ectl->transport_state = JackTransportRolling; ectl->transport_state = JackTransportRolling;
VERBOSE (engine, "transport Rolling\n");
VERBOSE (engine, "transport Rolling");
} }
} }
break; break;
@@ -443,7 +443,7 @@ jack_transport_cycle_end (jack_engine_t *engine)
case JackTransportStarting: case JackTransportStarting:
if (cmd == TransportCommandStop) { if (cmd == TransportCommandStop) {
ectl->transport_state = JackTransportStopped; ectl->transport_state = JackTransportStopped;
VERBOSE (engine, "transport Stopped\n");
VERBOSE (engine, "transport Stopped");
if (ectl->sync_remain) if (ectl->sync_remain)
jack_sync_poll_stop(engine); jack_sync_poll_stop(engine);
} else if (ectl->new_pos) { } else if (ectl->new_pos) {
@@ -452,7 +452,7 @@ jack_transport_cycle_end (jack_engine_t *engine)
jack_sync_poll_start(engine); jack_sync_poll_start(engine);
} else { } else {
ectl->transport_state = JackTransportRolling; ectl->transport_state = JackTransportRolling;
VERBOSE (engine, "transport Rolling\n");
VERBOSE (engine, "transport Rolling");
} }
} }
break; break;
@@ -460,7 +460,7 @@ jack_transport_cycle_end (jack_engine_t *engine)
case JackTransportRolling: case JackTransportRolling:
if (cmd == TransportCommandStop) { if (cmd == TransportCommandStop) {
ectl->transport_state = JackTransportStopped; ectl->transport_state = JackTransportStopped;
VERBOSE (engine, "transport Stopped\n");
VERBOSE (engine, "transport Stopped");
if (ectl->sync_remain) if (ectl->sync_remain)
jack_sync_poll_stop(engine); jack_sync_poll_stop(engine);
} else if (ectl->new_pos) { } else if (ectl->new_pos) {
@@ -490,7 +490,7 @@ jack_transport_cycle_end (jack_engine_t *engine)
jack_transport_copy_position(&ectl->request_time, jack_transport_copy_position(&ectl->request_time,
&ectl->pending_time); &ectl->pending_time);
VERBOSE (engine, "new transport position: %" PRIu32 VERBOSE (engine, "new transport position: %" PRIu32
", id=0x%" PRIx64 "\n", ectl->pending_time.frame,
", id=0x%" PRIx64, ectl->pending_time.frame,
ectl->pending_time.unique_1); ectl->pending_time.unique_1);
ectl->prev_request = ectl->pending_time.unique_1; ectl->prev_request = ectl->pending_time.unique_1;
ectl->pending_pos = 1; ectl->pending_pos = 1;
@@ -513,7 +513,7 @@ jack_transport_set_sync_timeout (jack_engine_t *engine,
jack_time_t usecs) jack_time_t usecs)
{ {
engine->control->sync_timeout = usecs; engine->control->sync_timeout = usecs;
VERBOSE (engine, "new sync timeout: %8.6f secs\n",
VERBOSE (engine, "new sync timeout: %8.6f secs",
(double) (usecs / 1000000.0)); (double) (usecs / 1000000.0));
return 0; return 0;
} }

+ 31
- 5
libjack/client.c View File

@@ -86,12 +86,11 @@ init_cpu ()
{ {
cpu_type = ((have_3dnow() << 8) | have_sse()); cpu_type = ((have_3dnow() << 8) | have_sse());
if (ARCH_X86_HAVE_3DNOW(cpu_type)) if (ARCH_X86_HAVE_3DNOW(cpu_type))
fprintf(stderr, "Enhanced3DNow! detected\n");
jack_info("Enhanced3DNow! detected");
if (ARCH_X86_HAVE_SSE2(cpu_type)) if (ARCH_X86_HAVE_SSE2(cpu_type))
fprintf(stderr, "SSE2 detected\n");
jack_info("SSE2 detected");
if ((!ARCH_X86_HAVE_3DNOW(cpu_type)) && (!ARCH_X86_HAVE_SSE2(cpu_type))) if ((!ARCH_X86_HAVE_3DNOW(cpu_type)) && (!ARCH_X86_HAVE_SSE2(cpu_type)))
fprintf(stderr,
"No supported SIMD instruction sets detected\n");
jack_info("No supported SIMD instruction sets detected");
jack_port_set_funcs(); jack_port_set_funcs();
} }


@@ -198,6 +197,14 @@ void
default_jack_error_callback (const char *desc) default_jack_error_callback (const char *desc)
{ {
fprintf(stderr, "%s\n", desc); fprintf(stderr, "%s\n", desc);
fflush(stderr);
}

void
default_jack_info_callback (const char *desc)
{
fprintf(stdout, "%s\n", desc);
fflush(stdout);
} }


void void
@@ -206,6 +213,19 @@ silent_jack_error_callback (const char *desc)
} }


void (*jack_error_callback)(const char *desc) = &default_jack_error_callback; void (*jack_error_callback)(const char *desc) = &default_jack_error_callback;
void (*jack_info_callback)(const char *desc) = &default_jack_info_callback;

void
jack_info (const char *fmt, ...)
{
va_list ap;
char buffer[300];

va_start (ap, fmt);
vsnprintf (buffer, sizeof(buffer), fmt, ap);
jack_info_callback (buffer);
va_end (ap);
}


static int static int
oop_client_deliver_request (void *ptr, jack_request_t *req) oop_client_deliver_request (void *ptr, jack_request_t *req)
@@ -528,7 +548,7 @@ server_connect (const char *server_name)
} }


//JOQ: temporary debug message //JOQ: temporary debug message
//fprintf (stderr, "DEBUG: connecting to `%s' server\n", server_name);
//jack_info ("DEBUG: connecting to `%s' server", server_name);


addr.sun_family = AF_UNIX; addr.sun_family = AF_UNIX;
snprintf (addr.sun_path, sizeof (addr.sun_path) - 1, "%s/jack_%d", snprintf (addr.sun_path, sizeof (addr.sun_path) - 1, "%s/jack_%d",
@@ -2054,6 +2074,12 @@ jack_set_error_function (void (*func) (const char *))
jack_error_callback = func; jack_error_callback = func;
} }


void
jack_set_info_function (void (*func) (const char *))
{
jack_info_callback = func;
}

int int
jack_set_graph_order_callback (jack_client_t *client, jack_set_graph_order_callback (jack_client_t *client,
JackGraphOrderCallback callback, void *arg) JackGraphOrderCallback callback, void *arg)


+ 3
- 3
libjack/messagebuffer.c View File

@@ -54,7 +54,7 @@ mb_flush()
{ {
/* called WITHOUT the mb_write_lock */ /* called WITHOUT the mb_write_lock */
while (mb_outbuffer != mb_inbuffer) { while (mb_outbuffer != mb_inbuffer) {
fputs(mb_buffers[mb_outbuffer], stderr);
jack_info(mb_buffers[mb_outbuffer]);
mb_outbuffer = MB_NEXT(mb_outbuffer); mb_outbuffer = MB_NEXT(mb_outbuffer);
} }
} }
@@ -111,10 +111,10 @@ jack_messagebuffer_exit ()
mb_flush(); mb_flush();


if (mb_overruns) if (mb_overruns)
fprintf(stderr, "WARNING: %d message buffer overruns!\n",
jack_error("WARNING: %d message buffer overruns!",
mb_overruns); mb_overruns);
else else
fprintf(stderr, "no message buffer overruns\n");
jack_info("no message buffer overruns");


pthread_mutex_destroy(&mb_write_lock); pthread_mutex_destroy(&mb_write_lock);
pthread_cond_destroy(&mb_ready_cond); pthread_cond_destroy(&mb_ready_cond);


+ 1
- 1
libjack/shm.c View File

@@ -380,7 +380,7 @@ jack_register_server (const char *server_name)


jack_set_server_prefix (server_name); jack_set_server_prefix (server_name);


fprintf (stderr, "JACK compiled with %s SHM support.\n", JACK_SHM_TYPE);
jack_info ("JACK compiled with %s SHM support.", JACK_SHM_TYPE);


if (jack_server_initialize_shm ()) if (jack_server_initialize_shm ())
return ENOMEM; return ENOMEM;


+ 1
- 1
libjack/simd.c View File

@@ -298,7 +298,7 @@ x86_sse_add2f (float *dest, const float *src, int length)


if (__builtin_expect(((long) src & 0xf) || ((long) dest & 0xf), 0)) if (__builtin_expect(((long) src & 0xf) || ((long) dest & 0xf), 0))
{ {
/*fprintf(stderr, "x86_sse_add2f(): non aligned pointers!\n");*/
/*jack_error("x86_sse_add2f(): non aligned pointers!");*/
si2 = 0; si2 = 0;
goto sse_nonalign; goto sse_nonalign;
} }


+ 1
- 1
libjack/transclient.c View File

@@ -247,7 +247,7 @@ jack_time_to_frames(const jack_client_t *client, jack_time_t now)


if (time.initialized) { if (time.initialized) {
#if 0 #if 0
fprintf (stderr, "now = %Lu current wakeup = %Lu next = %Lu frames = %lu + %f => %lu\n",
jack_info ("now = %Lu current wakeup = %Lu next = %Lu frames = %lu + %f => %lu",
now, time.current_wakeup, time.next_wakeup, time.frames, now, time.current_wakeup, time.next_wakeup, time.frames,
(double) (now - time.current_wakeup)/ (double) (now - time.current_wakeup)/
(time.next_wakeup - time.current_wakeup), (time.next_wakeup - time.current_wakeup),


+ 2
- 2
libjack/unlock.c View File

@@ -66,7 +66,7 @@ cleanup_mlock ()
snprintf (path, sizeof(path), "/proc/%d/maps", getpid()); snprintf (path, sizeof(path), "/proc/%d/maps", getpid());


if ((map = fopen (path, "r")) == NULL) { if ((map = fopen (path, "r")) == NULL) {
fprintf (stderr, "can't open map file\n");
jack_error ("can't open map file");
return; return;
} }


@@ -118,7 +118,7 @@ cleanup_mlock ()
} }
if (unlock) { if (unlock) {
fprintf (stderr, "unlocking %s\n", path);
jack_info ("unlocking %s", path);
munlock ((char *) start, end - start); munlock ((char *) start, end - start);
} }
} }


Loading…
Cancel
Save