X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=nageru%2Falsa_pool.cpp;h=0c95ecb59693bcfba8b21b59a96ce730731bb595;hb=f81ae3be1aae619fe4ad022f55d95a4a83ace076;hp=3092dc32335551deed1b2b7b2255c07b7e9a19db;hpb=9b7d691b4cc5db7dbfc18c82e86c1207fcac4722;p=nageru diff --git a/nageru/alsa_pool.cpp b/nageru/alsa_pool.cpp index 3092dc3..0c95ecb 100644 --- a/nageru/alsa_pool.cpp +++ b/nageru/alsa_pool.cpp @@ -1,27 +1,36 @@ #include "alsa_pool.h" #include +#include +#include +#include #include #include #include +#include +#include #include #include #include #include +#include #include #include +#include +#include #include #include #include #include #include #include -#include +#include #include "alsa_input.h" #include "audio_mixer.h" -#include "defs.h" +#include "card_type.h" #include "input_mapping.h" +#include "shared/shared_defs.h" #include "state.pb.h" using namespace std; @@ -44,7 +53,7 @@ ALSAPool::~ALSAPool() const uint64_t one = 1; if (write(should_quit_fd, &one, sizeof(one)) != sizeof(one)) { perror("write(should_quit_fd)"); - exit(1); + abort(); } inotify_thread.join(); @@ -266,12 +275,10 @@ ALSAPool::ProbeResult ALSAPool::probe_device_once(unsigned card_index, unsigned display_name = devices[internal_dev_index].display_name(); } - fprintf(stderr, "%s: Probed successfully.\n", address); - reset_device(internal_dev_index); // Restarts it if it is held (ie., we just replaced a dead card). DeviceSpec spec{InputSourceType::ALSA_INPUT, internal_dev_index}; - global_audio_mixer->set_display_name(spec, display_name); + global_audio_mixer->set_device_parameters(spec, display_name, CardType::LIVE_CARD, /*num_channels=*/0, /*active=*/true); // Type and channels are ignored. global_audio_mixer->trigger_state_changed_callback(); return ALSAPool::ProbeResult::SUCCESS; @@ -402,7 +409,7 @@ void ALSAPool::reset_device(unsigned index) inputs[index].reset(); } else { // TODO: Put on a background thread instead of locking? - auto callback = bind(&AudioMixer::add_audio, global_audio_mixer, DeviceSpec{InputSourceType::ALSA_INPUT, index}, _1, _2, _3, _4, _5); + auto callback = bind(&AudioMixer::add_audio, global_audio_mixer, DeviceSpec{InputSourceType::ALSA_INPUT, index}, _1, _2, _3, _4); inputs[index].reset(new ALSAInput(device->address.c_str(), OUTPUT_FREQUENCY, device->num_channels, callback, this, index)); inputs[index]->start_capture_thread(); }