Drive VU meters (and other widgets?) off of the waveform timer.
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Mixxx |
Confirmed
|
Low
|
Unassigned |
Bug Description
We do have a bunch of rate limiting code in the engine whose end goal is to limit unnecessary repainting of the GUI:
* VU meter COs are updated at (44.1khz hard-coded) 20fps.
* Playposition and key updates at 10fps
* BPM updates happen at 2.5fps
What if these all trigger GUI repaints at possibly inopportune times (right as a VSync render or swap is going to happen)? They are limited to one thread so this would inherently make the OpenGL rendering wait. If we start rendering GL widgets from the VSync thread then maybe the two would not conflict.
I think a CO update from the engine should only mark a widget as dirty, not update() it. We could have these widgets listen to waveform update ticks from the WaveformWidgetF
We could remove the rate-limiting in the engine if we switched to that (though that would dramatically increase the number of Qt postEvent mutex locks done from the engine so maybe we still want that after all).
Changed in mixxx: | |
milestone: | none → 1.12.0 |
Changed in mixxx: | |
status: | New → Confirmed |
Changed in mixxx: | |
milestone: | 2.1.0 → none |
tags: |
added: gui removed: vumeter |
Kicking out of 1.12.0 unless somebody would like to do the measurements necessary to test if this is a good change performance-wise.