feat: remove hard limit on number of channels
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
This commit is contained in:
@@ -6,35 +6,37 @@
|
||||
#include <string.h>
|
||||
|
||||
void channel_add(jack_client_t *client, int idx) {
|
||||
struct channel_t *cur = get_channels_array();
|
||||
|
||||
char in_name[64], out_name[64];
|
||||
snprintf(in_name, sizeof(in_name), "channel%d_input", next_channel_id);
|
||||
snprintf(out_name, sizeof(out_name), "channel%d_output", next_channel_id);
|
||||
|
||||
channels[idx].audio_in = jack_port_register(
|
||||
cur[idx].audio_in = jack_port_register(
|
||||
client, in_name, JACK_DEFAULT_AUDIO_TYPE, JackPortIsInput, 0);
|
||||
channels[idx].audio_out = jack_port_register(
|
||||
cur[idx].audio_out = jack_port_register(
|
||||
client, out_name, JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0);
|
||||
if (!channels[idx].audio_in || !channels[idx].audio_out) {
|
||||
if (!cur[idx].audio_in || !cur[idx].audio_out) {
|
||||
fprintf(stderr, "Failed to register ports for channel %d\n",
|
||||
next_channel_id);
|
||||
/* Do NOT mark channel active – process loop will skip it */
|
||||
atomic_store(&channels[idx].active, 0);
|
||||
atomic_store(&cur[idx].active, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
atomic_store(&channels[idx].active, 1);
|
||||
atomic_store(&channels[idx].state, STATE_IDLE);
|
||||
channels[idx].prev_state = -1;
|
||||
channels[idx].loop_count = 0;
|
||||
channels[idx].record_pos = 0;
|
||||
channels[idx].playback_pos = 0;
|
||||
atomic_store(&cur[idx].active, 1);
|
||||
atomic_store(&cur[idx].state, STATE_IDLE);
|
||||
cur[idx].prev_state = -1;
|
||||
cur[idx].loop_count = 0;
|
||||
cur[idx].record_pos = 0;
|
||||
cur[idx].playback_pos = 0;
|
||||
|
||||
next_channel_id++;
|
||||
channel_count++;
|
||||
atomic_fetch_add(&channel_count, 1);
|
||||
}
|
||||
|
||||
void channel_remove(jack_client_t *client, int idx) {
|
||||
(void)client;
|
||||
atomic_store(&channels[idx].active, 0);
|
||||
channel_count--;
|
||||
struct channel_t *cur = get_channels_array();
|
||||
atomic_store(&cur[idx].active, 0);
|
||||
atomic_fetch_sub(&channel_count, 1);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user