Age | Commit message (Collapse) | Author |
|
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.
|
|
|
|
Paul Davis was responsible for introducing almost all of this.
|
|
This removes the direct dependence on ARDOUR_UI/Gtk_UI for setting
tooltips. Removes inclusion of ardour_ui.h from 16 files.
|
|
This removes the direct dependence on ardour_ui.h from 39 files
|
|
|
|
|
|
chars" dialog.
The dialog would be created twice, once because the user hit enter etc. to indicate they were done editing,
and once because focus left the name text entry, also indicate the end of editing. We now note that we're
already processing the end of a name edit, and do nothing in that case
|
|
|
|
|
|
preparation for further Summary and Number of visible
track count fixes.
* “Only Self”: don’t resize child-views (old default)
* “Total Height”: distribute height equally among
all visible child [automation] lanes
* “Height per Lane”: given height should be applied
to all sub-views.
|
|
|
|
|
|
|
|
|
|
|
|
Thank <deity> for emacs ... space-uncamelcase-word-at-point FTW
|
|
UIConfiguration::color(name).
IMPORTANT: names have not been downcased and spaced yet, so many colors are not found
|
|
|
|
Triggered by resize drag an automation track very quickly upwards to shrink it
to the minimum. Caused by unsigned integer underflow.
|
|
This cleans up a lot of false-positives in static analysis
and also helps compilers to optimize code paths in general.
(tagging the fatal stingstream operator as ‘noreturn’ is
far less trivial)
|
|
|
|
line to the bottom, and keeping it in the same coordinate space as the TAV group
|
|
|
|
|
|
|
|
ARDOUR_UI::config()
|
|
for now: no round corners, gtk-entry + its frame
packing messes things up
|
|
* no horiz space between Piano-Roll & Track
* 1:1 mapping of note's vertical space (no border)
|
|
|
|
* remove some old/unused styles
* fix plugin-ui button (hover color when active)
* consistent style for route buttons
(and related ArdourButton updates)
|
|
This reverts commit 86eb72955c76575b75a2b9e535162ca7e0612bfd.
|
|
allow to resize automation tracks on the indent handle, too
|
|
|
|
|
|
|
|
|
|
|
|
This effectively adds a line after the last track.
|
|
|
|
This reverts commit beb5e3e777b0e92e8dde7ee12c324b32c679ff63.
|
|
the number label can be significantly wider than other
ctrl buttons and does not lend itself or be 'square'.
|
|
now that the separator line is at the top,
offset region-contents y0 by 1px.
|
|
XXX: If we keep this approach, TimeAxisView::show_at()
needs to be fixed.
TimeAxisView::_canvas_display should draw the separator
line at the top, and regions inside moved down 1px.
|
|
the track-header minimum width is defined by
the name-label (IFF the 2nd row fader is not visible,
but the fader is rather small by default and and grows)
track-header width in almost all cases is:
name-label width
+ width of three button (1 char each)
+ max size of all meters (if visible)
+ width of MIDI scroomer (if visible)
+ 2px table cellspacing (per column)
|
|
|
|
|
|
* align height to button-height.
* align width to label text-entry
* increase min width
|
|
|
|
|