git-svn-id: svn+ssh://jackaudio.org/trunk/jack@1092 0c269be4-1314-0410-8aa9-9f06e86f4224tags/0.115.6
| @@ -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 | ||||
| @@ -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 { | ||||
| @@ -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': | ||||
| @@ -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); | ||||
| @@ -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); | |||||
| } | } | ||||
| } | } | ||||
| @@ -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; | ||||
| } | } | ||||
| @@ -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)); | ||||
| @@ -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; | ||||
| } | } | ||||
| @@ -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; | ||||
| } | } | ||||
| @@ -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> | ||||
| @@ -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 | ||||
| @@ -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; | ||||
| } | } | ||||
| } | } | ||||
| @@ -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; | ||||
| @@ -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); | ||||
| @@ -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; | ||||
| } | } | ||||
| @@ -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) | ||||
| @@ -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); | ||||
| @@ -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; | ||||
| @@ -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; | ||||
| } | } | ||||
| @@ -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), | ||||
| @@ -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); | ||||
| } | } | ||||
| } | } | ||||