summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2007-10-23 14:02:15 +0000
committerCarl Hetherington <carl@carlh.net>2007-10-23 14:02:15 +0000
commitfc9ab1ccbdfc4ae8bdec962e4c9439c1fc59a55f (patch)
tree1b9436b1519761692639212ed25aca63dbd97859
parent4d33fbac628a695b5c63f7dae1ddaad9e1a5896d (diff)
Re-work Port construction slightly so that _flags is always initialised before reset() is called. Otherwise a decision is made based on an uninitialised variable (as spotted by valgrind)
git-svn-id: svn://localhost/ardour2/trunk@2568 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--libs/ardour/ardour/audio_port.h4
-rw-r--r--libs/ardour/ardour/midi_port.h2
-rw-r--r--libs/ardour/ardour/port.h2
-rw-r--r--libs/ardour/audio_port.cc8
-rw-r--r--libs/ardour/internal_audio_port.cc3
-rw-r--r--libs/ardour/internal_port.cc2
-rw-r--r--libs/ardour/jack_audio_port.cc2
-rw-r--r--libs/ardour/jack_midi_port.cc5
-rw-r--r--libs/ardour/jack_port.cc2
-rw-r--r--libs/ardour/midi_port.cc4
-rw-r--r--libs/ardour/port.cc5
11 files changed, 21 insertions, 18 deletions
diff --git a/libs/ardour/ardour/audio_port.h b/libs/ardour/ardour/audio_port.h
index 035ac9ed5f..e412e09bc4 100644
--- a/libs/ardour/ardour/audio_port.h
+++ b/libs/ardour/ardour/audio_port.h
@@ -70,8 +70,8 @@ class AudioPort : public virtual Port {
protected:
friend class AudioEngine;
- AudioPort (); // data buffer comes from elsewhere (e.g. JACK)
- AudioPort (nframes_t); // data buffer owned by ardour
+ AudioPort (Flags); // data buffer comes from elsewhere (e.g. JACK)
+ AudioPort (Flags, nframes_t); // data buffer owned by ardour
void reset ();
/* engine isn't supposed to access below here */
diff --git a/libs/ardour/ardour/midi_port.h b/libs/ardour/ardour/midi_port.h
index 48ebf31eef..3711373c31 100644
--- a/libs/ardour/ardour/midi_port.h
+++ b/libs/ardour/ardour/midi_port.h
@@ -51,7 +51,7 @@ class MidiPort : public virtual Port {
protected:
friend class AudioEngine;
- MidiPort (nframes_t bufsize);
+ MidiPort (Flags, nframes_t bufsize);
/* engine isn't supposed to access below here */
diff --git a/libs/ardour/ardour/port.h b/libs/ardour/ardour/port.h
index 860dec994f..5c8192b6e8 100644
--- a/libs/ardour/ardour/port.h
+++ b/libs/ardour/ardour/port.h
@@ -97,7 +97,7 @@ class Port : public virtual sigc::trackable {
protected:
friend class AudioEngine;
- Port ();
+ Port (Flags);
virtual int disconnect () = 0;
virtual void recompute_total_latency() const = 0;
diff --git a/libs/ardour/audio_port.cc b/libs/ardour/audio_port.cc
index aa8b363134..2e3682fe3b 100644
--- a/libs/ardour/audio_port.cc
+++ b/libs/ardour/audio_port.cc
@@ -26,15 +26,15 @@ using namespace std;
nframes_t AudioPort::_short_over_length = 2;
nframes_t AudioPort::_long_over_length = 10;
-AudioPort::AudioPort()
- : _buffer (0)
+AudioPort::AudioPort(Flags flags)
+ : Port (flags), _buffer (0)
{
_type = DataType::AUDIO;
reset();
}
-AudioPort::AudioPort(nframes_t nframes)
- : _buffer (nframes)
+AudioPort::AudioPort(Flags flags, nframes_t nframes)
+ : Port (flags), _buffer (nframes)
{
_type = DataType::AUDIO;
reset();
diff --git a/libs/ardour/internal_audio_port.cc b/libs/ardour/internal_audio_port.cc
index f5c5c5dee9..b6356cb6fb 100644
--- a/libs/ardour/internal_audio_port.cc
+++ b/libs/ardour/internal_audio_port.cc
@@ -36,7 +36,8 @@ InternalAudioPort::default_mixdown (const list<InternalPort*>& ports, AudioBuffe
}
InternalAudioPort::InternalAudioPort(const string& name, Flags flgs)
- : AudioPort (engine->frames_per_cycle())
+ : Port (flgs)
+ , AudioPort (flgs, engine->frames_per_cycle())
, InternalPort (name, DataType::AUDIO, flgs)
{
_mixdown = default_mixdown;
diff --git a/libs/ardour/internal_port.cc b/libs/ardour/internal_port.cc
index 3854931819..620fd69caa 100644
--- a/libs/ardour/internal_port.cc
+++ b/libs/ardour/internal_port.cc
@@ -35,10 +35,10 @@ InternalPort::set_engine (AudioEngine* e)
}
InternalPort::InternalPort (const string& str, DataType type, Flags flags)
+ : Port (flags)
{
set_name (str);
_type = type;
- _flags = flags;
}
InternalPort::~InternalPort ()
diff --git a/libs/ardour/jack_audio_port.cc b/libs/ardour/jack_audio_port.cc
index 83a6875f7d..acba8a787c 100644
--- a/libs/ardour/jack_audio_port.cc
+++ b/libs/ardour/jack_audio_port.cc
@@ -23,7 +23,7 @@
using namespace ARDOUR;
JackAudioPort::JackAudioPort(const std::string& name, Flags flgs)
- : JackPort (name, DataType::AUDIO, flgs)
+ : Port (flgs), AudioPort (flgs), JackPort (name, DataType::AUDIO, flgs)
{
}
diff --git a/libs/ardour/jack_midi_port.cc b/libs/ardour/jack_midi_port.cc
index 90ee93371d..109d7ca9e6 100644
--- a/libs/ardour/jack_midi_port.cc
+++ b/libs/ardour/jack_midi_port.cc
@@ -21,8 +21,9 @@
using namespace ARDOUR;
JackMidiPort::JackMidiPort (const std::string& name, Flags flgs)
- : JackPort (name, DataType::MIDI, flgs)
- , MidiPort (4096) // FIXME FIXME FIXME Jack needs to tell us this
+ : Port (flgs)
+ , JackPort (name, DataType::MIDI, flgs)
+ , MidiPort (flgs, 4096) // FIXME FIXME FIXME Jack needs to tell us this
, _nframes_this_cycle(0)
{
}
diff --git a/libs/ardour/jack_port.cc b/libs/ardour/jack_port.cc
index 221e46b076..02582d833e 100644
--- a/libs/ardour/jack_port.cc
+++ b/libs/ardour/jack_port.cc
@@ -31,7 +31,7 @@ using namespace std;
AudioEngine* JackPort::engine = 0;
JackPort::JackPort (const std::string& name, DataType type, Flags flgs)
- : _port (0)
+ : Port (flgs), _port (0)
{
_port = jack_port_register (engine->jack(), name.c_str(), type.to_jack_type(), flgs, 0);
diff --git a/libs/ardour/midi_port.cc b/libs/ardour/midi_port.cc
index df4ab19008..bd72528794 100644
--- a/libs/ardour/midi_port.cc
+++ b/libs/ardour/midi_port.cc
@@ -25,8 +25,8 @@
using namespace ARDOUR;
using namespace std;
-MidiPort::MidiPort (nframes_t bufsize)
- : _buffer (bufsize)
+MidiPort::MidiPort (Flags flags, nframes_t bufsize)
+ : Port (flags), _buffer (bufsize)
{
_type = DataType::MIDI;
reset();
diff --git a/libs/ardour/port.cc b/libs/ardour/port.cc
index bfc1eaf279..f65ce9906b 100644
--- a/libs/ardour/port.cc
+++ b/libs/ardour/port.cc
@@ -22,8 +22,9 @@
using namespace ARDOUR;
using namespace std;
-Port::Port ()
- : _metering (0)
+Port::Port (Flags flags)
+ : _flags (flags)
+ , _metering (0)
, _last_monitor (false)
{
}