Add rendergraph capabilities for full support on QML - #15711
Conversation
af5868a to
567bb64
Compare
c92c429 to
78bcaa3
Compare
|
Please fix the Clazy warnings |
… store selected options
78bcaa3 to
01eaf3e
Compare
|
If you are referring to the one in Either we keep it like this or I can remove the macro but this will yield a lot of repetitive boilerplate code. |
There was a problem hiding this comment.
Pull request overview
This PR expands Mixxx’s QML waveform rendering support by wiring rendergraph-based waveform renderers into the QML scene graph pipeline, adding QML-exposed waveform configuration, and improving rendergraph node invalidation/updates for waveform marks and digits.
Changes:
- Moves/extends waveform renderer capability reporting and option handling so QML can select supported renderer options (and pass options into renderer factories).
- Adds QML
WaveformDisplaysupport for static track/position-driven rendering (in addition to group/player-driven rendering) plus anoptionsproperty. - Improves rendergraph update behavior for mark/digits nodes and refactors some waveform renderer initialization behavior.
Reviewed changes
Copilot reviewed 21 out of 21 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| src/waveform/widgets/allshader/waveformwidget.h | Forward-decl rendergraph types; inlines supportedOptions() for QML access. |
| src/waveform/widgets/allshader/waveformwidget.cpp | Moves rendergraph includes to the .cpp; removes now-inlined supportedOptions(). |
| src/waveform/visualplayposition.h | Adds key() accessor for identifying VisualPlayPosition instances. |
| src/waveform/renderers/waveformwidgetrenderer.h | Adjusts group vs. VisualPlayPosition switching; re-inits on changes. |
| src/waveform/renderers/waveformwidgetrenderer.cpp | Resets control proxies when no group; adds pre-render early return for missing track/samples source. |
| src/waveform/renderers/waveformrenderersignalbase.h | Adds virtual setOptions() hook (no-op default). |
| src/waveform/renderers/waveformrenderersignalbase.cpp | Tweaks EQ-enabled gating logic when EQ enable control is absent. |
| src/waveform/renderers/waveformrendererabstract.h | Adds cached last play marker position for update optimizations. |
| src/waveform/renderers/waveformrendererabstract.cpp | Initializes cached last play marker position. |
| src/waveform/renderers/allshader/waveformrendermark.h | Adds default “next mark position” override support. |
| src/waveform/renderers/allshader/waveformrendermark.cpp | Uses default next-mark sentinel; optimizes play marker geometry updates; improves until-mark time fallback. |
| src/waveform/renderers/allshader/digitsrenderer.cpp | Marks geometry/material dirty after digits updates/clears to ensure SG refresh. |
| src/qml/qmlwaveformrenderer.h | Passes options into factory create(); exposes supported options constants per renderer type. |
| src/qml/qmlwaveformrenderer.cpp | Implements new create() signatures; adds (currently stubbed) high-detail/textured selection path. |
| src/qml/qmlwaveformoverview.h | Adjusts signal signatures for Qt < 6.9 vs >= 6.9 compatibility. |
| src/qml/qmlwaveformdisplay.h | Adds QML properties for static track/position and renderer options; adds enums for waveform type/options. |
| src/qml/qmlwaveformdisplay.cpp | Implements static track/position handling; passes options to renderers; rebuilds scene graph on option changes. |
| src/qml/qmltrackproxy.h | Declares metatype for QmlTrackProxy* for QML/Qt meta-object usage. |
| src/qml/qmlconfigproxy.h | Adds waveform-related QML-facing config properties (type/options/visual gains/etc.). |
| src/qml/qmlconfigproxy.cpp | Implements waveform config property persistence via macros + custom waveformOptions setter. |
| res/qml/WaveformDisplay.qml | Updates QML to use new Config properties instead of invokable methods. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
Addressed Copilot's comment when relevant. What do you think about the clazy situation @JoergAtGithub ? |
|
clazy is pass, pre-commit is what is failing here! |
|
Ah I hadn't noticed - thanks |
|
The Clazy warnings are fixed in main now. Please rebase and squash the fixup! |
912bb2b to
1be6ec7
Compare
…nterface-waveform-cpp
|
Done @JoergAtGithub ! |
Depends on #14887