From b718c77fe338c18b61280aefcf8d42c01a6299fd Mon Sep 17 00:00:00 2001 From: David Robillard Date: Wed, 12 Apr 2017 20:19:08 +0200 Subject: Refuse to start if driver requires a graph and one is not provided --- src/ingen/ingen.cpp | 9 ++++++++- src/server/Engine.cpp | 6 ++++++ src/server/Engine.hpp | 1 + 3 files changed, 15 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/ingen/ingen.cpp b/src/ingen/ingen.cpp index 1932b793..4eacfa97 100644 --- a/src/ingen/ingen.cpp +++ b/src/ingen/ingen.cpp @@ -158,7 +158,14 @@ main(int argc, char** argv) if (!world->load_module("jack") && !world->load_module("portaudio")) { cerr << "ingen: error: Failed to load driver module" << endl; delete world; - exit(EXIT_FAILURE); + return EXIT_FAILURE; + } + + if (!world->engine()->supports_dynamic_ports() && + !conf.option("load").is_valid()) { + cerr << "ingen: error: Initial graph required for driver" << endl; + delete world; + return EXIT_FAILURE; } } diff --git a/src/server/Engine.cpp b/src/server/Engine.cpp index 2fa079f1..8ec74829 100644 --- a/src/server/Engine.cpp +++ b/src/server/Engine.cpp @@ -399,6 +399,12 @@ Engine::init(double sample_rate, uint32_t block_length, size_t seq_size) set_driver(SPtr(new DirectDriver(*this, sample_rate, block_length, seq_size))); } +bool +Engine::supports_dynamic_ports() const +{ + return !_driver || _driver->dynamic_ports(); +} + bool Engine::activate() { diff --git a/src/server/Engine.hpp b/src/server/Engine.hpp index f951eaf3..cf13f5e6 100644 --- a/src/server/Engine.hpp +++ b/src/server/Engine.hpp @@ -77,6 +77,7 @@ public: // EngineBase methods virtual void init(double sample_rate, uint32_t block_length, size_t seq_size); + virtual bool supports_dynamic_ports() const; virtual bool activate(); virtual void deactivate(); virtual bool pending_events() const; -- cgit v1.2.1