13
0

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:
David Robillard 2009-02-16 05:13:05 +00:00
parent fb254fb2fc
commit 458c588e2c
11 changed files with 98 additions and 75 deletions

View File

@ -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);
}
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

View File

@ -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>);

View File

@ -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 ()
{

View File

@ -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)
, _recursion_counter(0)
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;

View File

@ -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;

View File

@ -166,8 +166,6 @@ MidiScroomer::on_size_request(Gtk::Requisition* r)
{
r->width = 12;
r->height = 100;
//r->width = 32;
//r->height = 512;
}
void

View File

@ -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 ()
}
}

View File

@ -350,7 +350,6 @@ RouteTimeAxisView::set_edit_group_from_menu (RouteGroup *eg)
void
RouteTimeAxisView::playlist_changed ()
{
label_view ();

View File

@ -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));
}

View File

@ -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>);

View File

@ -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;
}