View Issue Details

IDProjectCategoryView StatusLast Update
0003390ardourbugspublic2012-06-14 10:45
Reportermikkl Assigned To 
PrioritynormalSeverityminorReproducibilityalways
Status feedbackResolutionopen 
Product VersionSVN/2.0-ongoing 
Summary0003390: gui slow down when zooming in repeatedly
DescriptionAfter repeatedly zooming in (zoom in until highest zoom level is reached. then zoom out and zoom in again some more times) dragging the timeline scrollbar gets more and more choppy and unresponsive, a little lag is also introduced. The issue can be reproduced as follows:
1. Open a new session.
2. Zoom in to highest zoom level (horizontally)
3. Zoom back out (e.g. Zoom to session)
4. Repeat steps 2 and 3 a few (0000009:0000005) more times until a effect is visible.

Additional InformationThe issue can be reproduced with a clean new session without any tracks. Zooming out, zooming in vertically or dragging around the timeline scrollbar doesn't cause this behaviour. Also, vertical zooming or zooming in general is not affected by the issue, it's only just the dragging of the timeline bar that gets slow.
When only zooming in ONE step and then zooming out again repeatedly no negative effect can be noticed.
For normal behaviour, Ardour has to be restarted. Loading another session doesn't fix it.
TagsNo tags attached.

Activities

mikkl

2010-08-09 20:56

reporter   ~0008761

Update:
When disabling measures (View -> uncheck "Show measures"), the issue does not appear.
However, when a slowdown has become effective, disabling measures doesn't fix it.

cth103

2010-08-09 22:31

administrator   ~0008764

Good catch! It looks like there is a problem with the number of canvas lines used for the measures ever-increasing... I'll look into this further.

cth103

2010-08-09 22:50

administrator   ~0008765

Are you happy to build Ardour from source? If so, please could you try the attached patch. I can't reproduce the slowdown here, but it may just possibly fix it.

2010-08-09 22:50

 

3390.1.patch (599 bytes)   
diff --git a/gtk2_ardour/tempo_lines.cc b/gtk2_ardour/tempo_lines.cc
index e8bd034..04e584c 100644
--- a/gtk2_ardour/tempo_lines.cc
+++ b/gtk2_ardour/tempo_lines.cc
@@ -213,7 +213,7 @@ TempoLines::draw (ARDOUR::TempoMap::BBTPointList& points, double frames_per_unit
 				}
 
 				// Create a new line
-			} else if (_lines.size() < needed || _lines.size() < MAX_CACHED_LINES) {
+			} else if (_lines.size() < needed && _lines.size() < MAX_CACHED_LINES) {
 				//cout << "*** CREATING LINE" << endl;
 				assert(_lines.find(xpos) == _lines.end());
 				line = new ArdourCanvas::SimpleLine (*_group);
3390.1.patch (599 bytes)   

mikkl

2010-08-09 23:36

reporter   ~0008766

Tried your patch but unfortunately the problem still exists.

2010-08-09 23:49

 

3390.2.patch (1,336 bytes)   
diff --git a/gtk2_ardour/editor_tempodisplay.cc b/gtk2_ardour/editor_tempodisplay.cc
index 92efed3..d214bc0 100644
--- a/gtk2_ardour/editor_tempodisplay.cc
+++ b/gtk2_ardour/editor_tempodisplay.cc
@@ -200,6 +200,8 @@ Editor::draw_measures ()
 	}
 
 	tempo_lines->draw(*current_bbt_points, frames_per_unit);
+
+	cout << "After draw_measures: " << tempo_lines->_lines.size() << "\n";
 }
 
 void
diff --git a/gtk2_ardour/tempo_lines.cc b/gtk2_ardour/tempo_lines.cc
index e8bd034..04e584c 100644
--- a/gtk2_ardour/tempo_lines.cc
+++ b/gtk2_ardour/tempo_lines.cc
@@ -213,7 +213,7 @@ TempoLines::draw (ARDOUR::TempoMap::BBTPointList& points, double frames_per_unit
 				}
 
 				// Create a new line
