From df59a000b79f891f17ec8a05b390982dac67e5ff Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 1 Aug 2013 18:49:40 -0400 Subject: start code reorganization needed to deal with backend choices. compiles, links and runs as far as the startup screen now --- libs/ardour/ardour/audio_backend.h | 2 +- libs/ardour/ardour/audioengine.h | 24 +++++++++++------------- libs/ardour/ardour/jack_audiobackend.h | 1 - libs/ardour/ardour/jack_portengine.h | 2 ++ libs/ardour/ardour/port_engine.h | 2 ++ libs/ardour/ardour/port_manager.h | 8 +++++++- 6 files changed, 23 insertions(+), 16 deletions(-) (limited to 'libs/ardour/ardour') diff --git a/libs/ardour/ardour/audio_backend.h b/libs/ardour/ardour/audio_backend.h index 3b68432b6f..6aee33a507 100644 --- a/libs/ardour/ardour/audio_backend.h +++ b/libs/ardour/ardour/audio_backend.h @@ -284,7 +284,7 @@ class AudioBackend { virtual int set_time_master (bool /*yn*/) { return 0; } virtual int usecs_per_cycle () const { return 1000000 * (buffer_size() / sample_rate()); } - virtual size_t raw_buffer_size (DataType t); + virtual size_t raw_buffer_size (DataType t) = 0; /* Process time */ diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h index 0bbbe90ef4..cf22925565 100644 --- a/libs/ardour/ardour/audioengine.h +++ b/libs/ardour/ardour/audioengine.h @@ -67,19 +67,17 @@ class AudioEngine : public SessionHandlePtr, public PortManager { public: - static AudioEngine* create (const std::string& client_name, const std::string& session_uuid); + static AudioEngine* create (); virtual ~AudioEngine (); int discover_backends(); std::vector available_backends() const; std::string current_backend_name () const; - int set_backend (const std::string&); + int set_backend (const std::string&, const std::string& arg1, const std::string& arg2); ProcessThread* main_thread() const { return _main_thread; } - std::string client_name() const { return backend_client_name; } - /* START BACKEND PROXY API * * See audio_backend.h for full documentation and semantics. These wrappers @@ -144,7 +142,6 @@ public: int reset_timebase (); void update_latencies (); - /* this signal is sent for every process() cycle while freewheeling. (the regular process() call to session->process() is not made) @@ -154,10 +151,7 @@ public: PBD::Signal0 Xrun; - /* this signal is if the backend notifies us of a graph order event */ - - PBD::Signal0 GraphReordered; - + #ifdef HAVE_JACK_SESSION PBD::Signal1 JackSessionEvent; #endif @@ -176,6 +170,13 @@ public: PBD::Signal0 Running; PBD::Signal0 Stopped; + + /* these two are emitted as we create backends that + can actually be used to do stuff (e.g. register ports) + */ + + PBD::Signal0 BackendAvailable; + PBD::Signal0 BackendRemoved; static AudioEngine* instance() { return _instance; } static void destroy(); @@ -197,7 +198,7 @@ public: static void thread_init_callback (void *); private: - AudioEngine (const std::string& client_name, const std::string& session_uuid); + AudioEngine (); static AudioEngine* _instance; @@ -227,9 +228,6 @@ public: Glib::Threads::Thread* m_meter_thread; ProcessThread* _main_thread; - std::string backend_client_name; - std::string backend_session_uuid; - void meter_thread (); void start_metering_thread (); void stop_metering_thread (); diff --git a/libs/ardour/ardour/jack_audiobackend.h b/libs/ardour/ardour/jack_audiobackend.h index 7104b814c2..05638f6c73 100644 --- a/libs/ardour/ardour/jack_audiobackend.h +++ b/libs/ardour/ardour/jack_audiobackend.h @@ -144,7 +144,6 @@ class JACKAudioBackend : public AudioBackend { static void* _start_process_thread (void*); ChanCount n_physical (unsigned long) const; - void get_physical (DataType, unsigned long, std::vector &); /* pffooo */ diff --git a/libs/ardour/ardour/jack_portengine.h b/libs/ardour/ardour/jack_portengine.h index bee87532d3..638d3382ad 100644 --- a/libs/ardour/ardour/jack_portengine.h +++ b/libs/ardour/ardour/jack_portengine.h @@ -44,6 +44,8 @@ class JACKPortEngine : public PortEngine const std::string& my_name() const; + uint32_t port_name_size() const; + int set_port_name (PortHandle, const std::string&); std::string get_port_name (PortHandle) const; PortHandle* get_port_by_name (const std::string&) const; diff --git a/libs/ardour/ardour/port_engine.h b/libs/ardour/ardour/port_engine.h index e63c52630d..f03a8e263f 100644 --- a/libs/ardour/ardour/port_engine.h +++ b/libs/ardour/ardour/port_engine.h @@ -93,6 +93,8 @@ class PortEngine { virtual const std::string& my_name() const = 0; + virtual uint32_t port_name_size() const = 0; + virtual int set_port_name (PortHandle, const std::string&) = 0; virtual std::string get_port_name (PortHandle) const = 0; virtual PortHandle* get_port_by_name (const std::string&) const = 0; diff --git a/libs/ardour/ardour/port_manager.h b/libs/ardour/ardour/port_manager.h index d88143d110..06e4939101 100644 --- a/libs/ardour/ardour/port_manager.h +++ b/libs/ardour/ardour/port_manager.h @@ -47,7 +47,10 @@ class PortManager void set_port_engine (PortEngine& pe); PortEngine& port_engine() { return *_impl; } - + + uint32_t port_name_size() const; + std::string my_name() const; + /* Port registration */ boost::shared_ptr register_input_port (DataType, const std::string& portname); @@ -114,6 +117,9 @@ class PortManager bool port_remove_in_progress() const { return _port_remove_in_progress; } + /** Emitted if the backend notifies us of a graph order event */ + PBD::Signal0 GraphReordered; + /** Emitted if a Port is registered or unregistered */ PBD::Signal0 PortRegisteredOrUnregistered; -- cgit v1.2.3