rem: DEBUG_CFLOW_STATEMENT(cerr << endl << "process out" << endl);
add: DEBUG_CFLOW_STATEMENT(cerr << endl << "eca_jack_process(): process out" << endl);
context: static int eca_jack_process(jack_nframes_t nframes, void *arg){  AUDIO_IO_JACK_MANAGER* current = static_cast<AUDIO_IO_JACK_MANAGER*>(arg);#if 0 /* PROFILE_CALLBACK_EXECUTION */  unsigned long long start, stop;  float difference;  rdtscll (start); /* start client timer */#endif  PROFILE_CE_STATEMENT(profile_callback_timer.start());  DEBUG_CFLOW_STATEMENT(cerr << endl << "jack_process entry ----> ");  /* 1. try to get the driver lock; if it fails or connection    *    is not fully establish, skip this processing cycly */  int ret = pthread_mutex_trylock(&current->lock_rep);  if (ret == 0 && current->connection_active_rep == true) {    /* 2. copy audio data from port input buffers to ecasound buffers */    for(size_t n = 0; n < current->inports_rep.size(); n++) {      if (current->inports_rep[n].cb_buffer != 0) {	jack_default_audio_sample_t* in_cb_buffer = static_cast<jack_default_audio_sample_t*>(jack_port_get_buffer(current->inports_rep[n].jackport, nframes));	memcpy(current->inports_rep[n].cb_buffer, in_cb_buffer, current->buffersize_rep * sizeof(jack_default_audio_sample_t));      }    }        DEBUG_CFLOW_STATEMENT(cerr << endl << "process 1 iter_in");    // FIXME: we should be able to handle cases where     //        'nframes > 0' && 'nframes < current->buffersize_rep'    DBC_CHECK(current->buffersize_rep == static_cast<long int>(nframes));        /* 3. execute one engine iteration */    if (current->engine_repp->is_active()) {      current->engine_repp->engine_iteration();    }        DEBUG_CFLOW_STATEMENT(cerr << endl << "process 2 iter_out");        /* 4. copy data from ecasound buffers to port output buffers */    for(size_t n = 0; n < current->outports_rep.size(); n++) {      if (current->outports_rep[n].cb_buffer != 0) {	jack_default_audio_sample_t* out_cb_buffer = static_cast<jack_default_audio_sample_t*>(jack_port_get_buffer(current->outports_rep[n].jackport, nframes));	// cerr << "(audioio_jack_manager) portbuf=" << out_cb_buffer << ", count=" << current->buffersize_rep << endl;	memcpy(out_cb_buffer, current->outports_rep[n].cb_buffer, current->buffersize_rep * sizeof(jack_default_audio_sample_t));      }    }        /* 5. update engine status based on the last iteration */    current->engine_repp->update_engine_state();    pthread_mutex_unlock(&current->lock_rep);  }  else {    DEBUG_CFLOW_STATEMENT(cerr << "jack_process: couldn't lock" << endl);  }#if 0 /* PROFILE_CALLBACK_EXECUTION */  rdtscll (stop); /* stop client timer */  difference = (float)(stop - start)/466000.0f;  if (difference > 1)     jack_error ("jack-profile: process cycle took %.6f msecs\n", difference);#endif    PROFILE_CE_STATEMENT(profile_callback_timer.stop());  DEBUG_CFLOW_STATEMENT(cerr << endl << "process out" << endl);  #ifdef PROFILE_CALLBACK_EXECUTION  if (profile_callback_timer.last_duration_seconds() > 0.005f) {    cerr << "(audioio-jack-manager) event " << profile_callback_timer.event_count();    cerr << ", process() took " << profile_callback_timer.last_duration_seconds() * 1000;    cerr << " msecs." << endl;  }  else {    if (profile_callback_timer.event_count() < 5) {      cerr << "(audioio-jack-manager) event " << profile_callback_timer.event_count();      cerr << ", process() took " << profile_callback_timer.last_duration_seconds() * 1000;      cerr << " msecs." << endl;          }  }#endif    return(0);}