MCP: Mixbus32C: Restore missing filter controls to the Dyn page.
[ardour.git] / libs / ardour / ardour / audioengine.h
index d1e3f8a7ef96002e65458f448d710240f2a38782..f297e993b3c03cf30f9f2d5d3f63a3d6e16ffb41 100644 (file)
@@ -57,7 +57,7 @@ class ProcessThread;
 class AudioBackend;
 struct AudioBackendInfo;
 
-class LIBARDOUR_API AudioEngine : public SessionHandlePtr, public PortManager
+class LIBARDOUR_API AudioEngine : public PortManager, public SessionHandlePtr
 {
   public:
 
@@ -75,7 +75,7 @@ class LIBARDOUR_API AudioEngine : public SessionHandlePtr, public PortManager
 
        ProcessThread* main_thread() const { return _main_thread; }
 
-       /* START BACKEND PROXY API 
+       /* START BACKEND PROXY API
         *
         * See audio_backend.h for full documentation and semantics. These wrappers
         * just forward to a backend implementation.
@@ -99,6 +99,8 @@ class LIBARDOUR_API AudioEngine : public SessionHandlePtr, public PortManager
        pframes_t      samples_since_cycle_start ();
        bool           get_sync_offset (pframes_t& offset) const;
 
+       std::string    get_last_backend_error () const { return _last_backend_error_string; }
+
        int            create_process_thread (boost::function<void()> func);
        int            join_process_threads ();
        bool           in_process_thread ();
@@ -137,7 +139,7 @@ class LIBARDOUR_API AudioEngine : public SessionHandlePtr, public PortManager
        }
 
        framecnt_t processed_frames() const { return _processed_frames; }
-    
+
        void set_session (Session *);
        void remove_session (); // not a replacement for SessionHandle::session_going_away()
        Session* session() const { return _session; }
@@ -148,19 +150,19 @@ class LIBARDOUR_API AudioEngine : public SessionHandlePtr, public PortManager
            public:
                virtual const char *what() const throw() { return "could not connect to engine backend"; }
        };
-    
+
        void split_cycle (pframes_t offset);
-    
+
        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)
        */
-    
-       PBD::Signal1<int, pframes_t> Freewheel;
-    
+
+       PBD::Signal1<void, pframes_t> Freewheel;
+
        PBD::Signal0<void> Xrun;
 
        /** this signal is emitted if the sample rate changes */
@@ -173,30 +175,30 @@ class LIBARDOUR_API AudioEngine : public SessionHandlePtr, public PortManager
        PBD::Signal0<void> DeviceError;
 
        /* this signal is emitted if the device list changed */
-    
+
        PBD::Signal0<void> DeviceListChanged;
-    
+
        /* this signal is sent if the backend ever disconnects us */
-    
+
        PBD::Signal1<void,const char*> Halted;
-    
+
        /* these two are emitted when the engine itself is
           started and stopped
        */
-    
+
        PBD::Signal0<void> Running;
        PBD::Signal0<void> Stopped;
 
        /* these two are emitted when a device reset is initiated/finished
         */
-    
+
        PBD::Signal0<void> DeviceResetStarted;
        PBD::Signal0<void> DeviceResetFinished;
 
        static AudioEngine* instance() { return _instance; }
        static void destroy();
        void died ();
-    
+
        /* The backend will cause these at the appropriate time(s)
         */
        int  process_callback (pframes_t nframes);
@@ -241,10 +243,12 @@ class LIBARDOUR_API AudioEngine : public SessionHandlePtr, public PortManager
         * countdown, whose duration will be reduced to half of its previous
         * value.
         */
-       
+
        PBD::Signal0<void> BecameSilent;
        void reset_silence_countdown ();
-       
+
+       void add_pending_port_deletion (Port*);
+
   private:
        AudioEngine ();
 
@@ -280,6 +284,8 @@ class LIBARDOUR_API AudioEngine : public SessionHandlePtr, public PortManager
        bool                      _started_for_latency;
        bool                      _in_destructor;
 
+       std::string               _last_backend_error_string;
+
        Glib::Threads::Thread*     _hw_reset_event_thread;
        gint                       _hw_reset_request_count;
        Glib::Threads::Cond        _hw_reset_condition;
@@ -304,10 +310,10 @@ class LIBARDOUR_API AudioEngine : public SessionHandlePtr, public PortManager
 #ifdef SILENCE_AFTER
        framecnt_t _silence_countdown;
        uint32_t   _silence_hit_cnt;
-#endif 
+#endif
 
 };
-       
+
 } // namespace ARDOUR
 
 #endif /* __ardour_audioengine_h__ */