Don't bind playlist_modified with a shared_ptr<Playlist> parameter.
Clean up. git-svn-id: svn://localhost/ardour2/branches/3.0@4599 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
fb254fb2fc
commit
458c588e2c
@ -248,11 +248,9 @@ void
|
||||
AudioStreamView::playlist_modified_weak (boost::weak_ptr<Diskstream> ds)
|
||||
{
|
||||
boost::shared_ptr<Diskstream> sp (ds.lock());
|
||||
if (!sp) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (sp) {
|
||||
playlist_modified (sp);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
@ -270,16 +268,29 @@ AudioStreamView::playlist_modified (boost::shared_ptr<Diskstream> ds)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
AudioStreamView::playlist_changed_weak (boost::weak_ptr<Diskstream> ds)
|
||||
{
|
||||
boost::shared_ptr<Diskstream> sp (ds.lock());
|
||||
if (sp) {
|
||||
playlist_changed (sp);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
AudioStreamView::playlist_changed (boost::shared_ptr<Diskstream> ds)
|
||||
{
|
||||
ENSURE_GUI_THREAD (bind (mem_fun (*this, &AudioStreamView::playlist_changed), ds));
|
||||
ENSURE_GUI_THREAD (bind (
|
||||
mem_fun (*this, &AudioStreamView::playlist_changed_weak),
|
||||
boost::weak_ptr<Diskstream> (ds)));
|
||||
|
||||
StreamView::playlist_changed(ds);
|
||||
|
||||
boost::shared_ptr<AudioPlaylist> apl = boost::dynamic_pointer_cast<AudioPlaylist>(ds->playlist());
|
||||
if (apl)
|
||||
playlist_connections.push_back (apl->NewCrossfade.connect (mem_fun (*this, &AudioStreamView::add_crossfade)));
|
||||
if (apl) {
|
||||
playlist_connections.push_back (apl->NewCrossfade.connect (
|
||||
mem_fun (*this, &AudioStreamView::add_crossfade)));
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -93,6 +93,7 @@ class AudioStreamView : public StreamView
|
||||
void redisplay_diskstream ();
|
||||
void playlist_modified_weak (boost::weak_ptr<ARDOUR::Diskstream>);
|
||||
void playlist_modified (boost::shared_ptr<ARDOUR::Diskstream>);
|
||||
void playlist_changed_weak (boost::weak_ptr<ARDOUR::Diskstream>);
|
||||
void playlist_changed (boost::shared_ptr<ARDOUR::Diskstream>);
|
||||
|
||||
void add_crossfade (boost::shared_ptr<ARDOUR::Crossfade>);
|
||||
|
@ -381,10 +381,8 @@ AutomationTimeAxisView::set_height (uint32_t h)
|
||||
{
|
||||
bool changed = (height != (uint32_t) h) || first_call_to_set_height;
|
||||
bool changed_between_small_and_normal = (
|
||||
(height < hNormal && h >= hNormal) ||
|
||||
(height >= hNormal ||
|
||||
h < hNormal)
|
||||
);
|
||||
(height < hNormal && h >= hNormal)
|
||||
|| (height >= hNormal || h < hNormal) );
|
||||
|
||||
TimeAxisView* state_parent = get_parent_with_state ();
|
||||
assert(state_parent);
|
||||
@ -515,20 +513,24 @@ AutomationTimeAxisView::build_display_menu ()
|
||||
auto_state_menu->set_name ("ArdourContextMenu");
|
||||
MenuList& as_items = auto_state_menu->items();
|
||||
|
||||
as_items.push_back (CheckMenuElem (_("Manual"),
|
||||
bind (mem_fun(*this, &AutomationTimeAxisView::set_automation_state), (AutoState) Off)));
|
||||
as_items.push_back (CheckMenuElem (_("Manual"), bind (
|
||||
mem_fun(*this, &AutomationTimeAxisView::set_automation_state),
|
||||
(AutoState) Off)));
|
||||
auto_off_item = dynamic_cast<CheckMenuItem*>(&as_items.back());
|
||||
|
||||
as_items.push_back (CheckMenuElem (_("Play"),
|
||||
bind (mem_fun(*this, &AutomationTimeAxisView::set_automation_state), (AutoState) Play)));
|
||||
as_items.push_back (CheckMenuElem (_("Play"), bind (
|
||||
mem_fun(*this, &AutomationTimeAxisView::set_automation_state),
|
||||
(AutoState) Play)));
|
||||
auto_play_item = dynamic_cast<CheckMenuItem*>(&as_items.back());
|
||||
|
||||
as_items.push_back (CheckMenuElem (_("Write"),
|
||||
bind (mem_fun(*this, &AutomationTimeAxisView::set_automation_state), (AutoState) Write)));
|
||||
as_items.push_back (CheckMenuElem (_("Write"), bind (
|
||||
mem_fun(*this, &AutomationTimeAxisView::set_automation_state),
|
||||
(AutoState) Write)));
|
||||
auto_write_item = dynamic_cast<CheckMenuItem*>(&as_items.back());
|
||||
|
||||
as_items.push_back (CheckMenuElem (_("Touch"),
|
||||
bind (mem_fun(*this, &AutomationTimeAxisView::set_automation_state), (AutoState) Touch)));
|
||||
as_items.push_back (CheckMenuElem (_("Touch"), bind (
|
||||
mem_fun(*this, &AutomationTimeAxisView::set_automation_state),
|
||||
(AutoState) Touch)));
|
||||
auto_touch_item = dynamic_cast<CheckMenuItem*>(&as_items.back());
|
||||
|
||||
items.push_back (MenuElem (_("State"), *auto_state_menu));
|
||||
@ -860,17 +862,6 @@ AutomationTimeAxisView::exited ()
|
||||
_line->track_exited();
|
||||
}
|
||||
|
||||
/*void
|
||||
AutomationTimeAxisView::set_colors ()
|
||||
{
|
||||
for (list<GhostRegion*>::iterator i=ghosts.begin(); i != ghosts.end(); i++ ) {
|
||||
(*i)->set_colors();
|
||||
}
|
||||
|
||||
if (_line)
|
||||
_line->set_colors();
|
||||
}*/
|
||||
|
||||
void
|
||||
AutomationTimeAxisView::color_handler ()
|
||||
{
|
||||
|
@ -28,13 +28,14 @@ using namespace Gtk;
|
||||
using namespace sigc;
|
||||
using namespace ARDOUR;
|
||||
|
||||
MidiChannelSelector::MidiChannelSelector(int no_rows, int no_columns, int start_row, int start_column) : Table(no_rows, no_columns, true)
|
||||
MidiChannelSelector::MidiChannelSelector(int n_rows, int n_columns, int start_row, int start_column)
|
||||
: Table(n_rows, n_columns, true)
|
||||
, _recursion_counter(0)
|
||||
{
|
||||
assert(no_rows >= 4);
|
||||
assert(no_rows >= start_row + 4);
|
||||
assert(no_columns >=4);
|
||||
assert(no_columns >= start_column + 4);
|
||||
assert(n_rows >= 4);
|
||||
assert(n_rows >= start_row + 4);
|
||||
assert(n_columns >=4);
|
||||
assert(n_columns >= start_column + 4);
|
||||
|
||||
property_column_spacing() = 0;
|
||||
property_row_spacing() = 0;
|
||||
|
@ -33,7 +33,7 @@
|
||||
class MidiChannelSelector : public Gtk::Table
|
||||
{
|
||||
public:
|
||||
MidiChannelSelector(int no_rows = 4, int no_columns = 4, int start_row = 0, int start_column = 0);
|
||||
MidiChannelSelector(int n_rows = 4, int n_columns = 4, int start_row = 0, int start_column = 0);
|
||||
virtual ~MidiChannelSelector() = 0;
|
||||
|
||||
sigc::signal<void, ARDOUR::ChannelMode, uint16_t> mode_changed;
|
||||
|
@ -166,8 +166,6 @@ MidiScroomer::on_size_request(Gtk::Requisition* r)
|
||||
{
|
||||
r->width = 12;
|
||||
r->height = 100;
|
||||
//r->width = 32;
|
||||
//r->height = 512;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -88,7 +88,8 @@ using namespace Editing;
|
||||
static const uint32_t MIDI_CONTROLS_BOX_MIN_HEIGHT = 162;
|
||||
static const uint32_t KEYBOARD_MIN_HEIGHT = 140;
|
||||
|
||||
MidiTimeAxisView::MidiTimeAxisView (PublicEditor& ed, Session& sess, boost::shared_ptr<Route> rt, Canvas& canvas)
|
||||
MidiTimeAxisView::MidiTimeAxisView (PublicEditor& ed, Session& sess,
|
||||
boost::shared_ptr<Route> rt, Canvas& canvas)
|
||||
: AxisView(sess) // virtually inherited
|
||||
, RouteTimeAxisView(ed, sess, rt, canvas)
|
||||
, _ignore_signals(false)
|
||||
@ -150,10 +151,9 @@ MidiTimeAxisView::MidiTimeAxisView (PublicEditor& ed, Session& sess, boost::shar
|
||||
|
||||
MIDI::Name::MidiPatchManager& patch_manager = MIDI::Name::MidiPatchManager::instance();
|
||||
|
||||
for (MIDI::Name::MasterDeviceNames::Models::const_iterator model = patch_manager.all_models().begin();
|
||||
model != patch_manager.all_models().end();
|
||||
++model) {
|
||||
_model_selector.append_text(model->c_str());
|
||||
MIDI::Name::MasterDeviceNames::Models::const_iterator m = patch_manager.all_models().begin();
|
||||
for (; m != patch_manager.all_models().end(); ++m) {
|
||||
_model_selector.append_text(m->c_str());
|
||||
}
|
||||
|
||||
_model_selector.signal_changed().connect(mem_fun(*this, &MidiTimeAxisView::model_changed));
|
||||
@ -178,7 +178,8 @@ MidiTimeAxisView::MidiTimeAxisView (PublicEditor& ed, Session& sess, boost::shar
|
||||
boost::shared_ptr<MidiDiskstream> diskstream = midi_track()->midi_diskstream();
|
||||
|
||||
// restore channel selector settings
|
||||
_channel_selector.set_channel_mode(diskstream->get_channel_mode(), diskstream->get_channel_mask());
|
||||
_channel_selector.set_channel_mode(diskstream->get_channel_mode(),
|
||||
diskstream->get_channel_mask());
|
||||
_channel_selector.mode_changed.connect(
|
||||
mem_fun(*midi_track()->midi_diskstream(), &MidiDiskstream::set_channel_mode));
|
||||
|
||||
@ -207,7 +208,8 @@ void MidiTimeAxisView::model_changed()
|
||||
|
||||
_custom_device_mode_selector.clear_items();
|
||||
|
||||
for (std::list<std::string>::const_iterator i = device_modes.begin(); i != device_modes.end(); ++i) {
|
||||
for (std::list<std::string>::const_iterator i = device_modes.begin();
|
||||
i != device_modes.end(); ++i) {
|
||||
cerr << "found custom device mode " << *i << " thread_id: " << pthread_self() << endl;
|
||||
_custom_device_mode_selector.append_text(*i);
|
||||
}
|
||||
@ -217,7 +219,8 @@ void MidiTimeAxisView::model_changed()
|
||||
|
||||
void MidiTimeAxisView::custom_device_mode_changed()
|
||||
{
|
||||
_midi_patch_settings_changed.emit(_model_selector.get_active_text(), _custom_device_mode_selector.get_active_text());
|
||||
_midi_patch_settings_changed.emit(_model_selector.get_active_text(),
|
||||
_custom_device_mode_selector.get_active_text());
|
||||
}
|
||||
|
||||
MidiStreamView*
|
||||
@ -556,6 +559,3 @@ MidiTimeAxisView::route_active_changed ()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -350,7 +350,6 @@ RouteTimeAxisView::set_edit_group_from_menu (RouteGroup *eg)
|
||||
|
||||
void
|
||||
RouteTimeAxisView::playlist_changed ()
|
||||
|
||||
{
|
||||
label_view ();
|
||||
|
||||
|
@ -72,14 +72,21 @@ StreamView::StreamView (RouteTimeAxisView& tv, ArdourCanvas::Group* group)
|
||||
|
||||
canvas_rect->property_outline_what() = (guint32) (0x2|0x8); // outline RHS and bottom
|
||||
|
||||
canvas_rect->signal_event().connect (bind (mem_fun (_trackview.editor(), &PublicEditor::canvas_stream_view_event), canvas_rect, &_trackview));
|
||||
canvas_rect->signal_event().connect (bind (
|
||||
mem_fun (_trackview.editor(), &PublicEditor::canvas_stream_view_event),
|
||||
canvas_rect, &_trackview));
|
||||
|
||||
if (_trackview.is_track()) {
|
||||
_trackview.track()->DiskstreamChanged.connect (mem_fun (*this, &StreamView::diskstream_changed));
|
||||
_trackview.session().TransportStateChange.connect (mem_fun (*this, &StreamView::transport_changed));
|
||||
_trackview.session().TransportLooped.connect (mem_fun (*this, &StreamView::transport_looped));
|
||||
_trackview.get_diskstream()->RecordEnableChanged.connect (mem_fun (*this, &StreamView::rec_enable_changed));
|
||||
_trackview.session().RecordStateChanged.connect (mem_fun (*this, &StreamView::sess_rec_enable_changed));
|
||||
_trackview.track()->DiskstreamChanged.connect (
|
||||
mem_fun (*this, &StreamView::diskstream_changed));
|
||||
_trackview.session().TransportStateChange.connect (
|
||||
mem_fun (*this, &StreamView::transport_changed));
|
||||
_trackview.session().TransportLooped.connect (
|
||||
mem_fun (*this, &StreamView::transport_looped));
|
||||
_trackview.get_diskstream()->RecordEnableChanged.connect (
|
||||
mem_fun (*this, &StreamView::rec_enable_changed));
|
||||
_trackview.session().RecordStateChanged.connect (
|
||||
mem_fun (*this, &StreamView::sess_rec_enable_changed));
|
||||
}
|
||||
|
||||
ColorsChanged.connect (mem_fun (*this, &StreamView::color_handler));
|
||||
@ -207,18 +214,9 @@ StreamView::display_diskstream (boost::shared_ptr<Diskstream> ds)
|
||||
{
|
||||
playlist_change_connection.disconnect();
|
||||
playlist_changed (ds);
|
||||
playlist_change_connection = ds->PlaylistChanged.connect (bind (mem_fun (*this, &StreamView::playlist_changed), ds));
|
||||
}
|
||||
|
||||
void
|
||||
StreamView::playlist_modified_weak (boost::weak_ptr<Diskstream> ds)
|
||||
{
|
||||
boost::shared_ptr<Diskstream> sp (ds.lock());
|
||||
if (!sp) {
|
||||
return;
|
||||
}
|
||||
|
||||
playlist_modified (sp);
|
||||
playlist_change_connection = ds->PlaylistChanged.connect (bind (
|
||||
mem_fun (*this, &StreamView::playlist_changed_weak),
|
||||
boost::weak_ptr<Diskstream> (ds)));
|
||||
}
|
||||
|
||||
void
|
||||
@ -278,6 +276,15 @@ StreamView::layer_regions()
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
StreamView::playlist_modified_weak (boost::weak_ptr<Diskstream> ds)
|
||||
{
|
||||
boost::shared_ptr<Diskstream> sp (ds.lock());
|
||||
if (sp) {
|
||||
playlist_modified (sp);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
StreamView::playlist_modified (boost::shared_ptr<Diskstream> ds)
|
||||
{
|
||||
@ -293,15 +300,26 @@ StreamView::playlist_modified (boost::shared_ptr<Diskstream> ds)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
StreamView::playlist_changed_weak (boost::weak_ptr<Diskstream> ds)
|
||||
{
|
||||
boost::shared_ptr<Diskstream> sp (ds.lock());
|
||||
if (sp) {
|
||||
playlist_changed (sp);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
StreamView::playlist_changed (boost::shared_ptr<Diskstream> ds)
|
||||
{
|
||||
/* XXX: binding to a shared_ptr, is this ok? */
|
||||
ENSURE_GUI_THREAD (bind (mem_fun (*this, &StreamView::playlist_changed), ds));
|
||||
ENSURE_GUI_THREAD (bind (
|
||||
mem_fun (*this, &StreamView::playlist_changed_weak),
|
||||
boost::weak_ptr<Diskstream> (ds)));
|
||||
|
||||
/* disconnect from old playlist */
|
||||
|
||||
for (vector<sigc::connection>::iterator i = playlist_connections.begin(); i != playlist_connections.end(); ++i) {
|
||||
for (vector<sigc::connection>::iterator i = playlist_connections.begin();
|
||||
i != playlist_connections.end(); ++i) {
|
||||
(*i).disconnect();
|
||||
}
|
||||
|
||||
@ -319,7 +337,9 @@ StreamView::playlist_changed (boost::shared_ptr<Diskstream> ds)
|
||||
|
||||
/* catch changes */
|
||||
|
||||
playlist_connections.push_back (ds->playlist()->Modified.connect (bind (mem_fun (*this, &StreamView::playlist_modified_weak), ds)));
|
||||
playlist_connections.push_back (ds->playlist()->Modified.connect (bind (
|
||||
mem_fun (*this, &StreamView::playlist_modified_weak),
|
||||
ds)));
|
||||
}
|
||||
|
||||
void
|
||||
@ -328,7 +348,9 @@ StreamView::diskstream_changed ()
|
||||
boost::shared_ptr<Track> t;
|
||||
|
||||
if ((t = _trackview.track()) != 0) {
|
||||
Gtkmm2ext::UI::instance()->call_slot (bind (mem_fun (*this, &StreamView::display_diskstream), t->diskstream()));
|
||||
Gtkmm2ext::UI::instance()->call_slot (bind (
|
||||
mem_fun (*this, &StreamView::display_diskstream),
|
||||
t->diskstream()));
|
||||
} else {
|
||||
Gtkmm2ext::UI::instance()->call_slot (mem_fun (*this, &StreamView::undisplay_diskstream));
|
||||
}
|
||||
|
@ -126,6 +126,7 @@ protected:
|
||||
void diskstream_changed ();
|
||||
void layer_regions ();
|
||||
|
||||
virtual void playlist_changed_weak (boost::weak_ptr<ARDOUR::Diskstream>);
|
||||
virtual void playlist_changed (boost::shared_ptr<ARDOUR::Diskstream>);
|
||||
virtual void playlist_modified_weak (boost::weak_ptr<ARDOUR::Diskstream>);
|
||||
virtual void playlist_modified (boost::shared_ptr<ARDOUR::Diskstream>);
|
||||
|
@ -612,7 +612,6 @@ SMFSource::load_model(bool lock, bool force_reload)
|
||||
}
|
||||
|
||||
if (_model && !force_reload) {
|
||||
cerr << _name << " not reloading model " << _model.get() << endl;
|
||||
return;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user