+ int set_state (const XMLNode&, int version);
+
+ /* Panning */
+
+ static int disable_panners (void);
+ static void reset_panners ();
+
+ boost::shared_ptr<PannerShell> panner_shell() const { return _panshell; }
+ boost::shared_ptr<Panner> panner() const;
+
+ void unpan ();
+ void reset_panner ();
+ void defer_pan_reset ();
+ void allow_pan_reset ();
+
+ uint32_t pans_required() const { return _configured_input.n_audio(); }
+ virtual uint32_t pan_outs() const;
+
+ protected:
+ Role _role;
+ BufferSet* _output_buffers;
+ gain_t _current_gain;
+ boost::shared_ptr<PannerShell> _panshell;
+
+ gain_t target_gain ();
+
+ private:
+ bool _no_outs_cuz_we_no_monitor;
+ boost::shared_ptr<MuteMaster> _mute_master;
+
+ static bool panners_legal;
+ static PBD::Signal0<void> PannersLegal;
+
+ void panners_became_legal ();
+ PBD::ScopedConnection panner_legal_c;
+ void output_changed (IOChange, void*);