mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-06 14:54:56 +01:00
Compile cleanly with clang.
To compile Ardour with LLVM/clang, do the usual thing but set the CXX and CC environment variables, e.g.: CC=/usr/bin/clang CXX=/usr/bin/clang++ ./waf configure build git-svn-id: svn://localhost/ardour2/branches/3.0@12418 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
effe4de188
commit
27a1cf2cf7
46 changed files with 115 additions and 99 deletions
|
|
@ -35,7 +35,7 @@
|
||||||
|
|
||||||
namespace ARDOUR {
|
namespace ARDOUR {
|
||||||
class AudioRegion;
|
class AudioRegion;
|
||||||
class PeakData;
|
struct PeakData;
|
||||||
};
|
};
|
||||||
|
|
||||||
class AudioTimeAxisView;
|
class AudioTimeAxisView;
|
||||||
|
|
|
||||||
|
|
@ -35,10 +35,10 @@ namespace Gdk {
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace ARDOUR {
|
namespace ARDOUR {
|
||||||
class Route;
|
|
||||||
class PeakData;
|
|
||||||
class AudioRegion;
|
class AudioRegion;
|
||||||
|
class Route;
|
||||||
class Source;
|
class Source;
|
||||||
|
struct PeakData;
|
||||||
}
|
}
|
||||||
|
|
||||||
class PublicEditor;
|
class PublicEditor;
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,6 @@ namespace ARDOUR {
|
||||||
class AutomationList;
|
class AutomationList;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct AutomationSelection : std::list<boost::shared_ptr<ARDOUR::AutomationList> > {};
|
class AutomationSelection : public std::list<boost::shared_ptr<ARDOUR::AutomationList> > {};
|
||||||
|
|
||||||
#endif /* __ardour_gtk_automation_selection_h__ */
|
#endif /* __ardour_gtk_automation_selection_h__ */
|
||||||
|
|
|
||||||
|
|
@ -63,7 +63,7 @@ class AxisView : public virtual Selectable, public PBD::ScopedConnectionList, pu
|
||||||
std::string gui_property (const std::string& property_name) const;
|
std::string gui_property (const std::string& property_name) const;
|
||||||
|
|
||||||
template<typename T> void set_gui_property (const std::string& property_name, const T& value) {
|
template<typename T> void set_gui_property (const std::string& property_name, const T& value) {
|
||||||
gui_object_state().set<T> (state_id(), property_name, value);
|
gui_object_state().set_property<T> (state_id(), property_name, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool marked_for_display () const;
|
bool marked_for_display () const;
|
||||||
|
|
|
||||||
|
|
@ -21,12 +21,13 @@
|
||||||
|
|
||||||
class Editor;
|
class Editor;
|
||||||
|
|
||||||
struct EditorCursor {
|
class EditorCursor {
|
||||||
Editor& editor;
|
public:
|
||||||
ArdourCanvas::Points points;
|
Editor& editor;
|
||||||
ArdourCanvas::Line canvas_item;
|
ArdourCanvas::Points points;
|
||||||
|
ArdourCanvas::Line canvas_item;
|
||||||
framepos_t current_frame;
|
framepos_t current_frame;
|
||||||
double length;
|
double length;
|
||||||
|
|
||||||
EditorCursor (Editor&, bool (Editor::*)(GdkEvent*,ArdourCanvas::Item*));
|
EditorCursor (Editor&, bool (Editor::*)(GdkEvent*,ArdourCanvas::Item*));
|
||||||
~EditorCursor ();
|
~EditorCursor ();
|
||||||
|
|
@ -35,5 +36,5 @@ struct EditorCursor {
|
||||||
void set_length (double units);
|
void set_length (double units);
|
||||||
void set_y_axis (double position);
|
void set_y_axis (double position);
|
||||||
|
|
||||||
PBD::Signal1<void, framepos_t> PositionChanged;
|
PBD::Signal1<void, framepos_t> PositionChanged;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -242,8 +242,9 @@ private:
|
||||||
class RegionDrag;
|
class RegionDrag;
|
||||||
|
|
||||||
/** Container for details about a region being dragged */
|
/** Container for details about a region being dragged */
|
||||||
struct DraggingView
|
class DraggingView
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
DraggingView (RegionView *, RegionDrag *);
|
DraggingView (RegionView *, RegionDrag *);
|
||||||
|
|
||||||
RegionView* view; ///< the view
|
RegionView* view; ///< the view
|
||||||
|
|
|
||||||
|
|
@ -303,7 +303,6 @@ EditorRegions::add_region (boost::shared_ptr<Region> region)
|
||||||
|
|
||||||
TreeModel::iterator iter = _model->get_iter ("0");
|
TreeModel::iterator iter = _model->get_iter ("0");
|
||||||
TreeModel::Row parent;
|
TreeModel::Row parent;
|
||||||
TreeModel::Row child;
|
|
||||||
|
|
||||||
if (!iter) {
|
if (!iter) {
|
||||||
parent = *(_model->append());
|
parent = *(_model->append());
|
||||||
|
|
@ -550,7 +549,7 @@ EditorRegions::selection_changed ()
|
||||||
|
|
||||||
for (TreeView::Selection::ListHandle_Path::iterator i = rows.begin(); i != rows.end(); ++i) {
|
for (TreeView::Selection::ListHandle_Path::iterator i = rows.begin(); i != rows.end(); ++i) {
|
||||||
|
|
||||||
if (iter = _model->get_iter (*i)) {
|
if ((iter = _model->get_iter (*i))) {
|
||||||
boost::shared_ptr<Region> region = (*iter)[_columns.region];
|
boost::shared_ptr<Region> region = (*iter)[_columns.region];
|
||||||
|
|
||||||
// they could have clicked on a row that is just a placeholder, like "Hidden"
|
// they could have clicked on a row that is just a placeholder, like "Hidden"
|
||||||
|
|
|
||||||
|
|
@ -393,7 +393,7 @@ ExportFormatDialog::init_format_table ()
|
||||||
|
|
||||||
boost::shared_ptr<HasSampleFormat> hsf;
|
boost::shared_ptr<HasSampleFormat> hsf;
|
||||||
|
|
||||||
if (hsf = boost::dynamic_pointer_cast<HasSampleFormat> (*it)) {
|
if ((hsf = boost::dynamic_pointer_cast<HasSampleFormat> (*it))) {
|
||||||
hsf->SampleFormatSelectChanged.connect (*this, invalidator (*this), boost::bind (&ExportFormatDialog::change_sample_format_selection, this, _1, _2), gui_context());
|
hsf->SampleFormatSelectChanged.connect (*this, invalidator (*this), boost::bind (&ExportFormatDialog::change_sample_format_selection, this, _1, _2), gui_context());
|
||||||
hsf->SampleFormatCompatibleChanged.connect (*this, invalidator (*this), boost::bind (&ExportFormatDialog::change_sample_format_compatibility, this, _1, _2), gui_context());
|
hsf->SampleFormatCompatibleChanged.connect (*this, invalidator (*this), boost::bind (&ExportFormatDialog::change_sample_format_compatibility, this, _1, _2), gui_context());
|
||||||
|
|
||||||
|
|
@ -832,13 +832,13 @@ ExportFormatDialog::change_encoding_options (ExportFormatPtr ptr)
|
||||||
boost::shared_ptr<ARDOUR::ExportFormatFLAC> flac_ptr;
|
boost::shared_ptr<ARDOUR::ExportFormatFLAC> flac_ptr;
|
||||||
boost::shared_ptr<ARDOUR::ExportFormatBWF> bwf_ptr;
|
boost::shared_ptr<ARDOUR::ExportFormatBWF> bwf_ptr;
|
||||||
|
|
||||||
if (linear_ptr = boost::dynamic_pointer_cast<ExportFormatLinear> (ptr)) {
|
if ((linear_ptr = boost::dynamic_pointer_cast<ExportFormatLinear> (ptr))) {
|
||||||
show_linear_enconding_options (linear_ptr);
|
show_linear_enconding_options (linear_ptr);
|
||||||
} else if (ogg_ptr = boost::dynamic_pointer_cast<ExportFormatOggVorbis> (ptr)) {
|
} else if ((ogg_ptr = boost::dynamic_pointer_cast<ExportFormatOggVorbis> (ptr))) {
|
||||||
show_ogg_enconding_options (ogg_ptr);
|
show_ogg_enconding_options (ogg_ptr);
|
||||||
} else if (flac_ptr = boost::dynamic_pointer_cast<ExportFormatFLAC> (ptr)) {
|
} else if ((flac_ptr = boost::dynamic_pointer_cast<ExportFormatFLAC> (ptr))) {
|
||||||
show_flac_enconding_options (flac_ptr);
|
show_flac_enconding_options (flac_ptr);
|
||||||
} else if (bwf_ptr = boost::dynamic_pointer_cast<ExportFormatBWF> (ptr)) {
|
} else if ((bwf_ptr = boost::dynamic_pointer_cast<ExportFormatBWF> (ptr))) {
|
||||||
show_bwf_enconding_options (bwf_ptr);
|
show_bwf_enconding_options (bwf_ptr);
|
||||||
} else {
|
} else {
|
||||||
std::cout << "Unrecognized format!" << std::endl;
|
std::cout << "Unrecognized format!" << std::endl;
|
||||||
|
|
|
||||||
|
|
@ -545,7 +545,7 @@ GroupTabs::set_group_color (RouteGroup* group, Gdk::Color color)
|
||||||
|
|
||||||
char buf[64];
|
char buf[64];
|
||||||
snprintf (buf, sizeof (buf), "%d:%d:%d", color.get_red(), color.get_green(), color.get_blue());
|
snprintf (buf, sizeof (buf), "%d:%d:%d", color.get_red(), color.get_green(), color.get_blue());
|
||||||
gui_state.set (group_gui_id (group), "color", buf);
|
gui_state.set_property (group_gui_id (group), "color", buf);
|
||||||
|
|
||||||
/* the group color change notification */
|
/* the group color change notification */
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@ public:
|
||||||
|
|
||||||
std::string get_string (const std::string& id, const std::string& prop_name, bool* empty = 0);
|
std::string get_string (const std::string& id, const std::string& prop_name, bool* empty = 0);
|
||||||
|
|
||||||
template<typename T> void set (const std::string& id, const std::string& prop_name, const T& val) {
|
template<typename T> void set_property (const std::string& id, const std::string& prop_name, const T& val) {
|
||||||
XMLNode* child = get_or_add_node (id);
|
XMLNode* child = get_or_add_node (id);
|
||||||
std::stringstream s;
|
std::stringstream s;
|
||||||
s << val;
|
s << val;
|
||||||
|
|
|
||||||
|
|
@ -282,7 +282,7 @@ MidiListEditor::scroll_event (GdkEventScroll* ev)
|
||||||
|
|
||||||
previous_selection.push_back (*i);
|
previous_selection.push_back (*i);
|
||||||
|
|
||||||
if (iter = model->get_iter (*i)) {
|
if ((iter = model->get_iter (*i))) {
|
||||||
|
|
||||||
note = (*iter)[columns._note];
|
note = (*iter)[columns._note];
|
||||||
|
|
||||||
|
|
@ -445,7 +445,6 @@ MidiListEditor::key_release (GdkEventKey* ev)
|
||||||
TreeModel::Path path;
|
TreeModel::Path path;
|
||||||
TreeViewColumn* col;
|
TreeViewColumn* col;
|
||||||
TreeModel::iterator iter;
|
TreeModel::iterator iter;
|
||||||
TreeModel::Row row;
|
|
||||||
MidiModel::NoteDiffCommand* cmd;
|
MidiModel::NoteDiffCommand* cmd;
|
||||||
boost::shared_ptr<MidiModel> m (region->midi_source(0)->model());
|
boost::shared_ptr<MidiModel> m (region->midi_source(0)->model());
|
||||||
boost::shared_ptr<NoteType> note;
|
boost::shared_ptr<NoteType> note;
|
||||||
|
|
@ -702,7 +701,7 @@ MidiListEditor::edited (const std::string& path, const std::string& text)
|
||||||
TreeView::Selection::ListHandle_Path rows = view.get_selection()->get_selected_rows ();
|
TreeView::Selection::ListHandle_Path rows = view.get_selection()->get_selected_rows ();
|
||||||
|
|
||||||
for (TreeView::Selection::ListHandle_Path::iterator i = rows.begin(); i != rows.end(); ++i) {
|
for (TreeView::Selection::ListHandle_Path::iterator i = rows.begin(); i != rows.end(); ++i) {
|
||||||
if (iter = model->get_iter (*i)) {
|
if ((iter = model->get_iter (*i))) {
|
||||||
|
|
||||||
note = (*iter)[columns._note];
|
note = (*iter)[columns._note];
|
||||||
|
|
||||||
|
|
@ -809,7 +808,7 @@ MidiListEditor::selection_changed ()
|
||||||
NotePlayer* player = new NotePlayer (track);
|
NotePlayer* player = new NotePlayer (track);
|
||||||
|
|
||||||
for (TreeView::Selection::ListHandle_Path::iterator i = rows.begin(); i != rows.end(); ++i) {
|
for (TreeView::Selection::ListHandle_Path::iterator i = rows.begin(); i != rows.end(); ++i) {
|
||||||
if (iter = model->get_iter (*i)) {
|
if ((iter = model->get_iter (*i))) {
|
||||||
note = (*iter)[columns._note];
|
note = (*iter)[columns._note];
|
||||||
player->add (note);
|
player->add (note);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -34,12 +34,12 @@ namespace Gdk {
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace ARDOUR {
|
namespace ARDOUR {
|
||||||
class Route;
|
|
||||||
class Crossfade;
|
class Crossfade;
|
||||||
class PeakData;
|
|
||||||
class MidiRegion;
|
|
||||||
class Source;
|
|
||||||
class MidiModel;
|
class MidiModel;
|
||||||
|
class MidiRegion;
|
||||||
|
class Route;
|
||||||
|
class Source;
|
||||||
|
struct PeakData;
|
||||||
}
|
}
|
||||||
|
|
||||||
class PublicEditor;
|
class PublicEditor;
|
||||||
|
|
|
||||||
|
|
@ -1171,7 +1171,7 @@ MixerStrip::update_io_button (boost::shared_ptr<ARDOUR::Route> route, Width widt
|
||||||
}
|
}
|
||||||
|
|
||||||
if (each_io_has_one_connection) {
|
if (each_io_has_one_connection) {
|
||||||
if ((total_connection_count == ardour_connection_count)) {
|
if (total_connection_count == ardour_connection_count) {
|
||||||
// all connections are to the same track in ardour
|
// all connections are to the same track in ardour
|
||||||
// "ardour:Master/" -> "Master"
|
// "ardour:Master/" -> "Master"
|
||||||
string::size_type slash = ardour_track_name.find("/");
|
string::size_type slash = ardour_track_name.find("/");
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@
|
||||||
|
|
||||||
class ControlPoint;
|
class ControlPoint;
|
||||||
|
|
||||||
struct PointSelection : public std::list<ControlPoint *>
|
class PointSelection : public std::list<ControlPoint *>
|
||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,8 +22,9 @@
|
||||||
|
|
||||||
#include "ardour/bundle.h"
|
#include "ardour/bundle.h"
|
||||||
|
|
||||||
struct PortMatrixNode
|
class PortMatrixNode
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
PortMatrixNode () {}
|
PortMatrixNode () {}
|
||||||
PortMatrixNode (ARDOUR::BundleChannel r, ARDOUR::BundleChannel c) : row (r), column (c) {}
|
PortMatrixNode (ARDOUR::BundleChannel r, ARDOUR::BundleChannel c) : row (r), column (c) {}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -62,31 +62,31 @@ namespace Gtkmm2ext {
|
||||||
class TearOff;
|
class TearOff;
|
||||||
}
|
}
|
||||||
|
|
||||||
class Editor;
|
|
||||||
class TimeAxisViewItem;
|
|
||||||
class TimeAxisView;
|
|
||||||
class PluginUIWindow;
|
|
||||||
class PluginSelector;
|
|
||||||
class PlaylistSelector;
|
|
||||||
class XMLNode;
|
|
||||||
class Selection;
|
|
||||||
class AutomationLine;
|
|
||||||
class ControlPoint;
|
|
||||||
class SelectionRect;
|
|
||||||
class RouteTimeAxisView;
|
|
||||||
class RegionView;
|
|
||||||
class AudioRegionView;
|
class AudioRegionView;
|
||||||
class TempoMarker;
|
class AutomationLine;
|
||||||
class MeterMarker;
|
|
||||||
class Marker;
|
|
||||||
class AutomationTimeAxisView;
|
class AutomationTimeAxisView;
|
||||||
class MarkerTimeAxis;
|
class ControlPoint;
|
||||||
class ImageFrameView;
|
|
||||||
class ImageFrameTimeAxis;
|
|
||||||
class MarkerView;
|
|
||||||
class DragManager;
|
class DragManager;
|
||||||
|
class Editor;
|
||||||
|
class ImageFrameTimeAxis;
|
||||||
|
class ImageFrameView;
|
||||||
|
class Marker;
|
||||||
|
class MarkerTimeAxis;
|
||||||
|
class MarkerView;
|
||||||
|
class MeterMarker;
|
||||||
class MouseCursors;
|
class MouseCursors;
|
||||||
|
class PlaylistSelector;
|
||||||
|
class PluginSelector;
|
||||||
|
class PluginUIWindow;
|
||||||
|
class RegionView;
|
||||||
|
class RouteTimeAxisView;
|
||||||
|
class Selection;
|
||||||
|
class TempoMarker;
|
||||||
|
class TimeAxisView;
|
||||||
|
class TimeAxisViewItem;
|
||||||
class VerboseCursor;
|
class VerboseCursor;
|
||||||
|
class XMLNode;
|
||||||
|
struct SelectionRect;
|
||||||
|
|
||||||
using ARDOUR::framepos_t;
|
using ARDOUR::framepos_t;
|
||||||
using ARDOUR::framecnt_t;
|
using ARDOUR::framecnt_t;
|
||||||
|
|
|
||||||
|
|
@ -1347,7 +1347,7 @@ RouteUI::set_color (const Gdk::Color & c)
|
||||||
the time axis view and the mixer strip
|
the time axis view and the mixer strip
|
||||||
*/
|
*/
|
||||||
|
|
||||||
gui_object_state().set<string> (route_state_id(), X_("color"), buf);
|
gui_object_state().set_property<string> (route_state_id(), X_("color"), buf);
|
||||||
_route->gui_changed ("color", (void *) 0); /* EMIT_SIGNAL */
|
_route->gui_changed ("color", (void *) 0); /* EMIT_SIGNAL */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -34,12 +34,12 @@ namespace Gdk {
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace ARDOUR {
|
namespace ARDOUR {
|
||||||
class Route;
|
|
||||||
class Crossfade;
|
class Crossfade;
|
||||||
class PeakData;
|
|
||||||
class Region;
|
class Region;
|
||||||
|
class Route;
|
||||||
class Source;
|
class Source;
|
||||||
class Track;
|
class Track;
|
||||||
|
struct PeakData;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct RecBoxInfo {
|
struct RecBoxInfo {
|
||||||
|
|
|
||||||
|
|
@ -101,7 +101,7 @@ VolumeController::dB_printer (char buf[32], const boost::shared_ptr<PBD::Control
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
snprintf (buf, sizeof (buf), "--");
|
snprintf (buf, 32, "--");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -149,8 +149,9 @@ class Bundle : public PBD::ScopedConnectionList
|
||||||
Change _pending_change;
|
Change _pending_change;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct BundleChannel
|
class BundleChannel
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
BundleChannel () : channel (-1) {}
|
BundleChannel () : channel (-1) {}
|
||||||
|
|
||||||
BundleChannel (boost::shared_ptr<Bundle> b, int c)
|
BundleChannel (boost::shared_ptr<Bundle> b, int c)
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,8 @@ class ControlProtocol;
|
||||||
class ControlProtocolDescriptor;
|
class ControlProtocolDescriptor;
|
||||||
class Session;
|
class Session;
|
||||||
|
|
||||||
struct ControlProtocolInfo {
|
class ControlProtocolInfo {
|
||||||
|
public:
|
||||||
ControlProtocolDescriptor* descriptor;
|
ControlProtocolDescriptor* descriptor;
|
||||||
ControlProtocol* protocol;
|
ControlProtocol* protocol;
|
||||||
std::string name;
|
std::string name;
|
||||||
|
|
|
||||||
|
|
@ -31,8 +31,8 @@
|
||||||
namespace ARDOUR
|
namespace ARDOUR
|
||||||
{
|
{
|
||||||
|
|
||||||
struct ExportStatus {
|
class ExportStatus {
|
||||||
|
public:
|
||||||
ExportStatus ();
|
ExportStatus ();
|
||||||
void init ();
|
void init ();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,8 @@
|
||||||
|
|
||||||
namespace ARDOUR {
|
namespace ARDOUR {
|
||||||
|
|
||||||
struct ImportStatus : public InterThreadInfo {
|
class ImportStatus : public InterThreadInfo {
|
||||||
|
public:
|
||||||
std::string doing_what;
|
std::string doing_what;
|
||||||
|
|
||||||
/* control info */
|
/* control info */
|
||||||
|
|
|
||||||
|
|
@ -27,14 +27,15 @@
|
||||||
|
|
||||||
namespace ARDOUR {
|
namespace ARDOUR {
|
||||||
|
|
||||||
struct InterThreadInfo {
|
class InterThreadInfo {
|
||||||
|
public:
|
||||||
InterThreadInfo () : done (false), cancel (false), progress (0), thread (0) {}
|
InterThreadInfo () : done (false), cancel (false), progress (0), thread (0) {}
|
||||||
|
|
||||||
volatile bool done;
|
volatile bool done;
|
||||||
volatile bool cancel;
|
volatile bool cancel;
|
||||||
volatile float progress;
|
volatile float progress;
|
||||||
pthread_t thread;
|
pthread_t thread;
|
||||||
ProcessThread process_thread;
|
ProcessThread process_thread;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,8 @@ public:
|
||||||
bool merge_in_place(const MidiBuffer &other);
|
bool merge_in_place(const MidiBuffer &other);
|
||||||
|
|
||||||
template<typename BufferType, typename EventType>
|
template<typename BufferType, typename EventType>
|
||||||
struct iterator_base {
|
class iterator_base {
|
||||||
|
public:
|
||||||
iterator_base<BufferType, EventType>(BufferType& b, framecnt_t o) : buffer(b), offset(o) {}
|
iterator_base<BufferType, EventType>(BufferType& b, framecnt_t o) : buffer(b), offset(o) {}
|
||||||
inline EventType operator*() const {
|
inline EventType operator*() const {
|
||||||
uint8_t* ev_start = buffer._data + offset + sizeof(TimeType);
|
uint8_t* ev_start = buffer._data + offset + sizeof(TimeType);
|
||||||
|
|
|
||||||
|
|
@ -34,8 +34,9 @@ namespace ARDOUR
|
||||||
class Session;
|
class Session;
|
||||||
class Playlist;
|
class Playlist;
|
||||||
|
|
||||||
struct NamedSelection : public PBD::Stateful
|
class NamedSelection : public PBD::Stateful
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
NamedSelection (std::string, std::list<boost::shared_ptr<Playlist> >&);
|
NamedSelection (std::string, std::list<boost::shared_ptr<Playlist> >&);
|
||||||
NamedSelection (Session&, const XMLNode&);
|
NamedSelection (Session&, const XMLNode&);
|
||||||
virtual ~NamedSelection ();
|
virtual ~NamedSelection ();
|
||||||
|
|
|
||||||
|
|
@ -230,12 +230,14 @@ public:
|
||||||
friend class Session;
|
friend class Session;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
struct RegionReadLock : public Glib::RWLock::ReaderLock {
|
class RegionReadLock : public Glib::RWLock::ReaderLock {
|
||||||
|
public:
|
||||||
RegionReadLock (Playlist *pl) : Glib::RWLock::ReaderLock (pl->region_lock) {}
|
RegionReadLock (Playlist *pl) : Glib::RWLock::ReaderLock (pl->region_lock) {}
|
||||||
~RegionReadLock() {}
|
~RegionReadLock() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct RegionWriteLock : public Glib::RWLock::WriterLock {
|
class RegionWriteLock : public Glib::RWLock::WriterLock {
|
||||||
|
public:
|
||||||
RegionWriteLock (Playlist *pl, bool do_block_notify = true)
|
RegionWriteLock (Playlist *pl, bool do_block_notify = true)
|
||||||
: Glib::RWLock::WriterLock (pl->region_lock)
|
: Glib::RWLock::WriterLock (pl->region_lock)
|
||||||
, playlist (pl)
|
, playlist (pl)
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,8 @@ namespace ARDOUR {
|
||||||
class Slave;
|
class Slave;
|
||||||
class Region;
|
class Region;
|
||||||
|
|
||||||
struct SessionEvent {
|
class SessionEvent {
|
||||||
|
public:
|
||||||
enum Type {
|
enum Type {
|
||||||
SetTransportSpeed,
|
SetTransportSpeed,
|
||||||
SetTrackSpeed,
|
SetTrackSpeed,
|
||||||
|
|
|
||||||
|
|
@ -213,7 +213,8 @@ namespace ARDOUR {
|
||||||
timecode_60
|
timecode_60
|
||||||
};
|
};
|
||||||
|
|
||||||
struct AnyTime {
|
class AnyTime {
|
||||||
|
public:
|
||||||
enum Type {
|
enum Type {
|
||||||
Timecode,
|
Timecode,
|
||||||
BBT,
|
BBT,
|
||||||
|
|
|
||||||
|
|
@ -239,7 +239,7 @@ ExportFormatManager::add_format (ExportFormatPtr ptr)
|
||||||
|
|
||||||
boost::shared_ptr<HasSampleFormat> hsf;
|
boost::shared_ptr<HasSampleFormat> hsf;
|
||||||
|
|
||||||
if (hsf = boost::dynamic_pointer_cast<HasSampleFormat> (ptr)) {
|
if ((hsf = boost::dynamic_pointer_cast<HasSampleFormat> (ptr))) {
|
||||||
hsf->SampleFormatSelectChanged.connect_same_thread (*this, boost::bind (&ExportFormatManager::change_sample_format_selection, this, _1, _2));
|
hsf->SampleFormatSelectChanged.connect_same_thread (*this, boost::bind (&ExportFormatManager::change_sample_format_selection, this, _1, _2));
|
||||||
hsf->DitherTypeSelectChanged.connect_same_thread (*this, boost::bind (&ExportFormatManager::change_dither_type_selection, this, _1, _2));
|
hsf->DitherTypeSelectChanged.connect_same_thread (*this, boost::bind (&ExportFormatManager::change_dither_type_selection, this, _1, _2));
|
||||||
}
|
}
|
||||||
|
|
@ -682,7 +682,7 @@ ExportFormatManager::selection_changed ()
|
||||||
}
|
}
|
||||||
|
|
||||||
boost::shared_ptr<HasSampleFormat> hsf;
|
boost::shared_ptr<HasSampleFormat> hsf;
|
||||||
if (hsf = boost::dynamic_pointer_cast<HasSampleFormat> (get_selected_format())) {
|
if ((hsf = boost::dynamic_pointer_cast<HasSampleFormat> (get_selected_format()))) {
|
||||||
|
|
||||||
SampleFormatList sf_list = hsf->get_sample_formats();
|
SampleFormatList sf_list = hsf->get_sample_formats();
|
||||||
for (SampleFormatList::iterator it = sf_list.begin(); it != sf_list.end(); ++it) {
|
for (SampleFormatList::iterator it = sf_list.begin(); it != sf_list.end(); ++it) {
|
||||||
|
|
@ -747,7 +747,7 @@ ExportFormatManager::get_selected_sample_format ()
|
||||||
{
|
{
|
||||||
boost::shared_ptr<HasSampleFormat> hsf;
|
boost::shared_ptr<HasSampleFormat> hsf;
|
||||||
|
|
||||||
if (hsf = boost::dynamic_pointer_cast<HasSampleFormat> (get_selected_format())) {
|
if ((hsf = boost::dynamic_pointer_cast<HasSampleFormat> (get_selected_format()))) {
|
||||||
return hsf->get_selected_sample_format ();
|
return hsf->get_selected_sample_format ();
|
||||||
} else {
|
} else {
|
||||||
return SampleFormatPtr ();
|
return SampleFormatPtr ();
|
||||||
|
|
|
||||||
|
|
@ -112,7 +112,9 @@ mix_buffers_no_gain_t ARDOUR::mix_buffers_no_gain = 0;
|
||||||
|
|
||||||
PBD::Signal1<void,std::string> ARDOUR::BootMessage;
|
PBD::Signal1<void,std::string> ARDOUR::BootMessage;
|
||||||
|
|
||||||
void ARDOUR::setup_enum_writer ();
|
namespace ARDOUR {
|
||||||
|
extern void setup_enum_writer ();
|
||||||
|
}
|
||||||
|
|
||||||
/* this is useful for quite a few things that want to check
|
/* this is useful for quite a few things that want to check
|
||||||
if any bounds-related property has changed
|
if any bounds-related property has changed
|
||||||
|
|
@ -277,7 +279,7 @@ ARDOUR::init (bool use_windows_vst, bool try_optimization)
|
||||||
|
|
||||||
Stateful::current_state_version = CURRENT_SESSION_FILE_VERSION;
|
Stateful::current_state_version = CURRENT_SESSION_FILE_VERSION;
|
||||||
|
|
||||||
setup_enum_writer ();
|
ARDOUR::setup_enum_writer ();
|
||||||
|
|
||||||
// allow ardour the absolute maximum number of open files
|
// allow ardour the absolute maximum number of open files
|
||||||
lotsa_files_please ();
|
lotsa_files_please ();
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <utility>
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
|
@ -257,10 +258,7 @@ MidiPlaylist::read (Evoral::EventSink<framepos_t>& dst, framepos_t start, framec
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
if (new_tracker) {
|
if (new_tracker) {
|
||||||
pair<Region*,MidiStateTracker*> newpair;
|
_note_trackers.insert (make_pair (mr.get(), tracker));
|
||||||
newpair.first = mr.get();
|
|
||||||
newpair.second = tracker;
|
|
||||||
_note_trackers.insert (newpair).first;
|
|
||||||
DEBUG_TRACE (DEBUG::MidiPlaylistIO, "\tadded tracker to trackers\n");
|
DEBUG_TRACE (DEBUG::MidiPlaylistIO, "\tadded tracker to trackers\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -25,9 +25,10 @@
|
||||||
#include "ardour/event_type_map.h"
|
#include "ardour/event_type_map.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace ARDOUR;
|
|
||||||
using namespace PBD;
|
using namespace PBD;
|
||||||
|
|
||||||
|
namespace ARDOUR {
|
||||||
|
|
||||||
/** Read a block of MIDI events from this buffer into a MidiBuffer.
|
/** Read a block of MIDI events from this buffer into a MidiBuffer.
|
||||||
*
|
*
|
||||||
* Timestamps of events returned are relative to start (i.e. event with stamp 0
|
* Timestamps of events returned are relative to start (i.e. event with stamp 0
|
||||||
|
|
@ -279,3 +280,4 @@ MidiRingBuffer<T>::reset_tracker ()
|
||||||
|
|
||||||
template class MidiRingBuffer<framepos_t>;
|
template class MidiRingBuffer<framepos_t>;
|
||||||
|
|
||||||
|
} // namespace ARDOUR
|
||||||
|
|
|
||||||
|
|
@ -121,8 +121,9 @@ protected:
|
||||||
|
|
||||||
/// A process context that allocates and owns it's data buffer
|
/// A process context that allocates and owns it's data buffer
|
||||||
template <typename T = DefaultSampleType>
|
template <typename T = DefaultSampleType>
|
||||||
struct AllocatingProcessContext : public ProcessContext<T>
|
class AllocatingProcessContext : public ProcessContext<T>
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
/// Allocates uninitialized memory
|
/// Allocates uninitialized memory
|
||||||
AllocatingProcessContext (framecnt_t frames, ChannelCount channels)
|
AllocatingProcessContext (framecnt_t frames, ChannelCount channels)
|
||||||
: ProcessContext<T> (new T[frames], frames, channels) {}
|
: ProcessContext<T> (new T[frames], frames, channels) {}
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,8 @@ class Curve;
|
||||||
|
|
||||||
/** A single event (time-stamped value) for a control
|
/** A single event (time-stamped value) for a control
|
||||||
*/
|
*/
|
||||||
struct ControlEvent {
|
class ControlEvent {
|
||||||
|
public:
|
||||||
ControlEvent (double w, double v)
|
ControlEvent (double w, double v)
|
||||||
: when (w), value (v), coeff (0)
|
: when (w), value (v), coeff (0)
|
||||||
{}
|
{}
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,8 @@ void init_event_id_counter(event_id_t n);
|
||||||
* Template parameter Time is the type of the time stamp used for this event.
|
* Template parameter Time is the type of the time stamp used for this event.
|
||||||
*/
|
*/
|
||||||
template<typename Time>
|
template<typename Time>
|
||||||
struct Event {
|
class Event {
|
||||||
|
public:
|
||||||
#ifdef EVORAL_EVENT_ALLOC
|
#ifdef EVORAL_EVENT_ALLOC
|
||||||
Event (EventType type=0, Time time=0, uint32_t size=0, uint8_t* buf=NULL, bool alloc=false);
|
Event (EventType type=0, Time time=0, uint32_t size=0, uint8_t* buf=NULL, bool alloc=false);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ public:
|
||||||
EventRingBuffer(size_t capacity) : PBD::RingBufferNPT<uint8_t>(capacity)
|
EventRingBuffer(size_t capacity) : PBD::RingBufferNPT<uint8_t>(capacity)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
size_t capacity() const { return bufsize(); }
|
inline size_t capacity() const { return bufsize(); }
|
||||||
|
|
||||||
/** Peek at the ringbuffer (read w/o advancing read pointer).
|
/** Peek at the ringbuffer (read w/o advancing read pointer).
|
||||||
* @return how much has been peeked (wraps around if read exceeds
|
* @return how much has been peeked (wraps around if read exceeds
|
||||||
|
|
@ -57,10 +57,10 @@ public:
|
||||||
* read-pointer---^
|
* read-pointer---^
|
||||||
* </pre>
|
* </pre>
|
||||||
*/
|
*/
|
||||||
bool peek (uint8_t*, size_t size);
|
inline bool peek (uint8_t*, size_t size);
|
||||||
|
|
||||||
uint32_t write(Time time, EventType type, uint32_t size, const uint8_t* buf);
|
inline uint32_t write(Time time, EventType type, uint32_t size, const uint8_t* buf);
|
||||||
bool read (Time* time, EventType* type, uint32_t* size, uint8_t* buf);
|
inline bool read (Time* time, EventType* type, uint32_t* size, uint8_t* buf);
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename Time>
|
template<typename Time>
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,8 @@ namespace Evoral {
|
||||||
* valid MIDI data for these functions to make sense.
|
* valid MIDI data for these functions to make sense.
|
||||||
*/
|
*/
|
||||||
template<typename Time>
|
template<typename Time>
|
||||||
struct MIDIEvent : public Event<Time> {
|
class MIDIEvent : public Event<Time> {
|
||||||
|
public:
|
||||||
MIDIEvent(EventType type=0, Time time=0, uint32_t size=0, uint8_t* buf=NULL, bool alloc=false)
|
MIDIEvent(EventType type=0, Time time=0, uint32_t size=0, uint8_t* buf=NULL, bool alloc=false)
|
||||||
: Event<Time>(type, time, size, buf, alloc)
|
: Event<Time>(type, time, size, buf, alloc)
|
||||||
{}
|
{}
|
||||||
|
|
|
||||||
|
|
@ -180,7 +180,6 @@ smf_format_vlq(unsigned char *buf, int length, unsigned long value)
|
||||||
}
|
}
|
||||||
|
|
||||||
assert(i <= length);
|
assert(i <= length);
|
||||||
length = length; // get rid of stupid gcc warnings about unused params if assert() is null
|
|
||||||
|
|
||||||
/* + 1, because "i" is an offset, not a count. */
|
/* + 1, because "i" is an offset, not a count. */
|
||||||
return (i + 1);
|
return (i + 1);
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@
|
||||||
#include <boost/bind/protect.hpp>
|
#include <boost/bind/protect.hpp>
|
||||||
|
|
||||||
namespace sigc {
|
namespace sigc {
|
||||||
class trackable;
|
struct trackable;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define ENSURE_GUI_THREAD(obj,method, ...) if (!Gtkmm2ext::UI::instance()->caller_is_self()) { abort (); }
|
#define ENSURE_GUI_THREAD(obj,method, ...) if (!Gtkmm2ext::UI::instance()->caller_is_self()) { abort (); }
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,10 @@ using namespace MIDI;
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace PBD;
|
using namespace PBD;
|
||||||
|
|
||||||
|
namespace Evoral {
|
||||||
|
template class EventRingBuffer<timestamp_t>;
|
||||||
|
}
|
||||||
|
|
||||||
pthread_t JackMIDIPort::_process_thread;
|
pthread_t JackMIDIPort::_process_thread;
|
||||||
Signal0<void> JackMIDIPort::JackHalted;
|
Signal0<void> JackMIDIPort::JackHalted;
|
||||||
Signal0<void> JackMIDIPort::MakeConnections;
|
Signal0<void> JackMIDIPort::MakeConnections;
|
||||||
|
|
|
||||||
|
|
@ -37,9 +37,6 @@
|
||||||
#include "pbd/signals.h"
|
#include "pbd/signals.h"
|
||||||
#include "pbd/ringbuffer.h"
|
#include "pbd/ringbuffer.h"
|
||||||
|
|
||||||
#include "evoral/Event.hpp"
|
|
||||||
#include "evoral/EventRingBuffer.hpp"
|
|
||||||
|
|
||||||
#include "midi++/types.h"
|
#include "midi++/types.h"
|
||||||
#include "midi++/parser.h"
|
#include "midi++/parser.h"
|
||||||
#include "midi++/port.h"
|
#include "midi++/port.h"
|
||||||
|
|
|
||||||
|
|
@ -29,9 +29,6 @@
|
||||||
#include "pbd/signals.h"
|
#include "pbd/signals.h"
|
||||||
#include "pbd/ringbuffer.h"
|
#include "pbd/ringbuffer.h"
|
||||||
|
|
||||||
#include "evoral/Event.hpp"
|
|
||||||
#include "evoral/EventRingBuffer.hpp"
|
|
||||||
|
|
||||||
#include "midi++/types.h"
|
#include "midi++/types.h"
|
||||||
#include "midi++/parser.h"
|
#include "midi++/parser.h"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -300,7 +300,7 @@ Parser::process_mtc_quarter_frame (byte *msg)
|
||||||
|
|
||||||
switch (_mtc_running) {
|
switch (_mtc_running) {
|
||||||
case MTC_Forward:
|
case MTC_Forward:
|
||||||
if ((which_quarter_frame == 7)) {
|
if (which_quarter_frame == 7) {
|
||||||
|
|
||||||
/* we've reached the final of 8 quarter frame messages.
|
/* we've reached the final of 8 quarter frame messages.
|
||||||
store the time, reset the pending time holder,
|
store the time, reset the pending time holder,
|
||||||
|
|
|
||||||
|
|
@ -146,7 +146,8 @@ class ControlProtocol : public PBD::Stateful, public PBD::ScopedConnectionList,
|
||||||
};
|
};
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
struct ControlProtocolDescriptor {
|
class ControlProtocolDescriptor {
|
||||||
|
public:
|
||||||
const char* name; /* descriptive */
|
const char* name; /* descriptive */
|
||||||
const char* id; /* unique and version-specific */
|
const char* id; /* unique and version-specific */
|
||||||
void* ptr; /* protocol can store a value here */
|
void* ptr; /* protocol can store a value here */
|
||||||
|
|
|
||||||
5
wscript
5
wscript
|
|
@ -128,10 +128,11 @@ def set_compiler_flags (conf,opt):
|
||||||
platform = u[0].lower()
|
platform = u[0].lower()
|
||||||
version = u[2]
|
version = u[2]
|
||||||
|
|
||||||
|
is_clang = conf.env['CXX'][0].endswith('clang++')
|
||||||
if opt.gprofile:
|
if opt.gprofile:
|
||||||
debug_flags = [ '-pg' ]
|
debug_flags = [ '-pg' ]
|
||||||
else:
|
else:
|
||||||
if platform != 'darwin':
|
if platform != 'darwin' and not is_clang:
|
||||||
debug_flags = [ '-rdynamic' ] # waf adds -O0 -g itself. thanks waf!
|
debug_flags = [ '-rdynamic' ] # waf adds -O0 -g itself. thanks waf!
|
||||||
|
|
||||||
# Autodetect
|
# Autodetect
|
||||||
|
|
@ -214,7 +215,7 @@ def set_compiler_flags (conf,opt):
|
||||||
elif cpu == "i686":
|
elif cpu == "i686":
|
||||||
optimization_flags.append ("-march=i686")
|
optimization_flags.append ("-march=i686")
|
||||||
|
|
||||||
if ((conf.env['build_target'] == 'i686') or (conf.env['build_target'] == 'x86_64')) and build_host_supports_sse:
|
if not is_clang and ((conf.env['build_target'] == 'i686') or (conf.env['build_target'] == 'x86_64')) and build_host_supports_sse:
|
||||||
optimization_flags.extend (["-msse", "-mfpmath=sse", "-DUSE_XMMINTRIN"])
|
optimization_flags.extend (["-msse", "-mfpmath=sse", "-DUSE_XMMINTRIN"])
|
||||||
debug_flags.extend (["-msse", "-mfpmath=sse", "-DUSE_XMMINTRIN"])
|
debug_flags.extend (["-msse", "-mfpmath=sse", "-DUSE_XMMINTRIN"])
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue