X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fsession.h;h=ad42ee768ba15852b6b512a735a19cebb9ebaa93;hb=03b57c455adeb7b9040d9f79a5b87c435a64814c;hp=e41ea5a625646a807efcebec3fd4d00de70446f5;hpb=4da9b2caac6855e2abcb46e992c823dbb8ec8a19;p=ardour.git diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index e41ea5a625..ad42ee768b 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -37,24 +37,25 @@ #include #include "pbd/error.h" +#include "pbd/event_loop.h" #include "pbd/rcu.h" #include "pbd/statefuldestructible.h" #include "pbd/signals.h" #include "pbd/undo.h" +#include "evoral/types.hpp" + #include "midi++/types.h" #include "timecode/time.h" #include "ardour/ardour.h" -#include "ardour/click.h" #include "ardour/chan_count.h" #include "ardour/rc_configuration.h" #include "ardour/session_configuration.h" #include "ardour/session_event.h" #include "ardour/location.h" #include "ardour/interpolation.h" -#include "ardour/speakers.h" #ifdef HAVE_JACK_SESSION #include @@ -92,16 +93,18 @@ class AuxInput; class BufferSet; class Bundle; class Butler; +class Click; class Diskstream; class ExportHandler; class ExportStatus; +class Graph; class IO; class IOProcessor; class ImportStatus; +class MidiControlUI; class MidiRegion; class MidiSource; class MidiTrack; -class MidiControlUI; class NamedSelection; class Playlist; class PluginInsert; @@ -122,9 +125,8 @@ class Slave; class Source; class Speakers; class TempoMap; -class VSTPlugin; -class Graph; class Track; +class VSTPlugin; extern void setup_enum_writer (); @@ -621,6 +623,7 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi void set_record_enabled (boost::shared_ptr, bool, SessionEvent::RTeventCallback after = rt_cleanup, bool group_override = false); void set_solo_isolated (boost::shared_ptr, bool, SessionEvent::RTeventCallback after = rt_cleanup, bool group_override = false); void set_exclusive_input_active (boost::shared_ptr rt, bool others_on); + void set_monitoring (boost::shared_ptr, MonitorChoice, SessionEvent::RTeventCallback after = rt_cleanup, bool group_override = false); PBD::Signal1 SoloActive; PBD::Signal0 SoloChanged; @@ -744,10 +747,10 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi /*Native linuxVST support*/ - static long lxvst_callback (AEffect* effect, - long opcode, - long index, - long value, + static intptr_t lxvst_callback (AEffect* effect, + int32_t opcode, + int32_t index, + intptr_t value, void* ptr, float opt); @@ -1369,7 +1372,7 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi XMLNode& state(bool); /* click track */ - + typedef std::list Clicks; Clicks clicks; bool _clicking; boost::shared_ptr _click_io; @@ -1453,10 +1456,16 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi static int ask_about_playlist_deletion (boost::shared_ptr); /* realtime "apply to set of routes" operations */ - SessionEvent* get_rt_event ( - boost::shared_ptr rl, bool yn, - SessionEvent::RTeventCallback after, bool group_override, - void (Session::*method) (boost::shared_ptr, bool, bool)); + template SessionEvent* + get_rt_event (boost::shared_ptr rl, T targ, SessionEvent::RTeventCallback after, bool group_override, + void (Session::*method) (boost::shared_ptr, T, bool)) { + SessionEvent* ev = new SessionEvent (SessionEvent::RealTimeOperation, SessionEvent::Add, SessionEvent::Immediate, 0, 0.0); + ev->rt_slot = boost::bind (method, this, rl, targ, group_override); + ev->rt_return = after; + ev->event_loop = PBD::EventLoop::get_event_loop_for_thread (); + + return ev; + } void rt_set_solo (boost::shared_ptr, bool yn, bool group_override); void rt_set_just_one_solo (boost::shared_ptr, bool yn, bool /* ignored*/ ); @@ -1464,6 +1473,7 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi void rt_set_listen (boost::shared_ptr, bool yn, bool group_override); void rt_set_solo_isolated (boost::shared_ptr, bool yn, bool group_override); void rt_set_record_enabled (boost::shared_ptr, bool yn, bool group_override); + void rt_set_monitoring (boost::shared_ptr, MonitorChoice, bool group_override); /** temporary list of Diskstreams used only during load of 2.X sessions */ std::list > _diskstreams_2X;