summaryrefslogtreecommitdiff
path: root/libs/ardour
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2006-08-12 19:43:09 +0000
committerDavid Robillard <d@drobilla.net>2006-08-12 19:43:09 +0000
commita98a67120eea8ebb817eebea048affc182ea054e (patch)
tree2c8c9db7c0d8d18bf5185e10d471d6daa7a7de3d /libs/ardour
parent30ab1fd61569f9d7fb7410d483fa68cbf9865c37 (diff)
Merged with trunk R795
Fiddled with scrolling to leave a bit of context on each side. 'scroll interval' is a single float, should make it a configuration variable some day git-svn-id: svn://localhost/ardour2/branches/midi@796 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour')
-rw-r--r--libs/ardour/ardour/audio_unit.h4
-rw-r--r--libs/ardour/ardour/cycles.h13
-rw-r--r--libs/ardour/ardour/session.h2
-rw-r--r--libs/ardour/audio_unit.cc20
-rw-r--r--libs/ardour/session.cc10
-rw-r--r--libs/ardour/session_command.cc2
-rw-r--r--libs/ardour/session_midi.cc1
-rw-r--r--libs/ardour/session_state.cc15
-rw-r--r--libs/ardour/session_transport.cc3
-rw-r--r--libs/ardour/track.cc2
10 files changed, 57 insertions, 15 deletions
diff --git a/libs/ardour/ardour/audio_unit.h b/libs/ardour/ardour/audio_unit.h
index 5b5cd537ab..56179125bb 100644
--- a/libs/ardour/ardour/audio_unit.h
+++ b/libs/ardour/ardour/audio_unit.h
@@ -86,6 +86,9 @@ class AUPlugin : public ARDOUR::Plugin
bool has_editor () const;
+ CAAudioUnit* get_au () { return unit; }
+ CAComponent* get_comp () { return comp; }
+
private:
CAComponent* comp;
CAAudioUnit* unit;
@@ -110,6 +113,7 @@ class AUPluginInfo : public PluginInfo {
private:
static std::string get_name (CAComponentDescription&);
+ void setup_nchannels (CAComponentDescription&);
};
typedef boost::shared_ptr<AUPluginInfo> AUPluginInfoPtr;
diff --git a/libs/ardour/ardour/cycles.h b/libs/ardour/ardour/cycles.h
index f194988da9..ad3e512669 100644
--- a/libs/ardour/ardour/cycles.h
+++ b/libs/ardour/ardour/cycles.h
@@ -186,8 +186,19 @@ static inline cycles_t get_cycles (void)
/* begin mach */
#elif defined(__APPLE__)
-#include <CoreAudio/CoreAudioTypes.h>
+
+#ifdef HAVE_COREAUDIO
#include <CoreAudio/HostTime.h>
+#else // Due to MacTypes.h and libgnomecanvasmm Rect conflict
+typedef unsigned long long UInt64;
+
+extern UInt64
+AudioGetCurrentHostTime();
+
+extern UInt64
+AudioConvertHostTimeToNanos(UInt64 inHostTime);
+#endif
+
typedef UInt64 cycles_t;
static inline cycles_t get_cycles (void)
{
diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h
index cac27168a1..a9b8cbf290 100644
--- a/libs/ardour/ardour/session.h
+++ b/libs/ardour/ardour/session.h
@@ -493,7 +493,7 @@ class Session : public sigc::trackable, public Stateful
int save_state (string snapshot_name, bool pending = false);
int restore_state (string snapshot_name);
int save_template (string template_name);
- int save_history ();
+ int save_history (string snapshot_name = "");
static int rename_template (string old_name, string new_name);
diff --git a/libs/ardour/audio_unit.cc b/libs/ardour/audio_unit.cc
index 0a31df40ee..ad98621814 100644
--- a/libs/ardour/audio_unit.cc
+++ b/libs/ardour/audio_unit.cc
@@ -137,7 +137,7 @@ AUPlugin::get_parameter (uint32_t which) const
int
AUPlugin::get_parameter_descriptor (uint32_t which, ParameterDescriptor&) const
{
- return -1;
+ return 0;
}
uint32_t
@@ -325,6 +325,7 @@ AUPluginInfo::discover ()
plug->type = ARDOUR::AudioUnit;
plug->n_inputs = 0;
plug->n_outputs = 0;
+ // plug->setup_nchannels (temp);
plug->category = "AudioUnit";
plug->desc = new CAComponentDescription(temp);
@@ -376,3 +377,20 @@ AUPluginInfo::get_name (CAComponentDescription& comp_desc)
return CFStringRefToStdString(itemName);
}
+
+void
+AUPluginInfo::setup_nchannels (CAComponentDescription& comp_desc)
+{
+ CAAudioUnit unit;
+
+ CAAudioUnit::Open (comp_desc, unit);
+
+ if (unit.SupportsNumChannels()) {
+ n_inputs = n_outputs = 0;
+ } else {
+ AUChannelInfo cinfo;
+ size_t info_size = sizeof(cinfo);
+ OSStatus err = AudioUnitGetProperty (unit.AU(), kAudioUnitProperty_SupportedNumChannels, kAudioUnitScope_Global,
+ 0, &cinfo, &info_size);
+ }
+}
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc
index 31b7c6d356..9cfaf18cb0 100644
--- a/libs/ardour/session.cc
+++ b/libs/ardour/session.cc
@@ -1015,7 +1015,7 @@ Session::auto_punch_start_changed (Location* location)
if (get_record_enabled() && get_punch_in()) {
/* capture start has been changed, so save new pending state */
save_state ("", true);
- save_history();
+ save_history("");
}
}
@@ -1337,7 +1337,7 @@ Session::maybe_enable_record ()
*/
save_state ("", true);
- save_history();
+ save_history ("");
if (_transport_speed) {
if (!punch_in) {
@@ -2066,6 +2066,7 @@ Session::add_route (shared_ptr<Route> route)
set_dirty();
save_state (_current_snapshot_name);
+ save_history (_current_snapshot_name);
RouteAdded (route); /* EMIT SIGNAL */
}
@@ -2097,7 +2098,7 @@ Session::add_diskstream (Diskstream* dstream)
set_dirty();
save_state (_current_snapshot_name);
- save_history();
+ save_history (_current_snapshot_name);
DiskstreamAdded (dstream); /* EMIT SIGNAL */
}
@@ -2161,6 +2162,7 @@ Session::remove_route (shared_ptr<Route> route)
/* XXX should we disconnect from the Route's signals ? */
save_state (_current_snapshot_name);
+ save_history (_current_snapshot_name);
/* all shared ptrs to route should go out of scope here */
}
@@ -2849,7 +2851,7 @@ Session::remove_source (Source* source)
*/
save_state (_current_snapshot_name);
- save_history();
+ save_history (_current_snapshot_name);
}
SourceRemoved(source); /* EMIT SIGNAL */
diff --git a/libs/ardour/session_command.cc b/libs/ardour/session_command.cc
index 1b8d6b3718..af507208ab 100644
--- a/libs/ardour/session_command.cc
+++ b/libs/ardour/session_command.cc
@@ -9,7 +9,6 @@ Command *Session::memento_command_factory(XMLNode *n)
{
PBD::ID id;
XMLNode *before, *after;
- //void *obj;
/* get obj_id */
@@ -21,6 +20,7 @@ Command *Session::memento_command_factory(XMLNode *n)
if (Diskstream *obj = diskstream_by_id(id))
return new MementoCommand<Diskstream>(*obj, *before, *after);
// etc.
+
return 0;
}
diff --git a/libs/ardour/session_midi.cc b/libs/ardour/session_midi.cc
index d7cdd94b2b..b0738e95a7 100644
--- a/libs/ardour/session_midi.cc
+++ b/libs/ardour/session_midi.cc
@@ -605,6 +605,7 @@ Session::mmc_record_strobe (MIDI::MachineControl &mmc)
*/
save_state ("", true);
+ save_history ("");
g_atomic_int_set (&_record_status, Enabled);
RecordStateChanged (); /* EMIT SIGNAL */
diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc
index 1b0befed3d..2a08859205 100644
--- a/libs/ardour/session_state.cc
+++ b/libs/ardour/session_state.cc
@@ -608,7 +608,7 @@ Session::create (bool& new_session, string* mix_template, jack_nframes_t initial
_state_of_the_state = Clean;
if (save_state (_current_snapshot_name)) {
- save_history();
+ save_history (_current_snapshot_name);
return -1;
}
}
@@ -1696,7 +1696,7 @@ Session::set_state (const XMLNode& node)
if (state_was_pending) {
save_state (_current_snapshot_name);
- save_history();
+ save_history (_current_snapshot_name);
remove_pending_capture_state ();
state_was_pending = false;
}
@@ -2498,7 +2498,7 @@ void
Session::auto_save()
{
save_state (_current_snapshot_name);
- save_history();
+ save_history (_current_snapshot_name);
}
RouteGroup *
@@ -3170,6 +3170,7 @@ Session::cleanup_sources (Session::cleanup_report& rep)
*/
save_state ("");
+ save_history ("");
out:
_state_of_the_state = (StateOfTheState) (_state_of_the_state & ~InCleanup);
@@ -3303,7 +3304,7 @@ Session::add_instant_xml (XMLNode& node, const std::string& dir)
int
-Session::save_history ()
+Session::save_history (string snapshot_name)
{
XMLTree tree;
string xml_path;
@@ -3311,7 +3312,11 @@ Session::save_history ()
tree.set_root (&history.get_state());
- xml_path = _path + _current_snapshot_name + ".history";
+ if (snapshot_name.empty()) {
+ snapshot_name = _current_snapshot_name;
+ }
+
+ xml_path = _path + snapshot_name + ".history";
bak_path = xml_path + ".bak";
diff --git a/libs/ardour/session_transport.cc b/libs/ardour/session_transport.cc
index 592f9c86c6..aad3617580 100644
--- a/libs/ardour/session_transport.cc
+++ b/libs/ardour/session_transport.cc
@@ -413,7 +413,7 @@ Session::non_realtime_stop (bool abort)
if ((post_transport_work & PostTransportLocate) && get_record_enabled()) {
/* capture start has been changed, so save pending state */
save_state ("", true);
- save_history();
+ save_history ("");
}
/* always try to get rid of this */
@@ -424,6 +424,7 @@ Session::non_realtime_stop (bool abort)
if (did_record) {
save_state (_current_snapshot_name);
+ save_history (_current_snapshot_name);
}
if (post_transport_work & PostTransportDuration) {
diff --git a/libs/ardour/track.cc b/libs/ardour/track.cc
index 2f956f6046..aa2f12aa65 100644
--- a/libs/ardour/track.cc
+++ b/libs/ardour/track.cc
@@ -224,7 +224,7 @@ Track::set_name (string str, void *src)
if ((ret = IO::set_name (str, src)) == 0) {
_session.save_state ("");
- _session.save_history();
+ _session.save_history ("");
}
return ret;
}