X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Funknown_processor.h;h=b9743c959938fbdcf261e4fd2f11905605c60788;hb=0e830fb6ec570ef6a067e075b2131001b93a893d;hp=8e079c462eaaa01b0e32654011d38f8810a0c014;hpb=b0d559b031732c51f851d5c839162bebd3b75acd;p=ardour.git diff --git a/libs/ardour/ardour/unknown_processor.h b/libs/ardour/ardour/unknown_processor.h old mode 100755 new mode 100644 index 8e079c462e..b9743c9599 --- a/libs/ardour/ardour/unknown_processor.h +++ b/libs/ardour/ardour/unknown_processor.h @@ -24,23 +24,37 @@ namespace ARDOUR { -class UnknownProcessor : public Processor +/** A stub Processor that can be used in place of a `real' one that cannot be + * created for some reason; usually because it requires a plugin which is not + * present. UnknownProcessors are special-cased in a few places, notably + * in route configuration and signal processing, so that on encountering them + * configuration or processing stops. + * + * When a Processor is missing from a Route, the following processors cannot + * be configured, as the missing Processor's output port configuration is + * unknown. + * + * The main utility of the UnknownProcessor is that it allows state + * to be preserved, so that, for example, loading and re-saving a + * session on a machine without a particular plugin will not corrupt + * the session. + */ +class LIBARDOUR_API UnknownProcessor : public Processor { public: UnknownProcessor (Session &, XMLNode const &); + virtual ~UnknownProcessor (); - bool display_to_user () const { - return false; - } + bool can_support_io_configuration (const ChanCount &, ChanCount &); + void run (BufferSet& /*bufs*/, framepos_t /*start_frame*/, framepos_t /*end_frame*/, pframes_t /*nframes*/, bool /*result_required*/); - bool can_support_io_configuration (const ChanCount &, ChanCount &) const { - return false; - } - XMLNode & state (bool); private: XMLNode _state; + bool have_ioconfig; + ChanCount *saved_input; + ChanCount *saved_output; }; }