summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2006-10-13 15:07:50 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2006-10-13 15:07:50 +0000
commit2b90eeade92f750e85408f25b2d34af3e695f1cf (patch)
tree0057ef49e6c3692f2933bfffc22ec5db4ae402e4 /libs
parent1f2c5ba533d1e257e35c042feb79561757e03f4b (diff)
session export starts from session start marker; add tooltips for rude solo + audition; start work on control protocol feedback control (unfinished but compiles and runs
git-svn-id: svn://localhost/ardour2/trunk@985 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/ardour/control_protocol_manager.h1
-rw-r--r--libs/ardour/control_protocol_manager.cc1
-rw-r--r--libs/ardour/session.cc14
-rw-r--r--libs/ardour/session_midi.cc2
-rw-r--r--libs/surfaces/control_protocol/control_protocol/control_protocol.h2
-rw-r--r--libs/surfaces/generic_midi/generic_midi_control_protocol.h1
-rw-r--r--libs/surfaces/generic_midi/interface.cc1
-rw-r--r--libs/surfaces/tranzport/interface.cc1
8 files changed, 19 insertions, 4 deletions
diff --git a/libs/ardour/ardour/control_protocol_manager.h b/libs/ardour/ardour/control_protocol_manager.h
index 99de5479fb..39e4803637 100644
--- a/libs/ardour/ardour/control_protocol_manager.h
+++ b/libs/ardour/ardour/control_protocol_manager.h
@@ -23,6 +23,7 @@ struct ControlProtocolInfo {
std::string path;
bool requested;
bool mandatory;
+ bool supports_feedback;
XMLNode* state;
ControlProtocolInfo() : descriptor (0), protocol (0), state (0) {}
diff --git a/libs/ardour/control_protocol_manager.cc b/libs/ardour/control_protocol_manager.cc
index 7170b45656..1ff6c28ef3 100644
--- a/libs/ardour/control_protocol_manager.cc
+++ b/libs/ardour/control_protocol_manager.cc
@@ -189,6 +189,7 @@ ControlProtocolManager::control_protocol_discover (string path)
cpi->protocol = 0;
cpi->requested = false;
cpi->mandatory = descriptor->mandatory;
+ cpi->supports_feedback = descriptor->supports_feedback;
cpi->state = 0;
control_protocol_info.push_back (cpi);
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc
index d5ff3d223c..e8f6ec1023 100644
--- a/libs/ardour/session.cc
+++ b/libs/ardour/session.cc
@@ -3288,7 +3288,19 @@ Session::remove_redirect (Redirect* redirect)
nframes_t
Session::available_capture_duration ()
{
- const double scale = 4096.0 / sizeof (Sample);
+ float sample_bytes_on_disk;
+
+ switch (Config->get_native_file_data_format()) {
+ case FormatFloat:
+ sample_bytes_on_disk = 4;
+ break;
+
+ case FormatInt24:
+ sample_bytes_on_disk = 3;
+ break;
+ }
+
+ double scale = 4096.0 / sample_bytes_on_disk;
if (_total_free_4k_blocks * scale > (double) max_frames) {
return max_frames;
diff --git a/libs/ardour/session_midi.cc b/libs/ardour/session_midi.cc
index 1af00ca337..fe08b40127 100644
--- a/libs/ardour/session_midi.cc
+++ b/libs/ardour/session_midi.cc
@@ -1111,7 +1111,7 @@ Session::terminate_midi_thread ()
void
Session::poke_midi_thread ()
{
- char c;
+ static char c = 0;
if (write (midi_request_pipe[1], &c, 1) != 1) {
error << string_compose(_("cannot send signal to midi thread! (%1)"), strerror (errno)) << endmsg;
diff --git a/libs/surfaces/control_protocol/control_protocol/control_protocol.h b/libs/surfaces/control_protocol/control_protocol/control_protocol.h
index 3635b267ce..a689d49431 100644
--- a/libs/surfaces/control_protocol/control_protocol/control_protocol.h
+++ b/libs/surfaces/control_protocol/control_protocol/control_protocol.h
@@ -47,7 +47,6 @@ class ControlProtocol : public sigc::trackable, public Stateful, public BasicUI
virtual int set_feedback (bool yn) { return 0; }
virtual bool get_feedback () const { return false; }
- virtual bool supports_feedback () const { return false; }
sigc::signal<void> ActiveChanged;
@@ -114,6 +113,7 @@ extern "C" {
void* ptr; /* protocol can store a value here */
void* module; /* not for public access */
int mandatory; /* if non-zero, always load and do not make optional */
+ bool supports_feedback; /* if true, protocol has toggleable feedback mechanism */
bool (*probe)(ControlProtocolDescriptor*);
ControlProtocol* (*initialize)(ControlProtocolDescriptor*,Session*);
void (*destroy)(ControlProtocolDescriptor*,ControlProtocol*);
diff --git a/libs/surfaces/generic_midi/generic_midi_control_protocol.h b/libs/surfaces/generic_midi/generic_midi_control_protocol.h
index d008744727..6fba16bccd 100644
--- a/libs/surfaces/generic_midi/generic_midi_control_protocol.h
+++ b/libs/surfaces/generic_midi/generic_midi_control_protocol.h
@@ -34,7 +34,6 @@ class GenericMidiControlProtocol : public ARDOUR::ControlProtocol {
int set_feedback (bool yn);
bool get_feedback () const;
- bool supports_feedback () const { return true; }
XMLNode& get_state ();
int set_state (const XMLNode&);
diff --git a/libs/surfaces/generic_midi/interface.cc b/libs/surfaces/generic_midi/interface.cc
index 230be694f2..c70b5b6b61 100644
--- a/libs/surfaces/generic_midi/interface.cc
+++ b/libs/surfaces/generic_midi/interface.cc
@@ -42,6 +42,7 @@ static ControlProtocolDescriptor generic_midi_descriptor = {
ptr : 0,
module : 0,
mandatory : 0,
+ supports_feedback : true,
probe : probe_generic_midi_protocol,
initialize : new_generic_midi_protocol,
destroy : delete_generic_midi_protocol
diff --git a/libs/surfaces/tranzport/interface.cc b/libs/surfaces/tranzport/interface.cc
index 29a0fde043..f6d0dc8206 100644
--- a/libs/surfaces/tranzport/interface.cc
+++ b/libs/surfaces/tranzport/interface.cc
@@ -35,6 +35,7 @@ static ControlProtocolDescriptor tranzport_descriptor = {
ptr : 0,
module : 0,
mandatory : 0,
+ supports_feedback : false,
probe : probe_tranzport_protocol,
initialize : new_tranzport_protocol,
destroy : delete_tranzport_protocol