mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-10 08:36:32 +01:00
pianoroll: if invisible, defer (expensive) ::set_region() till shown
This commit is contained in:
parent
1fbd7c7124
commit
bdf9dec411
2 changed files with 18 additions and 1 deletions
|
|
@ -639,10 +639,19 @@ Pianoroll::build_canvas ()
|
|||
_canvas->set_name ("MidiCueCanvas");
|
||||
_canvas->add_events (Gdk::POINTER_MOTION_HINT_MASK | Gdk::SCROLL_MASK | Gdk::KEY_PRESS_MASK | Gdk::KEY_RELEASE_MASK);
|
||||
_canvas->set_can_focus ();
|
||||
|
||||
_canvas->signal_show().connect (sigc::mem_fun (*this, &Pianoroll::catch_pending_show_region));
|
||||
_toolbox.pack_start (*_canvas_viewport, true, true);
|
||||
}
|
||||
|
||||
void
|
||||
Pianoroll::catch_pending_show_region ()
|
||||
{
|
||||
if (_visible_pending_region) {
|
||||
set_region (_visible_pending_region);
|
||||
_visible_pending_region.reset ();
|
||||
}
|
||||
}
|
||||
|
||||
bool
|
||||
Pianoroll::bbt_ruler_event (GdkEvent* ev)
|
||||
{
|
||||
|
|
@ -2603,6 +2612,11 @@ Pianoroll::update_solo_display ()
|
|||
void
|
||||
Pianoroll::set_region (std::shared_ptr<ARDOUR::MidiRegion> r)
|
||||
{
|
||||
if (!get_canvas()->is_visible()) {
|
||||
_visible_pending_region = r;
|
||||
return;
|
||||
}
|
||||
|
||||
unset (false);
|
||||
|
||||
if (!r) {
|
||||
|
|
|
|||
|
|
@ -352,4 +352,7 @@ class Pianoroll : public CueEditor
|
|||
|
||||
Gtk::Menu _region_context_menu;
|
||||
void popup_region_context_menu (ArdourCanvas::Item* item, GdkEvent* event);
|
||||
|
||||
std::shared_ptr<ARDOUR::MidiRegion> _visible_pending_region;
|
||||
void catch_pending_show_region ();
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue