-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Scrolling waveform using SceneGraph in QML #13470
Scrolling waveform using SceneGraph in QML #13470
Conversation
This PR is marked as stale because it has been open 90 days with no activity. |
Note that this is still being actively worked on with @m0dB and myself! |
d16b1dc
to
23f331f
Compare
fe570b1
to
3d9deed
Compare
317256a
to
8c71da3
Compare
I see this when trying to build it:
|
8c71da3
to
a59fe88
Compare
Unfortunately, there are merge conflicts now. |
FYI, the PR is still broken :(
|
d424088
to
141a5e2
Compare
@Holzhaus this should now be ready for some very early testing! |
@m0dB @acolombier I wonder if a clearer seperation between QML and QtQuick would be of benefit here, as we could use a QQuickWindow instead of the QOpenGLWindow in the existing QWidget GUI: https://doc.qt.io/qt-6/qtquick-embeddedinwidgets-example.html |
Hi, configuring works now. I'm getting the following build error though: [ 25%] Building CXX object CMakeFiles/mixxx-qml-lib.dir/src/qml/qmlstemsmodel.cpp.o
In file included from src/rendergraph/scenegraph/../common/rendergraph/assert.h:4,
from src/rendergraph/scenegraph/../common/rendergraph/material.h:6,
from src/rendergraph/scenegraph/../common/rendergraph/geometrynode.h:5,
from src/waveform/renderers/allshader/waveformrendermark.h:5,
from src/waveform/renderers/allshader/waveformrendermark.cpp:1:
src/waveform/renderers/allshader/waveformrendermark.cpp: In member function ‘void {anonymous}::WaveformMarkNode::update(float, float, float)’:
src/waveform/renderers/allshader/waveformrendermark.cpp:50:35: error: ‘RoundToPixel’ was not declared in this scope
50 | DEBUG_ASSERT(std::abs(x - RoundToPixel(devicePixelRatio)(x)) < epsilon);
| ^~~~~~~~~~~~
src/rendergraph/scenegraph/../common/rendergraph/../../../util/assert.h:59:32: note: in definition of macro ‘DEBUG_ASSERT’
59 | if (!static_cast<bool>(cond)) [[unlikely]] { \
| ^~~~
src/waveform/renderers/allshader/waveformrendermark.cpp:51:35: error: ‘RoundToPixel’ was not declared in this scope
51 | DEBUG_ASSERT(std::abs(y - RoundToPixel(devicePixelRatio)(y)) < epsilon);
| ^~~~~~~~~~~~
src/rendergraph/scenegraph/../common/rendergraph/../../../util/assert.h:59:32: note: in definition of macro ‘DEBUG_ASSERT’
59 | if (!static_cast<bool>(cond)) [[unlikely]] { \
| ^~~~
make[2]: *** [CMakeFiles/mixxx-qml-lib.dir/build.make:666: CMakeFiles/mixxx-qml-lib.dir/src/waveform/renderers/allshader/waveformrendermark.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [CMakeFiles/Makefile2:803: CMakeFiles/mixxx-qml-lib.dir/all] Error 2
make: *** [Makefile:166: all] Error 2 |
I fixed this in the rg-wr-… PR, so if @acolombier merges the latest commits of my branches it will be fixed here too. |
bb5c4f8
to
7e39d2f
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
couple high level thoughts
Thanks, looks and works great. 🎉 Once we get this PR in, the only big remaining issue with the QML interface is the library IMHO. |
Glad you like it! Most of the credit goes to @m0dB tho Agreed on the library, and the settings, as well as a good revamp of the deck controls, but I'm on it! :D (cf Zulip) |
a0a4752
to
716d06b
Compare
Addressed the last comments and squashed the fixups - ready to go 🚀 |
716d06b
to
8200753
Compare
@mixxxdj/developers merge? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Did another sanity check. Most of the comments are nits, though the missing initialization and the endOfTrackWarning need some discussion.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. Thank you.
Thanks @Swiftb0y - all squashed and ready to go now! |
There are still a bunch of fixup commits |
ed1712f
to
7524344
Compare
Indeed, I didn't notice that the push failed for some unrelated git hooks checks. We should be good to go now! |
Thank you for pushing for yet another milestone. |
target_link_libraries(mixxx-lib PUBLIC rendergraph_gl) | ||
target_compile_definitions(mixxx-lib PUBLIC rendergraph=rendergraph_gl) | ||
target_compile_definitions(mixxx-lib PRIVATE allshader=allshader_gl) | ||
target_compile_definitions(mixxx-test PRIVATE allshader=allshader_gl) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
missing if(BUILD_TESTING)/endif()
CMake Error at CMakeLists.txt:4727 (target_compile_definitions):
Cannot specify compile definitions for target "mixxx-test" which is not
built by this project.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there a CI run for this or how does this happen?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
checked with live ebuild from gentoo. But I think integrating base/test and SHARED_LIBS (#14021 (comment)) into CI could be advantageous.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@acolombier is it feasible for you to look into this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll check that when I can - how can I reproduce this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it fails when building mixxx target only. adding if(BUILD_TESTING) as other occurences of mixxx-test target resolves this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
how can I reproduce this?
BUILD_TESTING=OFF
This PR is a rebase of @m0dB's
qml_scrolling_waveform
on the latest mainThe waveform rendering approach should provided better result in the long run and should integrate with the new
allshader
approach.Currently, the waveform rendering logic which happen in
QmlWaveformDisplay::updatePaintNode
is duplicated (or rather strongly inspired) from the RGB allshader rendering. A "definition of ready" for this PR would be to have some kind of compatibility layer/integration to reuse the rendering logic define inallshader
and should support at least one waveform type logic (e.gRGB
)Depends on:
TODO: