X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=nageru%2Ftheme.cpp;h=bb7613c9871e71df19db23feb39baccabf6ae993;hb=ecaec75dd52d076ba53cafa1fed716ebc0d93da6;hp=2bb9e807495e32a2d316ee5287a6f25b45208dc8;hpb=a686614f5976c9ca8b3a7e6248cdeb8c5f2c66ec;p=nageru diff --git a/nageru/theme.cpp b/nageru/theme.cpp index 2bb9e80..bb7613c 100644 --- a/nageru/theme.cpp +++ b/nageru/theme.cpp @@ -1466,8 +1466,8 @@ int Nageru_set_audio_bus_eq_level_db(lua_State *L) return 0; } -Theme::Theme(const string &filename, const vector &search_dirs, ResourcePool *resource_pool, unsigned num_cards) - : resource_pool(resource_pool), num_cards(num_cards), signal_to_card_mapping(global_flags.default_stream_mapping) +Theme::Theme(const string &filename, const vector &search_dirs, ResourcePool *resource_pool) + : resource_pool(resource_pool), signal_to_card_mapping(global_flags.default_stream_mapping) { // Defaults. channel_names[0] = "Live"; @@ -1748,8 +1748,8 @@ Theme::Chain Theme::get_chain(unsigned num, float t, unsigned width, unsigned he // TODO: Can we do better, e.g. by running setup_chain() and seeing what it references? // Actually, setup_chain does maybe hold all the references we need now anyway? - chain.input_frames.reserve(num_cards * FRAME_HISTORY_LENGTH); - for (unsigned card_index = 0; card_index < num_cards; ++card_index) { + chain.input_frames.reserve(MAX_VIDEO_CARDS * FRAME_HISTORY_LENGTH); + for (unsigned card_index = 0; card_index < MAX_VIDEO_CARDS; ++card_index) { for (unsigned frame_num = 0; frame_num < FRAME_HISTORY_LENGTH; ++frame_num) { chain.input_frames.push_back(input_state.buffered_frames[card_index][frame_num].frame); } @@ -1959,24 +1959,25 @@ int Theme::map_signal_to_card(int signal_num) } int card_index; - if (global_flags.output_card != -1 && num_cards > 1) { + if (global_flags.output_card != -1) { // Try to exclude the output card from the default card_index. - card_index = signal_num % (num_cards - 1); + card_index = signal_num % (global_flags.max_num_cards - 1); if (card_index >= global_flags.output_card) { ++card_index; } - if (signal_num >= int(num_cards - 1)) { + if (signal_num >= int(global_flags.max_num_cards - 1)) { print_warning(L, "Theme asked for input %d, but we only have %u input card(s) (card %d is busy with output).\n", - signal_num, num_cards - 1, global_flags.output_card); + signal_num, global_flags.max_num_cards - 1, global_flags.output_card); fprintf(stderr, "Mapping to card %d instead.\n", card_index); } } else { - card_index = signal_num % num_cards; - if (signal_num >= int(num_cards)) { - print_warning(L, "Theme asked for input %d, but we only have %u card(s).\n", signal_num, num_cards); + card_index = signal_num % global_flags.max_num_cards; + if (signal_num >= int(global_flags.max_num_cards)) { + print_warning(L, "Theme asked for input %d, but we only have %u card(s).\n", signal_num, global_flags.max_num_cards); fprintf(stderr, "Mapping to card %d instead.\n", card_index); } } + global_mixer->force_card_active(card_index); signal_to_card_mapping[signal_num] = card_index; return card_index; } @@ -1984,7 +1985,7 @@ int Theme::map_signal_to_card(int signal_num) void Theme::set_signal_mapping(int signal_num, int card_idx) { lock_guard lock(map_m); - assert(card_idx < int(num_cards)); + assert(card_idx < MAX_VIDEO_CARDS); signal_to_card_mapping[signal_num] = card_idx; }