From f0bfb84688e2ba302f41209db9c037a38b28a9cc Mon Sep 17 00:00:00 2001 From: sletz Date: Tue, 4 Mar 2008 12:20:10 +0000 Subject: [PATCH] Version 0.109.4 : Nedko Arnaudov log patch git-svn-id: svn+ssh://jackaudio.org/trunk/jack@1092 0c269be4-1314-0410-8aa9-9f06e86f4224 --- configure.ac | 2 +- drivers/alsa-midi/alsa_rawmidi.c | 80 ++++++++-------- drivers/alsa/alsa_driver.c | 58 ++++++------ drivers/alsa/hammerfall.c | 2 +- drivers/alsa/usx2y.c | 10 +- drivers/coreaudio/coreaudio_driver.c | 6 +- drivers/dummy/dummy_driver.c | 8 +- drivers/oss/oss_driver.c | 16 ++-- drivers/portaudio/portaudio_driver.c | 18 ++-- jack/internal.h | 2 + jack/jack.h | 15 +++ jackd/clientengine.c | 22 ++--- jackd/engine.c | 131 +++++++++++++-------------- jackd/jackd.c | 35 ++++--- jackd/transengine.c | 44 ++++----- libjack/client.c | 36 +++++++- libjack/messagebuffer.c | 6 +- libjack/shm.c | 2 +- libjack/simd.c | 2 +- libjack/transclient.c | 2 +- libjack/unlock.c | 4 +- 21 files changed, 271 insertions(+), 230 deletions(-) diff --git a/configure.ac b/configure.ac index bfc3bf7..14bad06 100644 --- a/configure.ac +++ b/configure.ac @@ -17,7 +17,7 @@ dnl changes are made dnl --- JACK_MAJOR_VERSION=0 JACK_MINOR_VERSION=109 -JACK_MICRO_VERSION=3 +JACK_MICRO_VERSION=4 dnl --- dnl HOWTO: updating the jack protocol version diff --git a/drivers/alsa-midi/alsa_rawmidi.c b/drivers/alsa-midi/alsa_rawmidi.c index 6cf3927..08716be 100644 --- a/drivers/alsa-midi/alsa_rawmidi.c +++ b/drivers/alsa-midi/alsa_rawmidi.c @@ -218,7 +218,7 @@ int stream_init(midi_stream_t *s, alsa_rawmidi_t *midi, const char *name) s->name = name; if (pipe(s->wake_pipe)==-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; } 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; midi->client = jack; 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; } @@ -526,7 +526,7 @@ void alsa_get_id(alsa_id_t *id, snd_rawmidi_info_t *info) static inline 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 { @@ -555,14 +555,14 @@ void scan_cycle(alsa_rawmidi_t *midi) scan_t scan; midi_port_t **ports; - //debug_log("scan: cleanup\n"); + //debug_log("scan: cleanup"); scan_cleanup(midi); scan.midi = midi; scan.iterator = &midi->scan.ports; snd_rawmidi_info_alloca(&scan.info); - //debug_log("scan: rescan\n"); + //debug_log("scan: rescan"); while ((err = snd_card_next(&card))>=0 && card>=0) { char name[32]; 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; *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; } @@ -687,7 +687,7 @@ midi_port_t** scan_port_open(alsa_rawmidi_t *midi, midi_port_t **list) port->state = PORT_ADDED_TO_JACK; 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; 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); fail_0: *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); 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; 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; if (port->id.id[2] ) (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); return list; } 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; } } @@ -730,7 +730,7 @@ void* scan_thread(void *arg) wakeup.events = POLLIN|POLLERR|POLLNVAL; while (midi->keep_walking) { int res; - //error_log("scanning....\n"); + //error_log("scanning...."); scan_cycle(midi); res = poll(&wakeup, 1, 2000); 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) { int periods_lost = (cur_frames - proc.frame_time) / 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 @@ -802,7 +802,7 @@ void jack_process(midi_stream_t *str, jack_nframes_t nframes) ++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; 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; npfds = 1; - //debug_log("midi_thread(%s): enter\n", str->name); + //debug_log("midi_thread(%s): enter", str->name); while (midi->keep_walking) { int poll_timeout; @@ -850,13 +850,13 @@ void *midi_thread(void *arg) clock_nanosleep(CLOCK_MONOTONIC, 0, &ts, NULL); } 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) break; if (res < 0) { if (errno == EINTR) 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; } @@ -873,7 +873,7 @@ void *midi_thread(void *arg) midi_port_t *port; jack_ringbuffer_read(str->midi.new_ports, (char*)&port, sizeof(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) @@ -901,10 +901,10 @@ void *midi_thread(void *arg) ++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; 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; /* @@ -913,16 +913,16 @@ void *midi_thread(void *arg) * So, zero timeout will not cause busy-looping. */ 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 } else if (proc.next_time != NFRAMES_INF) { jack_time_t wait_frames = proc.next_time - proc.cur_time; jack_nframes_t rate = jack_get_sample_rate(midi->client); 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 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; } @@ -935,17 +935,17 @@ int midi_is_ready(process_midi_t *proc) unsigned short revents = 0; int res = snd_rawmidi_poll_descriptors_revents(port->rawmidi, proc->rpfds, port->npfds, &revents); 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; } if (revents & ~proc->mode) { - debug_log("midi: port %s failed\n", port->name); + debug_log("midi: port %s failed", port->name); return 0; } if (revents & proc->mode) { port->is_ready = 1; - debug_log("midi: is_ready %s\n", port->name); + debug_log("midi: is_ready %s", port->name); } } return 1; @@ -958,7 +958,7 @@ int midi_update_pfds(process_midi_t *proc) if (port->npfds == 0) { port->npfds = snd_rawmidi_poll_descriptors_count(port->rawmidi); 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; } 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 done = midi_unpack_buf(&port->unpack, (unsigned char*)vec[i].buf, avail, p->buffer, time); 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; } 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) { port->overruns++; 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 port->base.npfds = 0; return 1; } res = snd_rawmidi_read(port->base.rawmidi, vec[0].buf, vec[0].len); 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; } else if (res > 0) { event_head_t event; @@ -1061,7 +1061,7 @@ int do_midi_input(process_midi_t *proc) event.size = res; event.overruns = port->overruns; 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(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 i; 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; ibuffer, i); 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; } @@ -1118,7 +1118,7 @@ void do_jack_output(process_jack_t *proc) hdr.time = proc->frame_time + event.time + proc->nframes; hdr.size = event.size; 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; break; } 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) - 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 if (!port->todo && port->next_event.time && port->next_event.time < proc->next_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) { @@ -1165,15 +1165,15 @@ int do_midi_output(process_midi_t *proc) res = snd_rawmidi_write(port->base.rawmidi, vec[0].buf, size); if (res > 0) { 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; worked = 1; } else if (res == -EWOULDBLOCK) { 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; } 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; } snd_rawmidi_drain(port->base.rawmidi); @@ -1186,7 +1186,7 @@ int do_midi_output(process_midi_t *proc) if (!port->todo) { int i; 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; ibase.npfds; ++i) proc->wpfds[i].events &= ~POLLOUT; } else { diff --git a/drivers/alsa/alsa_driver.c b/drivers/alsa/alsa_driver.c index f684e12..b6bdcab 100644 --- a/drivers/alsa/alsa_driver.c +++ b/drivers/alsa/alsa_driver.c @@ -115,7 +115,7 @@ alsa_driver_check_card_type (alsa_driver_t *driver) char tmp[5]; strncpy(tmp,strstr(driver->alsa_name_playback,"hw"),4); tmp[4]='\0'; - printf("control device %s\n",tmp); + jack_info("control device %s",tmp); ctl_name = strdup(tmp); } else { ctl_name = strdup(driver->alsa_name_playback); @@ -243,21 +243,21 @@ alsa_driver_setup_io_function_pointers (alsa_driver_t *driver) switch (driver->dither) { case Rectangular: - printf("Rectangular dithering at 16 bits\n"); + jack_info("Rectangular dithering at 16 bits"); driver->write_via_copy = driver->quirk_bswap? sample_move_dither_rect_d16_sSs: sample_move_dither_rect_d16_sS; break; case Triangular: - printf("Triangular dithering at 16 bits\n"); + jack_info("Triangular dithering at 16 bits"); driver->write_via_copy = driver->quirk_bswap? sample_move_dither_tri_d16_sSs: sample_move_dither_tri_d16_sS; break; 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? sample_move_dither_shaped_d16_sSs: sample_move_dither_shaped_d16_sS; @@ -279,21 +279,21 @@ alsa_driver_setup_io_function_pointers (alsa_driver_t *driver) switch (driver->dither) { case Rectangular: - printf("Rectangular dithering at 16 bits\n"); + jack_info("Rectangular dithering at 16 bits"); driver->write_via_copy = driver->quirk_bswap? sample_move_dither_rect_d24_sSs: sample_move_dither_rect_d24_sS; break; case Triangular: - printf("Triangular dithering at 16 bits\n"); + jack_info("Triangular dithering at 16 bits"); driver->write_via_copy = driver->quirk_bswap? sample_move_dither_tri_d24_sSs: sample_move_dither_tri_d24_sS; break; 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? sample_move_dither_shaped_d24_sSs: sample_move_dither_shaped_d24_sS; @@ -315,21 +315,21 @@ alsa_driver_setup_io_function_pointers (alsa_driver_t *driver) switch (driver->dither) { case Rectangular: - printf("Rectangular dithering at 16 bits\n"); + jack_info("Rectangular dithering at 16 bits"); driver->write_via_copy = driver->quirk_bswap? sample_move_dither_rect_d32u24_sSs: sample_move_dither_rect_d32u24_sS; break; case Triangular: - printf("Triangular dithering at 16 bits\n"); + jack_info("Triangular dithering at 16 bits"); driver->write_via_copy = driver->quirk_bswap? sample_move_dither_tri_d32u24_sSs: sample_move_dither_tri_d32u24_sS; break; 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? sample_move_dither_shaped_d32u24_sSs: sample_move_dither_shaped_d32u24_sS; @@ -436,7 +436,7 @@ alsa_driver_configure_stream (alsa_driver_t *driver, char *device_name, } else { 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; } } @@ -514,7 +514,7 @@ alsa_driver_configure_stream (alsa_driver_t *driver, char *device_name, stream_name); 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)) { 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 - 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); @@ -621,8 +621,8 @@ alsa_driver_set_parameters (alsa_driver_t *driver, driver->frames_per_cycle = frames_per_cycle; 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); 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 (errno == EINTR) { - printf ("poll interrupt\n"); + jack_info ("poll interrupt"); // this happens mostly when run // under gdb, or when exiting due to a signal if (under_gdb) { @@ -1329,8 +1329,8 @@ alsa_driver_wait (alsa_driver_t *driver, int extra_fd, int *status, float } #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); #endif @@ -1368,8 +1368,8 @@ alsa_driver_wait (alsa_driver_t *driver, int extra_fd, int *status, float if (revents & POLLOUT) { need_playback = 0; #ifdef DEBUG_WAKEUP - fprintf (stderr, "%" PRIu64 - " playback stream ready\n", + jack_info ("%" PRIu64 + " playback stream ready", poll_ret); #endif } @@ -1391,8 +1391,8 @@ alsa_driver_wait (alsa_driver_t *driver, int extra_fd, int *status, float if (revents & POLLIN) { need_capture = 0; #ifdef DEBUG_WAKEUP - fprintf (stderr, "%" PRIu64 - " capture stream ready\n", + jack_info ("%" PRIu64 + " capture stream ready", poll_ret); #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; #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); #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, offset, contiguous)) < 0) { jack_error ("ALSA: could not complete read of %" - PRIu32 " frames: error = %d\n", contiguous, err); + PRIu32 " frames: error = %d", contiguous, err); return -1; } @@ -2011,8 +2011,8 @@ alsa_driver_new (char *name, char *playback_alsa_device, 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 : "-", capturing ? capture_alsa_device : "-", frames_per_cycle, user_nperiods, rate, @@ -2343,7 +2343,7 @@ dither_opt (char c, DitherAlgorithm* dither) break; default: - fprintf (stderr, "ALSA driver: illegal dithering mode %c\n", c); + jack_error ("ALSA driver: illegal dithering mode %c", c); return -1; } return 0; @@ -2600,7 +2600,7 @@ driver_initialize (jack_client_t *client, const JSList * params) case 'r': srate = param->value.ui; - fprintf (stderr, "apparent rate = %d\n", srate); + jack_info ("apparent rate = %d", srate); break; case 'p': diff --git a/drivers/alsa/hammerfall.c b/drivers/alsa/hammerfall.c index 4adf6f9..814a464 100644 --- a/drivers/alsa/hammerfall.c +++ b/drivers/alsa/hammerfall.c @@ -109,7 +109,7 @@ hammerfall_check_sync (hammerfall_t *h, snd_ctl_elem_value_t *ctl) int val; 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_value_get_id (ctl, ctl_id); diff --git a/drivers/alsa/usx2y.c b/drivers/alsa/usx2y.c index f90e10b..f895247 100644 --- a/drivers/alsa/usx2y.c +++ b/drivers/alsa/usx2y.c @@ -122,7 +122,7 @@ usx2y_driver_get_channel_addresses_playback (alsa_driver_t *driver, if (dbg_offset < (sizeof(dbg_buffer) - 256)) dbg_offset += sprintf(dbg_buffer + dbg_offset, "avail %li@%p\n", *playback_avail, driver->playback_addr[0]); else { - printf(dbg_buffer); + jack_info_multiline(dbg_buffer); return -1; } #endif @@ -196,7 +196,7 @@ usx2y_driver_get_channel_addresses_capture (alsa_driver_t *driver, if (dbg_offset < (sizeof(dbg_buffer) - 256)) dbg_offset += sprintf(dbg_buffer + dbg_offset, "avail %li@%p\n", *capture_avail, driver->capture_addr[0]); else { - printf(dbg_buffer); + jack_info_multiline(dbg_buffer); return -1; } #endif @@ -397,7 +397,7 @@ usx2y_driver_null_cycle (alsa_driver_t* driver, jack_nframes_t nframes) int chn; VERBOSE(driver->engine, - "usx2y_driver_null_cycle (%p, %i)\n", driver, nframes); + "usx2y_driver_null_cycle (%p, %i)", driver, nframes); if (driver->capture_handle) { nf = nframes; @@ -687,8 +687,8 @@ jack_alsa_usx2y_hw_new (alsa_driver_t *driver) hw->private = h; /* Set our own operational function pointers. */ 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); } } diff --git a/drivers/coreaudio/coreaudio_driver.c b/drivers/coreaudio/coreaudio_driver.c index 343f817..9a49a22 100755 --- a/drivers/coreaudio/coreaudio_driver.c +++ b/drivers/coreaudio/coreaudio_driver.c @@ -272,8 +272,8 @@ static OSStatus display_device_names() err = AudioDeviceGetProperty(devices[i], 0, false, kAudioDevicePropertyDeviceName, &size, device_name); if (err != noErr) 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; @@ -627,7 +627,7 @@ static jack_driver_t *coreaudio_driver_new(char* name, jack_driver_init((jack_driver_t *) driver); 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; } diff --git a/drivers/dummy/dummy_driver.c b/drivers/dummy/dummy_driver.c index 802373f..b14aba3 100644 --- a/drivers/dummy/dummy_driver.c +++ b/drivers/dummy/dummy_driver.c @@ -50,7 +50,7 @@ FakeVideoSync( dummy_driver_t *driver ) jack_position_t *position = &driver->engine->control->current_time; 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); } @@ -87,7 +87,7 @@ dummy_driver_wait (dummy_driver_t *driver, int extra_fd, int *status, > (PRETEND_BUFFER_SIZE * 1000000LL / driver->sample_rate)) { /* xrun */ - fprintf(stderr,"**** dummy: xrun of %ju usec\n", + jack_error("**** dummy: xrun of %ju usec", (uintmax_t)now - driver->next_time); driver->next_time = now + driver->wait_time; } else { @@ -267,8 +267,8 @@ dummy_driver_new (jack_client_t * client, { 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); driver = (dummy_driver_t *) calloc (1, sizeof (dummy_driver_t)); diff --git a/drivers/oss/oss_driver.c b/drivers/oss/oss_driver.c index 63d83e9..42226e9 100644 --- a/drivers/oss/oss_driver.c +++ b/drivers/oss/oss_driver.c @@ -599,14 +599,14 @@ static int oss_driver_start (oss_driver_t *driver) jack_error( "OSS: failed to set samplerate for %s: %s@%i, errno=%d", 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)); period_size = get_fragment(infd) / samplesize / channels; if (period_size != driver->period_size && !driver->ignorehwbuf) { - printf("oss_driver: period size update: %u\n", + jack_info("oss_driver: period size update: %u", period_size); driver->period_size = period_size; driver->period_usecs = @@ -634,7 +634,7 @@ static int oss_driver_start (oss_driver_t *driver) jack_error( "OSS: failed to set samplerate for %s: %s@%i, errno=%d", 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, get_fragment(outfd)); @@ -642,7 +642,7 @@ static int oss_driver_start (oss_driver_t *driver) if (period_size != driver->period_size && !driver->ignorehwbuf) { - printf("oss_driver: period size update: %u\n", + jack_info("oss_driver: period size update: %u", period_size); driver->period_size = period_size; driver->period_usecs = @@ -691,7 +691,7 @@ static int oss_driver_start (oss_driver_t *driver) 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); 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); 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); @@ -1102,7 +1102,7 @@ jack_driver_desc_t * driver_get_descriptor () desc = (jack_driver_desc_t *) calloc(1, sizeof(jack_driver_desc_t)); 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); return NULL; } @@ -1112,7 +1112,7 @@ jack_driver_desc_t * driver_get_descriptor () params = calloc(desc->nparams, sizeof(jack_driver_param_desc_t)); 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); return NULL; } diff --git a/drivers/portaudio/portaudio_driver.c b/drivers/portaudio/portaudio_driver.c index e9061d6..c11aee9 100644 --- a/drivers/portaudio/portaudio_driver.c +++ b/drivers/portaudio/portaudio_driver.c @@ -332,9 +332,9 @@ portaudio_driver_set_parameters (portaudio_driver_t* driver, // JOQ: this driver is dead. How do we terminate it? 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; } } @@ -345,8 +345,8 @@ portaudio_driver_reset_parameters (portaudio_driver_t* driver, jack_nframes_t rate) { 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; } @@ -541,7 +541,7 @@ portaudio_driver_new (char *name, jack_driver_init ((jack_driver_t *) driver); 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; } @@ -653,9 +653,9 @@ portaudio_driver_new (char *name, error: 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); return NULL; } diff --git a/jack/internal.h b/jack/internal.h index 5d1e460..7a809f9 100644 --- a/jack/internal.h +++ b/jack/internal.h @@ -37,6 +37,8 @@ /* Needed by */ extern void jack_error (const char *fmt, ...); +extern void jack_info (const char *fmt, ...); + #include #include #include diff --git a/jack/jack.h b/jack/jack.h index 929fe82..f02ca66 100644 --- a/jack/jack.h +++ b/jack/jack.h @@ -856,6 +856,21 @@ extern void (*jack_error_callback)(const char *msg); */ 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 } #endif diff --git a/jackd/clientengine.c b/jackd/clientengine.c index 03d57b3..03d076f 100644 --- a/jackd/clientengine.c +++ b/jackd/clientengine.c @@ -87,7 +87,7 @@ jack_client_do_deactivate (jack_engine_t *engine, static void 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); /* 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 */ - 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 */ @@ -187,7 +187,7 @@ jack_remove_clients (jack_engine_t* engine) if (client->error >= JACK_ERROR_WITH_SOCKETS) { VERBOSE (engine, "removing failed " "client %s state = %s errors" - " = %d\n", + " = %d", client->control->name, jack_client_state_name (client), client->error); @@ -197,7 +197,7 @@ jack_remove_clients (jack_engine_t* engine) } else { VERBOSE (engine, "client failure: " "client %s state = %s errors" - " = %d\n", + " = %d", client->control->name, jack_client_state_name (client), client->error); @@ -527,7 +527,7 @@ setup_client (jack_engine_t *engine, ClientType type, char *name, } VERBOSE (engine, "new client: %s, id = %" PRIu32 - " type %d @ %p fd = %d\n", + " type %d @ %p fd = %d", client->control->name, client->control->id, type, client->control, client_fd); @@ -568,7 +568,7 @@ setup_client (jack_engine_t *engine, ClientType type, char *name, /* failed: clean up client data */ VERBOSE (engine, - "%s jack_initialize() failed!\n", + "%s jack_initialize() failed!", client->control->name); jack_lock_graph (engine); 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); if ((client = jack_client_internal_by_id (engine, id))) { - VERBOSE (engine, "unloading client \"%s\"\n", + VERBOSE (engine, "unloading client \"%s\"", client->control->name); jack_remove_client (engine, client); status = 0; @@ -824,7 +824,7 @@ jack_client_disconnect (jack_engine_t *engine, int fd) if (client) { 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), client->error); 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; 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.options); @@ -917,7 +917,7 @@ jack_intclient_load_request (jack_engine_t *engine, jack_request_t *req) if (client == NULL) { status |= JackFailure; /* just making sure */ req->x.intclient.id = 0; - VERBOSE (engine, "load failed, status = 0x%x\n", status); + VERBOSE (engine, "load failed, status = 0x%x", status); } else { 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); pthread_mutex_lock (&engine->request_lock); } else { - VERBOSE (engine, "invalid unload request\n"); + VERBOSE (engine, "invalid unload request"); req->status = JackFailure; } } diff --git a/jackd/engine.c b/jackd/engine.c index f4aab66..0531f7a 100644 --- a/jackd/engine.c +++ b/jackd/engine.c @@ -510,7 +510,7 @@ jack_driver_buffer_size (jack_engine_t *engine, jack_nframes_t nframes) jack_event_t event; JSList *node; - VERBOSE (engine, "new buffer size %" PRIu32 "\n", nframes); + VERBOSE (engine, "new buffer size %" PRIu32, nframes); engine->control->buffer_size = nframes; if (engine->driver) @@ -709,7 +709,7 @@ jack_process_external(jack_engine_t *engine, JSList *node) " waiting on %d for %" PRIu64 " usecs, status = %d sig = %" PRIu64 " awa = %" PRIu64 " fin = %" PRIu64 - " dur=%" PRIu64 "\n", + " dur=%" PRIu64, now, client->subgraph_wait_fd, now - then, @@ -808,7 +808,7 @@ jack_calc_cpu_load(jack_engine_t *engine) engine->rolling_client_usecs[engine->rolling_client_usecs_index++] = 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)); 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); 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); } @@ -880,7 +880,7 @@ jack_engine_post_process (jack_engine_t *engine) ctl->timed_out++) { VERBOSE(engine, "client %s error: awake_at = %" PRIu64 - " state = %d timed_out = %d\n", + " state = %d timed_out = %d", ctl->name, ctl->awake_at, ctl->state, @@ -1077,14 +1077,14 @@ static int check_capabilities (jack_engine_t *engine) if (caps == NULL) { VERBOSE (engine, "check: could not allocate capability" - " working storage\n"); + " working storage"); return 0; } pid = getpid (); cap_clear (caps); if (capgetp (pid, caps)) { VERBOSE (engine, "check: could not get capabilities " - "for process %d\n", pid); + "for process %d", pid); return 0; } /* 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) { VERBOSE (engine, "give: could not allocate capability" - " working storage\n"); + " working storage"); return -1; } cap_clear(caps); if (capgetp (pid, caps)) { VERBOSE (engine, "give: could not get current " - "capabilities for process %d\n", pid); + "capabilities for process %d", pid); cap_clear(caps); } 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) { jack_error ("could not give capabilities to " - "process %d\n", + "process %d", cap_pid); } else { VERBOSE (engine, "gave capabilities to" - " process %d\n", + " process %d", cap_pid); } @@ -1672,7 +1672,7 @@ jack_engine_new (int realtime, int rtpriority, int do_mlock, int do_unlock, &jack_builtin_port_types[i], 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); /* 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); 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.reset_pending = 0; @@ -1764,20 +1764,20 @@ jack_engine_new (int realtime, int rtpriority, int do_mlock, int do_unlock, #ifdef USE_CAPABILITIES if (uid == 0 || euid == 0) { VERBOSE (engine, "running with uid=%d and euid=%d, " - "will not try to use capabilites\n", + "will not try to use capabilites", uid, euid); } else { /* only try to use capabilities if not running as root */ engine->control->has_capabilities = check_capabilities (engine); if (engine->control->has_capabilities == 0) { VERBOSE (engine, "required capabilities not " - "available\n"); + "available"); } if (engine->verbose) { size_t size; cap_t cap = cap_init(); capgetp(0, cap); - VERBOSE (engine, "capabilities: %s\n", + VERBOSE (engine, "capabilities: %s", cap_to_text(cap, &size)); } } @@ -1852,7 +1852,7 @@ jack_engine_freewheel (void *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 have to do anything about scheduling. @@ -1872,7 +1872,7 @@ jack_engine_freewheel (void *arg) jack_unlock_graph (engine); } - VERBOSE (engine, "freewheel came to an end, naturally\n"); + VERBOSE (engine, "freewheel came to an end, naturally"); return 0; } @@ -1929,7 +1929,7 @@ jack_stop_freewheeling (jack_engine_t* engine) } if (!engine->freewheeling) { - VERBOSE (engine, "stop freewheel when not freewheeling\n"); + VERBOSE (engine, "stop freewheel when not freewheeling"); return 0; } @@ -1938,9 +1938,9 @@ jack_stop_freewheeling (jack_engine_t* engine) */ engine->freewheeling = 0; - VERBOSE (engine, "freewheeling stopped, waiting for thread\n"); + VERBOSE (engine, "freewheeling stopped, waiting for thread"); pthread_join (engine->freewheel_thread, &ftstatus); - VERBOSE (engine, "freewheel thread has returned\n"); + VERBOSE (engine, "freewheel thread has returned"); /* 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 (kill (client->control->pid, 0)) { VERBOSE(engine, - "client %s has died/exited\n", + "client %s has died/exited", client->control->name); client->error++; } @@ -2120,7 +2120,7 @@ jack_run_cycle (jack_engine_t *engine, jack_nframes_t nframes, if (nframes != b_size) { VERBOSE (engine, "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) 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 */ @@ -2160,23 +2160,23 @@ jack_engine_delete (jack_engine_t *engine) if (engine->driver) { jack_driver_t* driver = engine->driver; - VERBOSE (engine, "stopping driver\n"); + VERBOSE (engine, "stopping driver"); driver->stop (driver); - // VERBOSE (engine, "detaching driver\n"); + // VERBOSE (engine, "detaching driver"); // driver->detach (driver, engine); - VERBOSE (engine, "unloading driver\n"); + VERBOSE (engine, "unloading driver"); jack_driver_unload (driver); 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) { jack_release_shm (&engine->port_segment[i]); jack_destroy_shm (&engine->port_segment[i]); } /* stop the other engine threads */ - VERBOSE (engine, "stopping server thread\n"); + VERBOSE (engine, "stopping server thread"); #if JACK_USE_MACH_THREADS // 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. */ 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_join (engine->watchdog_thread, NULL); } #endif - VERBOSE (engine, "last xrun delay: %.3f usecs\n", + VERBOSE (engine, "last xrun delay: %.3f 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); /* free engine control shm segment */ engine->control = NULL; - VERBOSE (engine, "freeing engine shared memory\n"); + VERBOSE (engine, "freeing engine shared memory"); jack_release_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); jack_messagebuffer_exit(); @@ -2409,7 +2408,7 @@ jack_rechain_graph (jack_engine_t *engine) subgraph_client = 0; - VERBOSE(engine, "++ jack_rechain_graph():\n"); + VERBOSE(engine, "++ jack_rechain_graph():"); event.type = GraphReordered; @@ -2455,7 +2454,7 @@ jack_rechain_graph (jack_engine_t *engine) jack_get_fifo_fd (engine, n); VERBOSE (engine, "client %s: wait_fd=" "%d, execution_order=" - "%lu.\n", + "%lu.", subgraph_client-> control->name, subgraph_client-> @@ -2465,7 +2464,7 @@ jack_rechain_graph (jack_engine_t *engine) VERBOSE (engine, "client %s: internal " "client, execution_order=" - "%lu.\n", + "%lu.", client->control->name, n); /* this does the right thing for @@ -2491,7 +2490,7 @@ jack_rechain_graph (jack_engine_t *engine) jack_get_fifo_fd (engine, n); VERBOSE (engine, "client %s: " "start_fd=%d, execution" - "_order=%lu.\n", + "_order=%lu.", subgraph_client-> control->name, subgraph_client-> @@ -2509,7 +2508,7 @@ jack_rechain_graph (jack_engine_t *engine) VERBOSE (engine, "client %s: in" " subgraph after %s, " "execution_order=" - "%lu.\n", + "%lu.", client->control->name, subgraph_client-> control->name, n); @@ -2541,12 +2540,12 @@ jack_rechain_graph (jack_engine_t *engine) subgraph_client->subgraph_wait_fd = jack_get_fifo_fd (engine, n); VERBOSE (engine, "client %s: wait_fd=%d, " - "execution_order=%lu (last client).\n", + "execution_order=%lu (last client).", subgraph_client->control->name, subgraph_client->subgraph_wait_fd, n); } - VERBOSE (engine, "-- jack_rechain_graph()\n"); + VERBOSE (engine, "-- jack_rechain_graph()"); return err; } @@ -2584,7 +2583,7 @@ jack_get_port_total_latency (jack_engine_t *engine, } #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 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))) { #ifdef DEBUG_TOTAL_LATENCY_COMPUTATION - fprintf (stderr, "%s\tskip connection %s->%s\n", + jack_info ("%s\tskip connection %s->%s", prefix, connection->source->shared->name, connection->destination->shared->name); @@ -2611,7 +2610,7 @@ jack_get_port_total_latency (jack_engine_t *engine, } #ifdef DEBUG_TOTAL_LATENCY_COMPUTATION - fprintf (stderr, "%s\tconnection %s->%s ... ", + jack_info ("%s\tconnection %s->%s ... ", prefix, connection->source->shared->name, connection->destination->shared->name); @@ -2658,7 +2657,7 @@ jack_get_port_total_latency (jack_engine_t *engine, } #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 return latency + max_latency; @@ -2793,7 +2792,7 @@ jack_check_acyclic (jack_engine_t *engine) int stuck; int unsortedclients = 0; - VERBOSE (engine, "checking for graph become acyclic\n"); + VERBOSE (engine, "checking for graph become acyclic"); for (srcnode = engine->clients; srcnode; srcnode = jack_slist_next (srcnode)) { @@ -2834,10 +2833,10 @@ jack_check_acyclic (jack_engine_t *engine) if (stuck) { - VERBOSE (engine, "graph is still cyclic\n" ); + VERBOSE (engine, "graph is still cyclic" ); } else { - VERBOSE (engine, "graph has become acyclic\n"); + VERBOSE (engine, "graph has become acyclic"); /* turn feedback connections around in sortfeeds */ for (srcnode = engine->clients; srcnode; @@ -2863,7 +2862,7 @@ jack_check_acyclic (jack_engine_t *engine) VERBOSE (engine, "reversing connection from " - "%s to %s\n", + "%s to %s", conn->srcclient->control->name, conn->dstclient->control->name); 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) { @@ -2896,7 +2895,7 @@ void jack_dump_configuration(jack_engine_t *engine, int take_lock) jack_connection_internal_t* connection; int n, m, o; - fprintf(stderr, "engine.c: <-- dump begins -->\n"); + jack_info ("engine.c: <-- dump begins -->"); if (take_lock) { 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; 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, ctl->name, ctl->type, @@ -2920,7 +2919,7 @@ void jack_dump_configuration(jack_engine_t *engine, int take_lock) portnode = jack_slist_next (portnode)) { 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); 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 *) connectionnode->data; - fprintf(stderr, "\t\t connection #%d: %s %s\n", + jack_info("\t\t connection #%d: %s %s", ++o, (port->shared->flags & 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 @@ -3060,7 +3059,7 @@ jack_port_do_connect (jack_engine_t *engine, feedback */ VERBOSE (engine, - "connect %s and %s (output)\n", + "connect %s and %s (output)", srcport->shared->name, dstport->shared->name); @@ -3083,7 +3082,7 @@ jack_port_do_connect (jack_engine_t *engine, this is a feedback connection */ VERBOSE (engine, - "connect %s and %s (feedback)\n", + "connect %s and %s (feedback)", srcport->shared->name, dstport->shared->name); @@ -3093,7 +3092,7 @@ jack_port_do_connect (jack_engine_t *engine, connection->dir = -1; engine->feedbackcount++; VERBOSE (engine, - "feedback count up to %d\n", + "feedback count up to %d", engine->feedbackcount); } else { @@ -3101,7 +3100,7 @@ jack_port_do_connect (jack_engine_t *engine, /* this is not a feedback connection */ VERBOSE (engine, - "connect %s and %s (forward)\n", + "connect %s and %s (forward)", srcport->shared->name, dstport->shared->name); @@ -3116,7 +3115,7 @@ jack_port_do_connect (jack_engine_t *engine, /* this is a connection to self */ VERBOSE (engine, - "connect %s and %s (self)\n", + "connect %s and %s (self)", srcport->shared->name, dstport->shared->name); @@ -3171,7 +3170,7 @@ jack_port_disconnect_internal (jack_engine_t *engine, if (connect->source == srcport && connect->destination == dstport) { - VERBOSE (engine, "DIS-connect %s and %s\n", + VERBOSE (engine, "DIS-connect %s and %s", srcport->shared->name, dstport->shared->name); @@ -3236,7 +3235,7 @@ jack_port_disconnect_internal (jack_engine_t *engine, (dst->sortfeeds, src); engine->feedbackcount--; VERBOSE (engine, - "feedback count down to %d\n", + "feedback count down to %d", engine->feedbackcount); } @@ -3267,7 +3266,7 @@ jack_port_do_disconnect_all (jack_engine_t *engine, return -1; } - VERBOSE (engine, "clear connections for %s\n", + VERBOSE (engine, "clear connections for %s", engine->internal_ports[port_id].shared->name); jack_lock_graph (engine); @@ -3594,7 +3593,7 @@ next: jack_port_registration_notify (engine, port_id, TRUE); 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); req->x.port_info.port_id = port_id; diff --git a/jackd/jackd.c b/jackd/jackd.c index ea92ae4..9af4df3 100644 --- a/jackd/jackd.c +++ b/jackd/jackd.c @@ -148,14 +148,14 @@ jack_main (jack_driver_desc_t * driver_desc, JSList * driver_params) temporary, verbose, client_timeout, port_max, getpid(), frame_time_offset, nozombies, drivers)) == 0) { - fprintf (stderr, "cannot create engine\n"); + jack_error ("cannot create engine"); return -1; } - fprintf (stderr, "loading driver ..\n"); + jack_info ("loading driver .."); 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); goto error; } @@ -181,7 +181,7 @@ jack_main (jack_driver_desc_t * driver_desc, JSList * driver_params) } if (verbose) { - fprintf (stderr, "%d waiting for signals\n", getpid()); + jack_info ("%d waiting for signals", getpid()); } waiting = TRUE; @@ -189,7 +189,7 @@ jack_main (jack_driver_desc_t * driver_desc, JSList * driver_params) while (waiting) { sigwait (&signals, &sig); - fprintf (stderr, "jack main caught signal %d\n", sig); + jack_info ("jack main caught signal %d", sig); switch (sig) { case SIGUSR1: @@ -241,7 +241,7 @@ jack_drivers_get_descriptor (JSList * drivers, const char * sofile) sprintf (filename, "%s/%s", driver_dir, sofile); 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) { @@ -254,7 +254,7 @@ jack_drivers_get_descriptor (JSList * drivers, const char * sofile) dlsym (dlhandle, "driver_get_descriptor"); if ((dlerr = dlerror ()) != NULL) { - fprintf(stderr, "%s\n", dlerr); + jack_error("%s", dlerr); dlclose (dlhandle); free (filename); return NULL; @@ -479,24 +479,23 @@ maybe_use_capabilities () char c = 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)); } 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 { /* wait for jackstart process to set our capabilities */ 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)) { - fprintf(stderr, "jackd: jackstart did not " - "exit cleanly\n"); + jack_error ("jackd: jackstart did not " + "exit cleanly"); exit (1); } } @@ -627,8 +626,8 @@ main (int argc, char *argv[]) break; default: - fprintf (stderr, "Unknown option character %c\n", - optopt); + jack_error ("Unknown option character %c", + optopt); /*fallthru*/ case 'h': usage (stdout); diff --git a/jackd/transengine.c b/jackd/transengine.c index 17f7e2d..7d303e5 100644 --- a/jackd/transengine.c +++ b/jackd/transengine.c @@ -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... if (engine->control->transport_state == JackTransportRolling) { 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); } @@ -67,7 +67,7 @@ jack_sync_poll_deactivate (jack_engine_t *engine, client->control->sync_new = 0; engine->control->sync_remain--; VERBOSE (engine, "sync poll interrupted for client %" - PRIu32 "\n", client->control->id); + PRIu32, client->control->id); } client->control->active_slowsync = 0; engine->control->sync_clients--; @@ -97,7 +97,7 @@ jack_sync_poll_stop (jack_engine_t *engine) assert (poll_count == engine->control->sync_remain); VERBOSE (engine, "sync poll halted with %" PRIu32 - " clients and %8.6f secs remaining\n", + " clients and %8.6f secs remaining", engine->control->sync_remain, (double) (engine->control->sync_time_left / 1000000.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_time_left = engine->control->sync_timeout; 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)); } @@ -147,7 +147,7 @@ jack_sync_timeout (jack_engine_t *engine) } /* timed out */ - VERBOSE (engine, "transport sync timeout\n"); + VERBOSE (engine, "transport sync timeout"); ectl->sync_time_left = 0; return TRUE; } @@ -182,7 +182,7 @@ jack_timebase_reset (jack_engine_t *engine, jack_client_id_t client_id) client->control->timebase_new = 0; engine->timebase_client = NULL; ectl->pending_time.valid = 0; - VERBOSE (engine, "%s resigned as timebase master\n", + VERBOSE (engine, "%s resigned as timebase master", client->control->name); ret = 0; } else @@ -206,7 +206,7 @@ jack_timebase_set (jack_engine_t *engine, client = jack_client_internal_by_id (engine, client_id); if (client == NULL) { - VERBOSE (engine, " %" PRIu32 " no longer exists\n", client_id); + VERBOSE (engine, " %" PRIu32 " no longer exists", client_id); jack_unlock_graph (engine); return EINVAL; } @@ -215,13 +215,13 @@ jack_timebase_set (jack_engine_t *engine, /* see if timebase master is someone else */ 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); ret = EBUSY; } else - VERBOSE (engine, " %s was already timebase master:\n", + VERBOSE (engine, " %s was already timebase master:", client->control->name); } else { @@ -234,7 +234,7 @@ jack_timebase_set (jack_engine_t *engine, client->control->is_timebase = 1; if (client->control->active) client->control->timebase_new = 1; - VERBOSE (engine, "new timebase master: %s\n", + VERBOSE (engine, "new timebase master: %s", 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->timebase_new = 0; engine->timebase_client = NULL; - VERBOSE (engine, "timebase master exit\n"); + VERBOSE (engine, "timebase master exit"); } engine->control->current_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))) { ectl->transport_state = JackTransportRolling; VERBOSE (engine, "transport Rolling, %8.6f sec" - " left for poll\n", + " left for poll", (double) (ectl->sync_time_left / 1000000.0)); } } @@ -419,7 +419,7 @@ jack_transport_cycle_end (jack_engine_t *engine) cmd = ectl->transport_cmd; if (cmd != ectl->previous_cmd) { ectl->previous_cmd = cmd; - VERBOSE (engine, "transport command: %s\n", + VERBOSE (engine, "transport command: %s", (cmd == TransportCommandStart? "START": "STOP")); } else cmd = TransportCommandNone; @@ -435,7 +435,7 @@ jack_transport_cycle_end (jack_engine_t *engine) jack_sync_poll_start(engine); } else { ectl->transport_state = JackTransportRolling; - VERBOSE (engine, "transport Rolling\n"); + VERBOSE (engine, "transport Rolling"); } } break; @@ -443,7 +443,7 @@ jack_transport_cycle_end (jack_engine_t *engine) case JackTransportStarting: if (cmd == TransportCommandStop) { ectl->transport_state = JackTransportStopped; - VERBOSE (engine, "transport Stopped\n"); + VERBOSE (engine, "transport Stopped"); if (ectl->sync_remain) jack_sync_poll_stop(engine); } else if (ectl->new_pos) { @@ -452,7 +452,7 @@ jack_transport_cycle_end (jack_engine_t *engine) jack_sync_poll_start(engine); } else { ectl->transport_state = JackTransportRolling; - VERBOSE (engine, "transport Rolling\n"); + VERBOSE (engine, "transport Rolling"); } } break; @@ -460,7 +460,7 @@ jack_transport_cycle_end (jack_engine_t *engine) case JackTransportRolling: if (cmd == TransportCommandStop) { ectl->transport_state = JackTransportStopped; - VERBOSE (engine, "transport Stopped\n"); + VERBOSE (engine, "transport Stopped"); if (ectl->sync_remain) jack_sync_poll_stop(engine); } else if (ectl->new_pos) { @@ -490,7 +490,7 @@ jack_transport_cycle_end (jack_engine_t *engine) jack_transport_copy_position(&ectl->request_time, &ectl->pending_time); 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->prev_request = ectl->pending_time.unique_1; ectl->pending_pos = 1; @@ -513,7 +513,7 @@ jack_transport_set_sync_timeout (jack_engine_t *engine, jack_time_t 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)); return 0; } diff --git a/libjack/client.c b/libjack/client.c index ddbf18d..5d6ad40 100644 --- a/libjack/client.c +++ b/libjack/client.c @@ -86,12 +86,11 @@ init_cpu () { cpu_type = ((have_3dnow() << 8) | have_sse()); if (ARCH_X86_HAVE_3DNOW(cpu_type)) - fprintf(stderr, "Enhanced3DNow! detected\n"); + jack_info("Enhanced3DNow! detected"); 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))) - fprintf(stderr, - "No supported SIMD instruction sets detected\n"); + jack_info("No supported SIMD instruction sets detected"); jack_port_set_funcs(); } @@ -198,6 +197,14 @@ void default_jack_error_callback (const char *desc) { fprintf(stderr, "%s\n", desc); + fflush(stderr); +} + +void +default_jack_info_callback (const char *desc) +{ + fprintf(stdout, "%s\n", desc); + fflush(stdout); } 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_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 oop_client_deliver_request (void *ptr, jack_request_t *req) @@ -528,7 +548,7 @@ server_connect (const char *server_name) } //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; 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; } +void +jack_set_info_function (void (*func) (const char *)) +{ + jack_info_callback = func; +} + int jack_set_graph_order_callback (jack_client_t *client, JackGraphOrderCallback callback, void *arg) diff --git a/libjack/messagebuffer.c b/libjack/messagebuffer.c index a636a0f..a32f658 100644 --- a/libjack/messagebuffer.c +++ b/libjack/messagebuffer.c @@ -54,7 +54,7 @@ mb_flush() { /* called WITHOUT the mb_write_lock */ while (mb_outbuffer != mb_inbuffer) { - fputs(mb_buffers[mb_outbuffer], stderr); + jack_info(mb_buffers[mb_outbuffer]); mb_outbuffer = MB_NEXT(mb_outbuffer); } } @@ -111,10 +111,10 @@ jack_messagebuffer_exit () mb_flush(); if (mb_overruns) - fprintf(stderr, "WARNING: %d message buffer overruns!\n", + jack_error("WARNING: %d message buffer overruns!", mb_overruns); else - fprintf(stderr, "no message buffer overruns\n"); + jack_info("no message buffer overruns"); pthread_mutex_destroy(&mb_write_lock); pthread_cond_destroy(&mb_ready_cond); diff --git a/libjack/shm.c b/libjack/shm.c index 2132729..3e8a93f 100644 --- a/libjack/shm.c +++ b/libjack/shm.c @@ -380,7 +380,7 @@ jack_register_server (const char *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 ()) return ENOMEM; diff --git a/libjack/simd.c b/libjack/simd.c index f899b0f..6bc0bb2 100644 --- a/libjack/simd.c +++ b/libjack/simd.c @@ -298,7 +298,7 @@ x86_sse_add2f (float *dest, const float *src, int length) 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; goto sse_nonalign; } diff --git a/libjack/transclient.c b/libjack/transclient.c index 88f2d1d..2e50536 100644 --- a/libjack/transclient.c +++ b/libjack/transclient.c @@ -247,7 +247,7 @@ jack_time_to_frames(const jack_client_t *client, jack_time_t now) if (time.initialized) { #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, (double) (now - time.current_wakeup)/ (time.next_wakeup - time.current_wakeup), diff --git a/libjack/unlock.c b/libjack/unlock.c index b9a9046..f621449 100644 --- a/libjack/unlock.c +++ b/libjack/unlock.c @@ -66,7 +66,7 @@ cleanup_mlock () snprintf (path, sizeof(path), "/proc/%d/maps", getpid()); if ((map = fopen (path, "r")) == NULL) { - fprintf (stderr, "can't open map file\n"); + jack_error ("can't open map file"); return; } @@ -118,7 +118,7 @@ cleanup_mlock () } if (unlock) { - fprintf (stderr, "unlocking %s\n", path); + jack_info ("unlocking %s", path); munlock ((char *) start, end - start); } }