summaryrefslogtreecommitdiff
path: root/gtk2_ardour/ghostregion.cc
AgeCommit message (Collapse)Author
2018-07-03use new Canvas::Note object for (sustained) note displayPaul Davis
2017-07-17Purify libcanvas, remove libardour dependencyRobin Gareus
A canvas is just a canvas. Move WaveView into its own library.
2017-01-30speed up midi ghost region updatenick_m
- as MRV removes invalid notes from the GR, we can simply update all events after checking vertical visibility.
2017-01-27MidiGhostRegion micro-optimisation.nick_m
2017-01-04note display performance.nick_m
use boost::unordered_map as a note store for ghost & midi region views. as per otiginal method, only notes within regoin bounds are stored.
2016-12-30another small improvement to MGR::add_note() performance.nick_m
2016-12-30allow the use of static_cast for MGR ghost events (speeds things up a bit).nick_m
2016-12-29more note performance work (dereference less).nick_m
2016-12-29improve MidiGhostRegion::find_event() performance (end is quite common).nick_m
2016-12-24fix leak in MGR _note_groupnick_m
2016-12-24speed up load/quit for sessions containing ~25k events.nick_m
- MGR uses a _note_group to hold events. - MRV & MGR delete canvas notes directly from their note group. - sysex is untested (it uses MRV note group).
2016-12-23shave another line from MidiGhostRegion::clear_events().nick_m
2016-12-23fix thinko in previous commit.nick_m
2016-12-23possibly faster way to clear ghost events.nick_m
2016-12-23slight speed improvement on GhostEvent ctor.nick_m
2016-12-23remove double check for note range in MGR::update_note/hit()nick_m
2016-12-23MidiGhostRegion::update_contents_height() is only about height (again).nick_m
2016-12-23hide ghost events appropriately (e.g. after split).nick_m
2016-12-23only update GhostEvents on visible trackviews.nick_m
- this requires that MidiGhostRegion::update_contents_height() also controls visibility.
2016-12-23midi scrooming performance updates.nick_m
- MGR visibility is handled by update_note/hit() MRV unconditionally updates MGR events - remove MidiGhostRegion::update_range() - rename set_contents_height -> update_contents_height
2016-12-23remove wtfery in MidiGhostRegion ctornick_m
2016-12-22GhostEvent wrangling.nick_m
- update_range() solely looks after visibility. - update_note/hit() positions both x and y using code stolen from update_range() - add update_contents_height() for when we just change the GR height. - find_event() is now used rather than map::find() - use temp canvas items to avoid constructor overhead.
2016-12-22use map::find in the currently unused MidiGhostRegion::find_event()nick_m
- the next one is still often the one we want.
2016-12-22revert b330a8a0cenick_m
2016-12-21improve scroomer performance.nick_m
- MRV will redisplay the model on scroom, so there is no need to update the range as well.
2016-12-21'Rect' is ambiguous (also defined in MacTypes.h)Robin Gareus
2016-12-21use a map to find GhostEvents by a pointer to Note.nick_m
2016-12-11there is no need to do a full set_colors() in MidiGhostRegion ctor.nick_m
2016-11-25midi ghost region fill colour is per event. don't store it. ensure _outline ↵nick_m
is set.
2016-10-16Slightly improve note update performance, fix note resizing for non-4.0 ↵nick_m
meter divisors.
2016-07-10Use Note::set (Rect) for speed improvement when rendering notes.nick_m
2016-07-10Improve midi model redraw performance by caching colours.nick_m
2015-10-22Remove GhostRegion::CatchDeletion signal to reduce session close timesTim Mayberry
Currently when a GhostRegion is deleted by its "parent" RegionView it emits the static GhostRegion::CatchDeletion signal which is connected to the RegionView::remove_ghost method of every RegionView instance. With a static GhostRegion::CatchDeletion signal a particular test session causes 31 Million calls of RegionView::remove_ghost on Session deletion and the session takes 70 seconds to close with a debug build. The lifetime of a ghost region is tied to both the TimeAxisView(TAV) and RegionView(RV) in that when a RegionView is deleted all GhostRegion instances associated with the RegionView should be deleted or when a TimeAxisView is deleted all ghost regions that are contained in the view should be deleted. This means that there needs to be notification between GhostRegion and both classes. Instead of using a signal for this as we know there are only two listeners and GhostRegion already holds a reference to the TimeAxisView, also take a reference to the parent RegionView in the GhostRegion constructor and use it to notify the RegionView when GhostRegion destructor is called so it can drop any references it holds. Using a direct function call in the GhostRegion destructor to notify the TimeAxisView and RegionView "parents" brings the unload/close time down for the test session from 70 seconds to 4.5 seconds. The GhostRegion also references canvas items that are added to the TimeAxisView canvas group or at least a canvas group that it manages. So when the TimeAxisView is destroyed and the canvas group that is the parent of those items is destroyed, the GhostRegion's canvas items will also be deleted/destroyed by the parent canvas item/group. This means the GhostRegions must be destroyed when the TimeAxisView they are contained in is destroyed or there will be dangling references to canvas items that have already been deleted and trying to delete them again will be bad.
2015-09-16Move UIConfiguration Singleton into UIConfiguration headerTim Mayberry
This removes the direct dependence on ardour_ui.h from 39 files
2015-02-11remove use of TimeRectanglePaul Davis
2014-12-28Automation ghost notes for percussive hits.David Robillard
2014-12-16Various color tweaks.David Robillard
This commit changes some color names, nuke your theme. This isn't quite ideal yet, but takes some steps towards where I think things should go aesthetically: Make automation tracks/regions colors correspond to their parent's type. Make selected MIDI notes outlined in red like most everything else, and scrap separate min/mid/max fill colors for selected MIDI notes. Color automation ghost MIDI notes based on original note color. Try to kill 90's looking brightish gray gradients in general.
2014-12-15next modifierPaul Davis
2014-12-14fix up requested color names everywhere.Paul Davis
Thank <deity> for emacs ... space-uncamelcase-word-at-point FTW
2014-12-14initial pass to replace all UIConfiguration::get_XXXXXX() calls with ↵Paul Davis
UIConfiguration::color(name). IMPORTANT: names have not been downcased and spaced yet, so many colors are not found
2014-11-07fix up dimensions of ghostregion colored rectPaul Davis
2014-11-03use ArdourCanvas::TimeRectangle for regions, notes, markersPaul Davis
2014-10-21remove "canvasvar_" from all functions related to obtaining values from ↵Paul Davis
ARDOUR_UI::config()
2014-10-21fix midi-ghost region y-scaleRobin Gareus
2014-09-08Vertically align Midi Notes, Piano Roll & Canvas Line GridRobin Gareus
2014-09-04Revert "cont'd work on automation-track headers (amend ba53af1c5)"Robin Gareus
This reverts commit beb5e3e777b0e92e8dde7ee12c324b32c679ff63.
2014-09-03cont'd work on automation-track headers (amend ba53af1c5)Robin Gareus
now that the separator line is at the top, offset region-contents y0 by 1px.
2014-06-22more canvas refactoring.Paul Davis
Remove Canvas::Layout, use Canvas::Container for the same purpose, move child-rendering into Item::render_children() so that it could theoretically be used by any derived type.
2014-06-21use newly factored canvas in gtk2_ardourPaul Davis
2014-03-11fix error in height computation of MIDI region views (FUDGE!) use ↵Paul Davis
Rectangle::set_outline_all() and avoid the removed integer version of ::set_outline_what()