13
0

Crapola - this is an experimental performance hack that must be reverted.

This commit is contained in:
nick_m 2016-04-13 05:38:31 +10:00
parent c6d9d8193b
commit 4f7a4cd233
9 changed files with 88 additions and 73 deletions

View File

@ -231,23 +231,24 @@ AudioRegionView::init (bool wfd)
}
const string line_name = _region->name() + ":gain";
gain_line.reset (new AudioRegionGainLine (line_name, *this, *group, audio_region()->envelope()));
update_envelope_visibility ();
gain_line->reset ();
set_height (trackview.current_height()); // XXX not correct for Layered mode, but set_height() will fix later.
/* streamview will call set_height() */
//set_height (trackview.current_height()); // XXX not correct for Layered mode, but set_height() will fix later.
region_muted ();
region_sync_changed ();
region_resized (ARDOUR::bounds_change);
/* region_resized sets ghost region duration */
for (vector<GhostRegion*>::iterator i = ghosts.begin(); i != ghosts.end(); ++i) {
(*i)->set_duration (_region->length() / samples_per_pixel);
}
/* region_locked is a synonym for region_renamed () which is called in region_muted() above */
//region_locked ();
region_locked ();
envelope_active_changed ();
fade_in_active_changed ();
fade_out_active_changed ();
@ -274,15 +275,14 @@ AudioRegionView::init (bool wfd)
setup_waveform_visibility ();
pending_peak_data->raise_to_top ();
/* reset_width_dependent_items() does this:
if (frame_handle_start) {
frame_handle_start->raise_to_top ();
}
if (frame_handle_end) {
frame_handle_end->raise_to_top ();
}
*/
/* XXX sync mark drag? */
}
@ -449,6 +449,10 @@ AudioRegionView::region_resized (const PropertyChange& what_changed)
void
AudioRegionView::reset_width_dependent_items (double pixel_width)
{
if (pixel_width == _width) {
return;
}
RegionView::reset_width_dependent_items(pixel_width);
assert(_pixel_width == pixel_width);
@ -530,6 +534,10 @@ AudioRegionView::setup_fade_handle_positions()
void
AudioRegionView::set_height (gdouble height)
{
if (height == _height) {
return;
}
RegionView::set_height (height);
pending_peak_data->set_y1 (height);

View File

@ -271,12 +271,12 @@ MidiRegionView::init (bool wfd)
RegionView::init (false);
set_height (trackview.current_height());
//set_height (trackview.current_height());
region_muted ();
region_sync_changed ();
region_resized (ARDOUR::bounds_change);
region_locked ();
//region_locked ();
set_colors ();

View File

@ -178,13 +178,14 @@ RegionView::init (bool wfd)
_enable_display = true;
}
set_height (trackview.current_height());
/* derived class calls set_height () including RegionView::set_height() in ::init() */
//set_height (trackview.current_height());
_region->PropertyChanged.connect (*this, invalidator (*this), boost::bind (&RegionView::region_changed, this, _1), gui_context());
set_colors ();
UIConfiguration::instance().ColorsChanged.connect (sigc::mem_fun (*this, &RegionView::color_handler));
/* derived class calls set_colors () including RegionView::set_colors() in ::init() */
//set_colors ();
//UIConfiguration::instance().ColorsChanged.connect (sigc::mem_fun (*this, &RegionView::color_handler));
/* XXX sync mark drag? */
}
@ -588,7 +589,6 @@ RegionView::region_renamed ()
set_item_name (str, this);
set_name_text (str);
reset_width_dependent_items (_pixel_width);
}
void
@ -775,39 +775,25 @@ RegionView::update_coverage_frames (LayerDisplay d)
/* the color that will be used to show parts of regions that will not be heard */
uint32_t const non_playing_color = UIConfiguration::instance().color_mod ("covered region", "covered region base");
while (t < end) {
t = pl->find_next_region_boundary (t, 1);
t++;
/* is this region is on top at time t? */
bool const new_me = (pl->top_unmuted_region_at (t) == _region);
/* is this region is on top at time t? */
bool const new_me = (pl->top_unmuted_region_at (t) == _region);
/* finish off any old rect, if required */
if (cr && me != new_me) {
cr->set_x1 (trackview.editor().sample_to_pixel (t - position));
/* start off any new rect, if required */
if (cr == 0 || me != new_me) {
cr = new ArdourCanvas::Rectangle (group);
_coverage_frames.push_back (cr);
cr->set_x0 (trackview.editor().sample_to_pixel (t - position));
cr->set_y0 (1);
cr->set_y1 (_height + 1);
cr->set_outline (false);
cr->set_ignore_events (true);
if (new_me) {
cr->set_fill_color (UINT_RGBA_CHANGE_A (non_playing_color, 0));
} else {
cr->set_fill_color (non_playing_color);
}
/* start off any new rect, if required */
if (cr == 0 || me != new_me) {
cr = new ArdourCanvas::Rectangle (group);
_coverage_frames.push_back (cr);
cr->set_x0 (trackview.editor().sample_to_pixel (t - position));
cr->set_y0 (1);
cr->set_y1 (_height + 1);
cr->set_outline (false);
cr->set_ignore_events (true);
if (new_me) {
cr->set_fill_color (UINT_RGBA_CHANGE_A (non_playing_color, 0));
} else {
cr->set_fill_color (non_playing_color);
}
}
t = pl->find_next_region_boundary (t, 1);
if (t < 0) {
break;
}
me = new_me;
}
if (cr) {

View File

@ -119,7 +119,7 @@ StreamView::set_height (double h)
return -1;
}
if (canvas_rect->y1() == h) {
if (height == h) {
return 0;
}
@ -139,6 +139,10 @@ StreamView::set_samples_per_pixel (double fpp)
return -1;
}
if (fpp == _samples_per_pixel) {
return 0;
}
_samples_per_pixel = fpp;
for (i = region_views.begin(); i != region_views.end(); ++i) {
@ -292,7 +296,8 @@ StreamView::playlist_layered (boost::weak_ptr<Track> wtr)
if (_layer_display == Stacked) {
update_contents_height ();
update_coverage_frames ();
/* tricky. playlist_changed() does this as well, and its really inefficient. */
//update_coverage_frames ();
} else {
/* layering has probably been modified. reflect this in the canvas. */
layer_regions();
@ -311,12 +316,12 @@ StreamView::playlist_switched (boost::weak_ptr<Track> wtr)
/* disconnect from old playlist */
playlist_connections.drop_connections ();
undisplay_track ();
//undisplay_track ();
/* draw it */
tr->playlist()->freeze();
redisplay_track ();
tr->playlist()->thaw();
/* update layers count and the y positions and heights of our regions */
_layers = tr->playlist()->top_layer() + 1;
update_contents_height ();

View File

@ -160,7 +160,6 @@ TimeAxisViewItem::init (ArdourCanvas::Item* parent, double fpp, uint32_t base_co
{
group = new ArdourCanvas::Container (parent);
CANVAS_DEBUG_NAME (group, string_compose ("TAVI group for %1", get_item_name()));
group->Event.connect (sigc::mem_fun (*this, &TimeAxisViewItem::canvas_group_event));
fill_color = base_color;
fill_color_name = "time axis view item base";
@ -247,13 +246,14 @@ TimeAxisViewItem::init (ArdourCanvas::Item* parent, double fpp, uint32_t base_co
frame_handle_start = frame_handle_end = 0;
}
set_color (base_color);
//set_color (base_color);
set_duration (item_duration, this);
set_position (start, this);
//set_duration (item_duration, this);
//set_position (start, this);
Config->ParameterChanged.connect (*this, invalidator (*this), boost::bind (&TimeAxisViewItem::parameter_changed, this, _1), gui_context ());
UIConfiguration::instance().ParameterChanged.connect (sigc::mem_fun (*this, &TimeAxisViewItem::parameter_changed));
group->Event.connect (sigc::mem_fun (*this, &TimeAxisViewItem::canvas_group_event));
//Config->ParameterChanged.connect (*this, invalidator (*this), boost::bind (&TimeAxisViewItem::parameter_changed, this, _1), gui_context ());
//UIConfiguration::instance().ParameterChanged.connect (sigc::mem_fun (*this, &TimeAxisViewItem::parameter_changed));
}
TimeAxisViewItem::~TimeAxisViewItem()
@ -532,7 +532,7 @@ TimeAxisViewItem::set_name_text(const string& new_name)
name_text_width = pixel_width (new_name, NAME_FONT) + 2;
name_text->set (new_name);
manage_name_text ();
manage_name_highlight ();
}
/**
@ -569,8 +569,6 @@ TimeAxisViewItem::set_height (double height)
selection_frame->set (frame->get().shrink (1.0));
}
}
set_colors ();
}
void

View File

@ -235,9 +235,9 @@ class TimeAxisViewItem : public Selectable, public PBD::ScopedConnectionList
bool _recregion;
bool _automation; ///< true if this is an automation region view
bool _dragging;
double _width;
private:
double _width;
void parameter_changed (std::string);
void manage_name_highlight ();

View File

@ -187,7 +187,7 @@ TimeInfoBox::region_property_change (boost::shared_ptr<ARDOUR::Region> /* r */,
* RegionView (not Region itself).
*/
selection_changed ();
//selection_changed ();
}
bool

View File

@ -1822,6 +1822,7 @@ Playlist::regions_at (framepos_t frame)
for (RegionList::iterator i = rlist->begin(); i != rlist->end(); ) {
RegionList::iterator tmp = i;
++tmp;
if ((*i)->muted()) {
@ -2047,23 +2048,25 @@ Playlist::find_next_region (framepos_t frame, RegionPoint point, int dir)
boost::shared_ptr<Region> r = (*i);
frameoffset_t distance;
const framepos_t first_frame = r->first_frame();
const framepos_t last_frame = r->last_frame();
if (r->first_frame() > frame) {
if (first_frame > frame) {
distance = r->first_frame() - frame;
distance = first_frame - frame;
if (distance < closest) {
ret = r->first_frame();
ret = first_frame;
closest = distance;
}
}
if (r->last_frame () > frame) {
if (last_frame > frame) {
distance = r->last_frame () - frame;
distance = last_frame - frame;
if (distance < closest) {
ret = r->last_frame ();
ret = last_frame;
closest = distance;
}
}
@ -2075,23 +2078,25 @@ Playlist::find_next_region (framepos_t frame, RegionPoint point, int dir)
boost::shared_ptr<Region> r = (*i);
frameoffset_t distance;
const framepos_t first_frame = r->first_frame();
const framepos_t last_frame = r->last_frame();
if (r->last_frame() < frame) {
if (last_frame < frame) {
distance = frame - r->last_frame();
distance = frame - last_frame;
if (distance < closest) {
ret = r->last_frame();
ret = last_frame;
closest = distance;
}
}
if (r->first_frame() < frame) {
if (first_frame < frame) {
distance = frame - r->first_frame();
distance = frame - first_frame;
if (distance < closest) {
ret = r->first_frame();
ret = first_frame;
closest = distance;
}
}
@ -2899,6 +2904,7 @@ Playlist::update_after_tempo_map_change ()
}
thaw ();
notify_contents_changed();
}
void

View File

@ -70,6 +70,10 @@ Text::~Text ()
void
Text::set (string const & text)
{
if (text == _text) {
return;
}
begin_change ();
_text = text;
@ -237,6 +241,10 @@ Text::compute_bounding_box () const
void
Text::set_alignment (Pango::Alignment alignment)
{
if (alignment == _alignment) {
return;
}
begin_change ();
_alignment = alignment;
@ -261,6 +269,10 @@ Text::set_font_description (Pango::FontDescription font_description)
void
Text::set_color (Color color)
{
if (color == _color) {
return;
}
begin_change ();
_color = color;