int jack_set_process_callback ( jack_client_t * client, JackProcessCallback process_callback, void * arg )
int shift_left;float volume_left;float volume_rightFilter *filter_left;Filter *filter_right;
C++ (Qt)struct Jack { int mDone; // устанавливается true читателем если можно удалять int shift_left; ...}; // глобальные переменныеJack * theJack = 0, * prvJack = 0; QList <Jack> lstJack; // GUI (хост)lstJack.push_back(Jack());Jack * jack = &lst.back(); // этот адрес валиден при удалении/вставке в QListjack->mDone = false;jack->shift_left = .. // заполняем данные ...theJack = jack; // установили текущие данные // удаляем неиспользуемые данныеfor (int i = lstJack.size() - 2; i >= 0; --i) if (lstJack[i].mDone) { lstJack.erase(lstJack.begin(), lstJack.begin() + i + 1) break; } // ЧитательJack * jack = theJack; // взять текущие установкиif (prvJack && prvJack != jack) // предыдущие можно удалить prvJack->mDone = true;prvJack = jack; .... // чтениеif (jack != theJack) { // если хост изменил установки....}..