equal
deleted
inserted
replaced
18 #include <memory> |
18 #include <memory> |
19 #include <iostream> |
19 #include <iostream> |
20 #include <chrono> |
20 #include <chrono> |
21 #include <thread> |
21 #include <thread> |
22 #include <csignal> |
22 #include <csignal> |
|
23 #include <atomic> |
23 |
24 |
24 #include "DJMFix.h" |
25 #include "DJMFix.h" |
25 #include "AlsaBridge.h" |
26 #include "AlsaBridge.h" |
26 |
27 |
27 volatile static bool run = true; |
28 static std::atomic<bool> run{true}; |
28 |
29 |
29 void interrupt(int signal) { |
30 void interrupt(int signal) { |
30 run = false; |
31 run = false; |
31 std::cerr << "interrupt()" << std::endl; // TODO: do not mess STDIO |
32 std::cerr << "interrupt()" << std::endl; // TODO: do not mess STDIO |
32 } |
33 } |
33 |
34 |
34 int main(int argc, char**argv) { |
35 int main(int argc, char**argv) { |
|
36 std::string deviceName = argc == 2 ? argv[1] : "hw:1"; // FIXME: parse CLI options + automatic device search |
|
37 |
35 signal(SIGINT, interrupt); |
38 signal(SIGINT, interrupt); |
36 std::unique_ptr<djmfix::DJMFix> djmFix(djmfix::create()); |
39 std::unique_ptr<djmfix::DJMFix> djmFix(djmfix::create()); |
37 std::unique_ptr<djmfix::alsa::AlsaBridge> alsaBridge(djmfix::alsa::create(djmFix.get())); |
40 std::unique_ptr<djmfix::alsa::AlsaBridge> alsaBridge(djmfix::alsa::create(djmFix.get(), deviceName)); |
38 |
41 |
39 alsaBridge->start(); |
42 alsaBridge->start(); |
40 while (run) std::this_thread::sleep_for(std::chrono::milliseconds(100)); |
43 while (run) std::this_thread::sleep_for(std::chrono::milliseconds(100)); |
41 alsaBridge->stop(); |
44 alsaBridge->stop(); |
42 |
45 |