Prepare for non-bypassable plugins (Mixbus channelstrip)
authorRobin Gareus <robin@gareus.org>
Tue, 31 Jul 2018 20:24:15 +0000 (22:24 +0200)
committerRobin Gareus <robin@gareus.org>
Tue, 31 Jul 2018 20:24:45 +0000 (22:24 +0200)
libs/ardour/ardour/plugin_insert.h
libs/ardour/luabindings.cc
libs/ardour/plugin_insert.cc

index bec49616a2d93322d5e3a8cb68c722e18d316c7f..a0dd8618f49409fd70792823e4e436c9bc91ad32 100644 (file)
@@ -115,6 +115,10 @@ public:
 
 #ifdef MIXBUS
        bool is_channelstrip () const;
+       bool is_nonbypassable () const;
+#else
+       bool is_channelstrip () const { return false; }
+       bool is_nonbypassable () const { return false; }
 #endif
 
        void set_input_map (uint32_t, ChanMapping);
index 544ba05037f1f0ac7bf72a95eb000fe1d0aef8c5..8b88007b9b08b094c2aea16fc18dab132d46e846 100644 (file)
@@ -1462,6 +1462,8 @@ LuaBindings::common (lua_State* L)
                .addFunction ("type", &PluginInsert::type)
                .addFunction ("signal_latency", &PluginInsert::signal_latency)
                .addFunction ("get_count", &PluginInsert::get_count)
+               .addFunction ("is_channelstrip", &PluginInsert::is_channelstrip)
+               .addFunction ("is_nonbypassable", &PluginInsert::is_channelstrip)
                .endClass ()
 
                .deriveWSPtrClass <ReadOnlyControl, PBD::StatefulDestructible> ("ReadOnlyControl")
index 7ce8ea547f6524530aa2668e08ffce94345f8b8c..0ad1de02a9bb41ccc703dbd57630913af8da22a1 100644 (file)
@@ -639,6 +639,11 @@ PluginInsert::activate ()
 void
 PluginInsert::deactivate ()
 {
+#ifdef MIXBUS
+       if (is_nonbypassable ()) {
+               return;
+       }
+#endif
        _timing_stats.reset ();
        Processor::deactivate ();
 
@@ -1551,6 +1556,10 @@ bool
 PluginInsert::is_channelstrip () const {
        return _plugins.front()->is_channelstrip();
 }
+bool
+PluginInsert::is_nonbypassable () const {
+       return _plugins.front()->is_nonbypassable ();
+}
 #endif
 
 bool