Invalidate line cache when zoomed out to invisible line levels.
Reduce line cache size to 128. git-svn-id: svn://localhost/ardour2/branches/3.0@3819 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
6b50ba341d
commit
3b424fd8b5
@ -269,7 +269,7 @@ LineSet::line_at(double coord)
|
||||
if (cached_pos != lines.end()) {
|
||||
if (coord < cached_pos->coord) {
|
||||
/* backward search */
|
||||
while(--cached_pos != lines.end()) {
|
||||
while (--cached_pos != lines.end()) {
|
||||
if (cached_pos->coord <= coord) {
|
||||
if (cached_pos->coord + cached_pos->width < coord) {
|
||||
/* coord is between two lines */
|
||||
@ -281,7 +281,7 @@ LineSet::line_at(double coord)
|
||||
}
|
||||
} else {
|
||||
/* forward search */
|
||||
while(cached_pos != lines.end()) {
|
||||
while (cached_pos != lines.end()) {
|
||||
if (cached_pos->coord > coord) {
|
||||
/* we searched past the line that we want, so now see
|
||||
if the previous line includes the coordinate */
|
||||
|
@ -24,7 +24,7 @@
|
||||
|
||||
using namespace std;
|
||||
|
||||
#define MAX_CACHED_LINES 512
|
||||
#define MAX_CACHED_LINES 128
|
||||
|
||||
TempoLines::TempoLines(ArdourCanvas::Canvas& canvas, ArdourCanvas::Group* group)
|
||||
: _canvas(canvas)
|
||||
@ -40,7 +40,7 @@ TempoLines::tempo_map_changed()
|
||||
_clean_left = DBL_MAX;
|
||||
_clean_right = 0.0;
|
||||
|
||||
size_t d = 0;
|
||||
size_t d = 1;
|
||||
// TODO: Dirty/slow, but 'needed' for zoom :(
|
||||
for (Lines::iterator i = _lines.begin(); i != _lines.end(); ++d) {
|
||||
Lines::iterator next = i;
|
||||
@ -98,6 +98,7 @@ TempoLines::draw (ARDOUR::TempoMap::BBTPointList& points, double frames_per_unit
|
||||
|
||||
if (beat_density > 4.0f) {
|
||||
/* if the lines are too close together, they become useless */
|
||||
tempo_map_changed();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -30,6 +30,8 @@ class Parameter;
|
||||
*/
|
||||
class TypeMap {
|
||||
public:
|
||||
virtual ~TypeMap() {}
|
||||
|
||||
/** Return true iff the type is a MIDI event.
|
||||
* The contents of the event will be used for specific ID
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user