summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2008-07-07 15:52:22 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2008-07-07 15:52:22 +0000
commitdda3143dc76877657454dac0fde2f1cfad800c85 (patch)
treed8493d484a74f5cd4ce0ac881fc83966369a0b5b /libs
parent3be87c2c91acf3cc238e3531cfed2638d6c1c7f2 (diff)
move to scons Clone everywhere rather than Copy; add Session::micro_locate() for ongoing work on video sync; debugging output for export precision problem; minor clean up to IO::find_possible_connection(); fix up a few signed/unsigned issues; make "feature lines" always be the right height as tracks resize; change version to 2.5
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@3517 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r--libs/appleutility/SConscript2
-rw-r--r--libs/ardour/ardour/configuration_vars.h1
-rw-r--r--libs/ardour/ardour/session.h1
-rw-r--r--libs/ardour/audiosource.cc2
-rw-r--r--libs/ardour/io.cc33
-rw-r--r--libs/ardour/session_export.cc20
-rw-r--r--libs/ardour/session_process.cc24
-rw-r--r--libs/ardour/session_transport.cc19
-rw-r--r--libs/clearlooks/SConscript2
-rw-r--r--libs/fst/SConscript2
-rw-r--r--libs/glibmm2/SConscript2
-rw-r--r--libs/gtkmm2/atk/SConscript2
-rw-r--r--libs/gtkmm2/gdk/SConscript2
-rw-r--r--libs/gtkmm2/gtk/SConscript2
-rw-r--r--libs/gtkmm2/pango/SConscript2
-rw-r--r--libs/gtkmm2ext/SConscript2
-rw-r--r--libs/libglademm/SConscript2
-rw-r--r--libs/libgnomecanvasmm/SConscript2
-rw-r--r--libs/pbd/undo.cc2
-rw-r--r--libs/rubberband/SConscript2
-rw-r--r--libs/soundtouch/SConscript2
-rw-r--r--libs/surfaces/control_protocol/SConscript2
-rw-r--r--libs/surfaces/frontier/tranzport/SConscript2
-rw-r--r--libs/surfaces/generic_midi/SConscript2
-rw-r--r--libs/surfaces/mackie/SConscript2
-rw-r--r--libs/surfaces/powermate/SConscript2
-rw-r--r--libs/surfaces/tranzport/SConscript2
27 files changed, 102 insertions, 38 deletions
diff --git a/libs/appleutility/SConscript b/libs/appleutility/SConscript
index 68b731c78e..5b6f3b6d84 100644
--- a/libs/appleutility/SConscript
+++ b/libs/appleutility/SConscript
@@ -7,7 +7,7 @@ import glob
appleutility_files = glob.glob('*.cpp')
Import('env install_prefix')
-appleutility = env.Copy()
+appleutility = env.Clone()
appleutility.Append(LINKFLAGS='-framework AudioToolbox')
appleutility.Append(LINKFLAGS='-framework AudioUnit')
diff --git a/libs/ardour/ardour/configuration_vars.h b/libs/ardour/ardour/configuration_vars.h
index dd7fc9d830..1d610b123a 100644
--- a/libs/ardour/ardour/configuration_vars.h
+++ b/libs/ardour/ardour/configuration_vars.h
@@ -121,6 +121,7 @@ CONFIG_VARIABLE (bool, quieten_at_speed, "quieten-at-speed", true)
CONFIG_VARIABLE (bool, primary_clock_delta_edit_cursor, "primary-clock-delta-edit-cursor", false)
CONFIG_VARIABLE (bool, secondary_clock_delta_edit_cursor, "secondary-clock-delta-edit-cursor", false)
CONFIG_VARIABLE (bool, show_track_meters, "show-track-meters", true)
+CONFIG_VARIABLE (bool, locate_while_waiting_for_sync, "locate-while-waiting-for-sync", false)
/* timecode and sync */
diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h
index bbe01b2a3d..2c9ef608fe 100644
--- a/libs/ardour/ardour/session.h
+++ b/libs/ardour/ardour/session.h
@@ -1423,6 +1423,7 @@ class Session : public PBD::StatefulDestructible
void set_play_loop (bool yn);
void overwrite_some_buffers (Diskstream*);
void flush_all_redirects ();
+ int micro_locate (nframes_t distance);
void locate (nframes_t, bool with_roll, bool with_flush, bool with_loop=false);
void start_locate (nframes_t, bool with_roll, bool with_flush, bool with_loop=false);
void force_locate (nframes_t frame, bool with_roll = false);
diff --git a/libs/ardour/audiosource.cc b/libs/ardour/audiosource.cc
index d9e5f83bd1..36a667d109 100644
--- a/libs/ardour/audiosource.cc
+++ b/libs/ardour/audiosource.cc
@@ -214,7 +214,7 @@ AudioSource::initialize_peakfile (bool newfile, ustring audio_path)
/* we found it in the peaks dir, so check it out */
- if (statbuf.st_size == 0 || (statbuf.st_size < ((length() / _FPP) * sizeof (PeakData)))) {
+ if (statbuf.st_size == 0 || ((nframes_t) statbuf.st_size < ((length() / _FPP) * sizeof (PeakData)))) {
// empty
_peaks_built = false;
} else {
diff --git a/libs/ardour/io.cc b/libs/ardour/io.cc
index ac5381b591..592d87242e 100644
--- a/libs/ardour/io.cc
+++ b/libs/ardour/io.cc
@@ -1780,16 +1780,17 @@ IO::ports_became_legal ()
}
Connection *
-IO::find_possible_connection(const string &desired_name, const string &default_name, const string &connection_type_name) {
-static const string digits = "0123456789";
+IO::find_possible_connection(const string &desired_name, const string &default_name, const string &connection_type_name)
+{
+ static const string digits = "0123456789";
Connection* c = _session.connection_by_name (desired_name);
if (!c) {
- int connection_number, mask;
- string possible_name;
- bool stereo = false;
- size_t last_non_digit_pos;
+ int connection_number, mask;
+ string possible_name;
+ bool stereo = false;
+ string::size_type last_non_digit_pos;
error << string_compose(_("Unknown connection \"%1\" listed for %2 of %3"), desired_name, connection_type_name, _name)
<< endmsg;
@@ -1798,19 +1799,21 @@ static const string digits = "0123456789";
connection_number = 0;
last_non_digit_pos = desired_name.find_last_not_of(digits);
+
if (last_non_digit_pos != string::npos) {
stringstream s;
s << desired_name.substr(last_non_digit_pos);
s >> connection_number;
-
}
// see if it's a stereo connection e.g. "in 3+4"
+
if (last_non_digit_pos > 1 && desired_name[last_non_digit_pos] == '+') {
int left_connection_number = 0;
+ string::size_type left_last_non_digit_pos;
- size_t left_last_non_digit_pos;
left_last_non_digit_pos = desired_name.find_last_not_of(digits, last_non_digit_pos-1);
+
if (left_last_non_digit_pos != string::npos) {
stringstream s;
s << desired_name.substr(left_last_non_digit_pos, last_non_digit_pos-1);
@@ -1827,26 +1830,30 @@ static const string digits = "0123456789";
if (connection_number)
connection_number--;
- cerr << "desired_name = " << desired_name << ", connection_number = " << connection_number << endl;
// find highest set bit
mask = 1;
- while ((mask <= connection_number) && (mask <<= 1)) {
- }
+ while ((mask <= connection_number) && (mask <<= 1));
// "wrap" connection number into largest possible power of 2
// that works...
- while (mask && !c) {
+
+ while (mask) {
+
if (connection_number & mask) {
connection_number &= ~mask;
stringstream s;
s << default_name << " " << connection_number + 1;
+
if (stereo) {
s << "+" << connection_number + 2;
}
possible_name = s.str();
- c = _session.connection_by_name (possible_name);
+
+ if ((c = _session.connection_by_name (possible_name)) != 0) {
+ break;
+ }
}
mask >>= 1;
}
diff --git a/libs/ardour/session_export.cc b/libs/ardour/session_export.cc
index 373f662eda..ecb5b13af8 100644
--- a/libs/ardour/session_export.cc
+++ b/libs/ardour/session_export.cc
@@ -443,6 +443,8 @@ Session::start_audio_export (AudioExportSpecification& spec)
spec.freewheel_connection = _engine.Freewheel.connect (sigc::bind (mem_fun (*this, &Session::process_export), &spec));
+ cerr << "Start export at pos = " << spec.pos << endl;
+
return _engine.freewheel (true);
}
@@ -510,6 +512,8 @@ Session::prepare_to_export (AudioExportSpecification& spec)
}
}
+ cerr << "Everybdy is at " << spec.start_frame << endl;
+
/* we just did the core part of a locate() call above, but
for the sake of any GUI, put the _transport_frame in
the right place too.
@@ -545,6 +549,10 @@ Session::process_export (nframes_t nframes, AudioExportSpecification* spec)
int ret = -1;
nframes_t this_nframes;
+ cerr << "Export process at pos = " << spec->pos << " _exporting = "
+ << _exporting << " running = " << spec->running << " stop = "
+ << spec->stop << endl;
+
/* This is not required to be RT-safe because we are running while freewheeling */
if (spec->do_freewheel == false) {
@@ -562,12 +570,14 @@ Session::process_export (nframes_t nframes, AudioExportSpecification* spec)
if (!_exporting) {
/* finished, but still freewheeling */
- process_without_events (nframes);
+ cerr << "\tExport ... not exporting yet, no_roll() for " << nframes <<endl;
+ no_roll (nframes, 0);
return 0;
}
-
+
if (!spec->running || spec->stop || (this_nframes = min ((spec->end_frame - spec->pos), nframes)) == 0) {
- process_without_events (nframes);
+ cerr << "\tExport ... not running or at end, no_roll() for " << nframes <<endl;
+ no_roll (nframes, 0);
return stop_audio_export (*spec);
}
@@ -616,6 +626,8 @@ Session::process_export (nframes_t nframes, AudioExportSpecification* spec)
}
}
+ cerr << "\tprocess " << nframes << endl;
+
if (spec->process (nframes)) {
goto out;
}
@@ -623,6 +635,8 @@ Session::process_export (nframes_t nframes, AudioExportSpecification* spec)
spec->pos += nframes;
spec->progress = 1.0 - (((float) spec->end_frame - spec->pos) / spec->total_frames);
+ cerr << "\t@ " << spec->pos << " prog = " << spec->progress << endl;
+
/* and we're good to go */
ret = 0;
diff --git a/libs/ardour/session_process.cc b/libs/ardour/session_process.cc
index 7e4762ce47..c737a27658 100644
--- a/libs/ardour/session_process.cc
+++ b/libs/ardour/session_process.cc
@@ -846,18 +846,38 @@ Session::maybe_sync_start (nframes_t& nframes, nframes_t& offset)
if (_engine.get_sync_offset (sync_offset) && sync_offset < nframes) {
+ /* generate silence up to the sync point, then
+ adjust nframes + offset to reflect whatever
+ is left to do.
+ */
+
no_roll (sync_offset, 0);
nframes -= sync_offset;
offset += sync_offset;
waiting_for_sync_offset = false;
if (nframes == 0) {
- return true; // done
+ return true; // done, nothing left to process
}
} else {
+
+ /* sync offset point is not within this process()
+ cycle, so just generate silence. and don't bother
+ with any fancy stuff here, just the minimal silence.
+ */
+
+ g_atomic_int_inc (&processing_prohibited);
no_roll (nframes, 0);
- return true; // done
+ g_atomic_int_dec_and_test (&processing_prohibited);
+
+ if (Config->get_locate_while_waiting_for_sync()) {
+ if (micro_locate (nframes)) {
+ /* XXX ERROR !!! XXX */
+ }
+ }
+
+ return true; // done, nothing left to process
}
return false;
diff --git a/libs/ardour/session_transport.cc b/libs/ardour/session_transport.cc
index 5fec4e37ee..552a21d849 100644
--- a/libs/ardour/session_transport.cc
+++ b/libs/ardour/session_transport.cc
@@ -640,6 +640,25 @@ Session::start_locate (nframes_t target_frame, bool with_roll, bool with_flush,
}
}
+int
+Session::micro_locate (nframes_t distance)
+{
+ boost::shared_ptr<DiskstreamList> dsl = diskstreams.reader();
+
+ for (DiskstreamList::iterator i = dsl->begin(); i != dsl->end(); ++i) {
+ if (!(*i)->can_internal_playback_seek (distance)) {
+ return -1;
+ }
+ }
+
+ for (DiskstreamList::iterator i = dsl->begin(); i != dsl->end(); ++i) {
+ (*i)->internal_playback_seek (distance);
+ }
+
+ _transport_frame += distance;
+ return 0;
+}
+
void
Session::locate (nframes_t target_frame, bool with_roll, bool with_flush, bool with_loop)
{
diff --git a/libs/clearlooks/SConscript b/libs/clearlooks/SConscript
index 2676f63022..4feff6db90 100644
--- a/libs/clearlooks/SConscript
+++ b/libs/clearlooks/SConscript
@@ -12,7 +12,7 @@ libclearlooks_files = [
Import ('env install_prefix')
-clearlooks = env.Copy()
+clearlooks = env.Clone()
clearlooks.Replace(CCFLAGS = ' `pkg-config --cflags gtk+-2.0` ',
LINKFLAGS = ' `pkg-config --libs gtk+-2.0` ')
diff --git a/libs/fst/SConscript b/libs/fst/SConscript
index bdffd959b5..576283d73c 100644
--- a/libs/fst/SConscript
+++ b/libs/fst/SConscript
@@ -8,7 +8,7 @@ import glob
fst_src = glob.glob('*.c')
Import('env install_prefix')
-fst = env.Copy(CC="winegcc")
+fst = env.Clone(CC="winegcc")
fst.Append (CPPPATH=".")
if fst['VST']:
diff --git a/libs/glibmm2/SConscript b/libs/glibmm2/SConscript
index c84a1dc4a4..3abc14d801 100644
--- a/libs/glibmm2/SConscript
+++ b/libs/glibmm2/SConscript
@@ -9,7 +9,7 @@ glibmm2_files = glob.glob('glibmm/*.cc')
Import('env libraries install_prefix')
-glibmm2 = env.Copy()
+glibmm2 = env.Clone()
glibmm2.Merge([libraries['sigc2'], libraries['glib2']])
glibmm2.Append(CXXFLAGS='-DHAVE_CONFIG_H')
diff --git a/libs/gtkmm2/atk/SConscript b/libs/gtkmm2/atk/SConscript
index f534a2e569..3a78bf8102 100644
--- a/libs/gtkmm2/atk/SConscript
+++ b/libs/gtkmm2/atk/SConscript
@@ -7,7 +7,7 @@ import glob
atkmm_files = glob.glob('atkmm/*.cc')
Import('env libraries install_prefix')
-atkmm = env.Copy()
+atkmm = env.Clone()
atkmm.Merge([libraries['glibmm2'], libraries['gtk2'], libraries['sigc2'] ])
libatkmm = atkmm.SharedLibrary('atkmm', atkmm_files)
Default(libatkmm)
diff --git a/libs/gtkmm2/gdk/SConscript b/libs/gtkmm2/gdk/SConscript
index 6ea5c7cfef..d23f3257a5 100644
--- a/libs/gtkmm2/gdk/SConscript
+++ b/libs/gtkmm2/gdk/SConscript
@@ -7,7 +7,7 @@ import glob
gdkmm2_files = glob.glob('gdkmm/*.cc')
Import('env libraries install_prefix')
-gdkmm2 = env.Copy()
+gdkmm2 = env.Clone()
gdkmm2.Merge([libraries['glibmm2'], libraries['gtk2'], libraries['sigc2'], libraries['pangomm']])
gdkmm2.Append(CXXFLAGS="-Ilibs/gtkmm2/gtk")
diff --git a/libs/gtkmm2/gtk/SConscript b/libs/gtkmm2/gtk/SConscript
index c3dd480258..c7041b830e 100644
--- a/libs/gtkmm2/gtk/SConscript
+++ b/libs/gtkmm2/gtk/SConscript
@@ -7,7 +7,7 @@ import glob
gtkmm2_files = glob.glob('gtkmm/*.cc')
Import('env libraries install_prefix')
-gtkmm2 = env.Copy()
+gtkmm2 = env.Clone()
gtkmm2.Merge([libraries['glibmm2'], libraries['gtk2'], libraries['sigc2'], libraries['pangomm'], libraries['atkmm'], libraries['gdkmm2'] ])
if gtkmm2['IS_OSX']:
diff --git a/libs/gtkmm2/pango/SConscript b/libs/gtkmm2/pango/SConscript
index c08dcf8e71..321cb1d794 100644
--- a/libs/gtkmm2/pango/SConscript
+++ b/libs/gtkmm2/pango/SConscript
@@ -7,7 +7,7 @@ import glob
pangomm_files = glob.glob('pangomm/*.cc')
Import('env libraries install_prefix')
-pangomm = env.Copy()
+pangomm = env.Clone()
pangomm.Merge([libraries['glibmm2'], libraries['pango'], libraries['sigc2']])
if pangomm['IS_OSX']:
diff --git a/libs/gtkmm2ext/SConscript b/libs/gtkmm2ext/SConscript
index 8c5d926493..84c523a5f7 100644
--- a/libs/gtkmm2ext/SConscript
+++ b/libs/gtkmm2ext/SConscript
@@ -6,7 +6,7 @@ import glob
Import('env final_prefix install_prefix libraries i18n')
-gtkmm2ext = env.Copy()
+gtkmm2ext = env.Clone()
gtkmm2ext.Merge ([
libraries['sigc2'],
libraries['pbd'],
diff --git a/libs/libglademm/SConscript b/libs/libglademm/SConscript
index 0d22ba243f..3cf7f41901 100644
--- a/libs/libglademm/SConscript
+++ b/libs/libglademm/SConscript
@@ -8,7 +8,7 @@ Import('env libraries install_prefix')
libglademm_files = glob.glob('libglademm/*.cc')
-libglademm = env.Copy()
+libglademm = env.Clone()
libglademm.Merge([libraries['gtk2'], libraries['glade2'], libraries['sigc2'], libraries['glibmm2'], libraries['pangomm'], libraries['atkmm'], libraries['gdkmm2'], libraries['gtkmm2']])
libglade = libglademm.SharedLibrary('libglademm', libglademm_files)
diff --git a/libs/libgnomecanvasmm/SConscript b/libs/libgnomecanvasmm/SConscript
index cd952b604f..a0fb9387a5 100644
--- a/libs/libgnomecanvasmm/SConscript
+++ b/libs/libgnomecanvasmm/SConscript
@@ -7,7 +7,7 @@ import glob
gnomecanvasmm_files = glob.glob('libgnomecanvasmm/*.cc')
Import('env libraries install_prefix')
-gnomecanvasmm = env.Copy()
+gnomecanvasmm = env.Clone()
gnomecanvasmm.Merge([libraries['glibmm2'],
libraries['gtk2'],
libraries['sigc2'],
diff --git a/libs/pbd/undo.cc b/libs/pbd/undo.cc
index f59228082d..4ed1e70ebc 100644
--- a/libs/pbd/undo.cc
+++ b/libs/pbd/undo.cc
@@ -21,6 +21,7 @@
#include <iostream>
#include <string>
#include <sstream>
+#include <time.h>
#include <pbd/undo.h>
#include <pbd/xml++.h>
@@ -34,6 +35,7 @@ using namespace sigc;
UndoTransaction::UndoTransaction ()
{
_clearing = false;
+ gettimeofday (&_timestamp, 0);
}
UndoTransaction::UndoTransaction (const UndoTransaction& rhs)
diff --git a/libs/rubberband/SConscript b/libs/rubberband/SConscript
index ef44155f84..82a9f1fa5c 100644
--- a/libs/rubberband/SConscript
+++ b/libs/rubberband/SConscript
@@ -7,7 +7,7 @@ import glob
rubberband_files = glob.glob ('src/*.cpp')
Import('env install_prefix libraries')
-rb = env.Copy()
+rb = env.Clone()
rb.Merge ([libraries['fftw3f'],
libraries['fftw3'],
diff --git a/libs/soundtouch/SConscript b/libs/soundtouch/SConscript
index 9ddee87b0c..71f1d9bf1a 100644
--- a/libs/soundtouch/SConscript
+++ b/libs/soundtouch/SConscript
@@ -16,7 +16,7 @@ cpu_detect_x86_gcc.cpp
""")
Import('env install_prefix')
-st = env.Copy()
+st = env.Clone()
st.Append(CCFLAGS="-DHAVE_CONFIG_H -D_REENTRANT -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE")
libst = st.SharedLibrary('soundtouch', soundtouch_files)
diff --git a/libs/surfaces/control_protocol/SConscript b/libs/surfaces/control_protocol/SConscript
index 141ec7a071..ccf5f871fc 100644
--- a/libs/surfaces/control_protocol/SConscript
+++ b/libs/surfaces/control_protocol/SConscript
@@ -6,7 +6,7 @@ import glob
Import('env final_prefix install_prefix final_config_prefix libraries i18n')
-cp = env.Copy()
+cp = env.Clone()
#
# this defines the version number of libardour_cp
diff --git a/libs/surfaces/frontier/tranzport/SConscript b/libs/surfaces/frontier/tranzport/SConscript
index 5d390f3e2f..582f4a76e4 100644
--- a/libs/surfaces/frontier/tranzport/SConscript
+++ b/libs/surfaces/frontier/tranzport/SConscript
@@ -6,7 +6,7 @@ import glob
Import('env final_prefix install_prefix final_config_prefix libraries i18n')
-tranzport = env.Copy()
+tranzport = env.Clone()
#
# this defines the version number of libardour_tranzport
diff --git a/libs/surfaces/generic_midi/SConscript b/libs/surfaces/generic_midi/SConscript
index b092188852..ecb4198598 100644
--- a/libs/surfaces/generic_midi/SConscript
+++ b/libs/surfaces/generic_midi/SConscript
@@ -6,7 +6,7 @@ import glob
Import('env final_prefix install_prefix final_config_prefix libraries i18n')
-genericmidi = env.Copy()
+genericmidi = env.Clone()
#
# this defines the version number of libardour_genericmidi
diff --git a/libs/surfaces/mackie/SConscript b/libs/surfaces/mackie/SConscript
index 7fad6d3269..c817c99db9 100644
--- a/libs/surfaces/mackie/SConscript
+++ b/libs/surfaces/mackie/SConscript
@@ -6,7 +6,7 @@ import glob
Import('env final_prefix install_prefix final_config_prefix libraries i18n')
-mackie = env.Copy()
+mackie = env.Clone()
#
# this defines the version number of libardour_mackie
diff --git a/libs/surfaces/powermate/SConscript b/libs/surfaces/powermate/SConscript
index cda2c6ab37..216ae4d415 100644
--- a/libs/surfaces/powermate/SConscript
+++ b/libs/surfaces/powermate/SConscript
@@ -6,7 +6,7 @@ import glob
Import('env final_prefix install_prefix final_config_prefix libraries i18n')
-powermate = env.Copy()
+powermate = env.Clone()
#
# this defines the version number of powermate
diff --git a/libs/surfaces/tranzport/SConscript b/libs/surfaces/tranzport/SConscript
index a154685299..441819e90c 100644
--- a/libs/surfaces/tranzport/SConscript
+++ b/libs/surfaces/tranzport/SConscript
@@ -6,7 +6,7 @@ import glob
Import('env final_prefix install_prefix final_config_prefix libraries i18n')
-tranzport = env.Copy()
+tranzport = env.Clone()
#
# this defines the version number of libardour_tranzport