Drive VU meters (and other widgets?) off of the waveform timer.

Bug #1302603 reported by RJ Skerry-Ryan
10
This bug affects 2 people
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 WaveformWidgetFactory and then choose to repaint themselves then if they are dirty.

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).

RJ Skerry-Ryan (rryan)
Changed in mixxx:
milestone: none → 1.12.0
Changed in mixxx:
status: New → Confirmed
Revision history for this message
RJ Skerry-Ryan (rryan) wrote :

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.

Changed in mixxx:
importance: Undecided → Low
tags: added: performance vumeter
Changed in mixxx:
milestone: 1.12.0 → 1.13.0
Be (be.ing)
Changed in mixxx:
milestone: 2.1.0 → none
tags: added: gui
removed: vumeter
Revision history for this message
Swiftb0y (swiftb0y) wrote :

Mixxx now uses GitHub for bug tracking. This bug has been migrated to:
https://github.com/mixxxdj/mixxx/issues/7403

lock status: Metadata changes locked and limited to project staff
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.