-			} else if (_lines.size() < needed || _lines.size() < MAX_CACHED_LINES) {
+			} else if (_lines.size() < needed && _lines.size() < MAX_CACHED_LINES) {
 				//cout << "*** CREATING LINE" << endl;
 				assert(_lines.find(xpos) == _lines.end());
 				line = new ArdourCanvas::SimpleLine (*_group);
diff --git a/gtk2_ardour/tempo_lines.h b/gtk2_ardour/tempo_lines.h
index 843d94a..6897608 100644
--- a/gtk2_ardour/tempo_lines.h
+++ b/gtk2_ardour/tempo_lines.h
@@ -44,7 +44,7 @@ public:
 	void show();
 	void hide();
 
-private:
+//private:
 #ifdef GTKOSX
 	typedef std::map<double, ArdourCanvas::SimpleLine*, std::less<double> > Lines;
 #else
3390.2.patch (1,336 bytes)   

cth103

2010-08-09 23:49

administrator   ~0008767

Could you try the .2.patch attached, trigger the bug and then attach the console output to this bug?

mikkl

2010-08-10 17:42

reporter   ~0008796

Ok, what i did was the zooming in and out, which can be noticed by the numbers going up and then they decrease with higher zoom levels till 1. Scrolling can be seen when the numbers are the same, but i didn't notice any difference of the numbers when it is slow or normal.

2010-08-10 17:42

 

ardour.out (5,456 bytes)

confusion_music

2010-08-20 19:44

reporter   ~0008869

I can confirm that I have exactly the same behaviour and unchecking the "show measures" option does indeed prevent the slow down occurring, but not fix it when slow down happens.

I'm using 2.8.2 on Ubuntu Karmic 64bit. I'd really love to get this bug resolved so please advise if there are any steps I can take to help debug. I'm not particularly experienced with compiling from source, but very willing to learn.

mikkl

2010-08-24 20:20

reporter   ~0008898

Hmm, i have tested some more and now I have 2 amd64 boxes with different hardware that suffer from the slowdown and one i686 box that doesn't. Maybe there's a relation?
Also I noticed that there's one zoom level where there's a space at the left of the editor window which has a width of ca. 20% of the total width of the editor window where no measures are drawn. But this could possibly be another problem...

paul

2011-03-31 14:37

administrator   ~0010449

@mikkl: that second point is another problem, indeed.

it would be really good if someone could follow up on cth103's request for console output for his patch ...

2011-03-31 16:15

 

a2-patch2.txt (11,765 bytes)   
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 94
After draw_measures: 58
After draw_measures: 38
After draw_measures: 25
After draw_measures: 16
After draw_measures: 12
After draw_measures: 9
After draw_measures: 7
After draw_measures: 6
After draw_measures: 5
After draw_measures: 4
After draw_measures: 4
After draw_measures: 4
After draw_measures: 4
After draw_measures: 4
After draw_measures: 4
After draw_measures: 4
After draw_measures: 4
After draw_measures: 4
After draw_measures: 4
After draw_measures: 4
After draw_measures: 1
After draw_measures: 95
After draw_measures: 60
After draw_measures: 128
After draw_measures: 93
After draw_measures: 58
After draw_measures: 38
After draw_measures: 24
After draw_measures: 19
After draw_measures: 12
After draw_measures: 10
After draw_measures: 7
After draw_measures: 6
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 1
After draw_measures: 95
After draw_measures: 60
After draw_measures: 128
After draw_measures: 93
After draw_measures: 58
After draw_measures: 38
After draw_measures: 24
After draw_measures: 19
After draw_measures: 12
After draw_measures: 10
After draw_measures: 7
After draw_measures: 6
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 1
After draw_measures: 95
After draw_measures: 60
After draw_measures: 128
After draw_measures: 93
After draw_measures: 58
After draw_measures: 38
After draw_measures: 24
After draw_measures: 19
After draw_measures: 12
After draw_measures: 10
After draw_measures: 7
After draw_measures: 6
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 1
After draw_measures: 95
After draw_measures: 60
After draw_measures: 128
After draw_measures: 93
After draw_measures: 58
After draw_measures: 38
After draw_measures: 24
After draw_measures: 19
After draw_measures: 12
After draw_measures: 10
After draw_measures: 7
After draw_measures: 6
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 1
After draw_measures: 95
After draw_measures: 60
After draw_measures: 128
After draw_measures: 93
After draw_measures: 58
After draw_measures: 38
After draw_measures: 24
After draw_measures: 19
After draw_measures: 12
After draw_measures: 10
After draw_measures: 7
After draw_measures: 6
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 1
After draw_measures: 95
After draw_measures: 60
After draw_measures: 128
After draw_measures: 93
After draw_measures: 58
After draw_measures: 38
After draw_measures: 24
After draw_measures: 19
After draw_measures: 12
After draw_measures: 10
After draw_measures: 7
After draw_measures: 6
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 1
After draw_measures: 95
After draw_measures: 60
After draw_measures: 128
After draw_measures: 93
After draw_measures: 58
After draw_measures: 38
After draw_measures: 24
After draw_measures: 19
After draw_measures: 12
After draw_measures: 10
After draw_measures: 7
After draw_measures: 6
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 5
After draw_measures: 6
After draw_measures: 6
After draw_measures: 6
After draw_measures: 6
After draw_measures: 6
After draw_measures: 6
After draw_measures: 6
After draw_measures: 6
After draw_measures: 6
After draw_measures: 3
After draw_measures: 3
After draw_measures: 3
After draw_measures: 3
After draw_measures: 3
After draw_measures: 3
After draw_measures: 4
After draw_measures: 6
After draw_measures: 6
After draw_measures: 8
After draw_measures: 11
After draw_measures: 18
After draw_measures: 18
After draw_measures: 22
After draw_measures: 22
After draw_measures: 22
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 26
After draw_measures: 40
After draw_measures: 63
After draw_measures: 102
After draw_measures: 128
After draw_measures: 67
After draw_measures: 128
After draw_measures: 67
After draw_measures: 1
After draw_measures: 1
After draw_measures: 1
After draw_measures: 1
After draw_measures: 1
After draw_measures: 67
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 67
After draw_measures: 67
After draw_measures: 76
After draw_measures: 95
After draw_measures: 109
After draw_measures: 114
After draw_measures: 122
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 128
After draw_measures: 103
After draw_measures: 65
After draw_measures: 42
After draw_measures: 29
After draw_measures: 19
After draw_measures: 19
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 25
After draw_measures: 26
After draw_measures: 40
After draw_measures: 63
After draw_measures: 102
After draw_measures: 128
After draw_measures: 67
After draw_measures: 1
After draw_measures: 67
After draw_measures: 128
After draw_measures: 102
After draw_measures: 128
a2-patch2.txt (11,765 bytes)   

realhangman

2011-03-31 16:23

reporter   ~0010450

Hi,

I've uploaded the console ouput of a session running with the 2nd patch. I can't say I'm really suffering from this bug, it's only subtly but it's there.

@mikki & @paul: this second problem is not there without the patch, so it has to do with it somehow. It appears in the view where you see a bit more than 1 hour.
svn is 7832

Issue History

Date Modified Username Field Change
2010-08-09 20:53 mikkl New Issue
2010-08-09 20:56 mikkl Note Added: 0008761
2010-08-09 22:31 cth103 Note Added: 0008764
2010-08-09 22:50 cth103 Note Added: 0008765
2010-08-09 22:50 cth103 Status new => feedback
2010-08-09 22:50 cth103 File Added: 3390.1.patch
2010-08-09 23:36 mikkl Note Added: 0008766
2010-08-09 23:49 cth103 File Added: 3390.2.patch
2010-08-09 23:49 cth103 Note Added: 0008767
2010-08-10 17:42 mikkl Note Added: 0008796
2010-08-10 17:42 mikkl File Added: ardour.out
2010-08-20 19:44 confusion_music Note Added: 0008869
2010-08-24 20:20 mikkl Note Added: 0008898
2011-03-31 14:37 paul Note Added: 0010449
2011-03-31 16:15 realhangman File Added: a2-patch2.txt
2011-03-31 16:23 realhangman Note Added: 0010450