-
-
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
qopenglwindow-based replacement of qglwidget, full glsl shader based waveforms, vumeters and spinnies #10989
Conversation
I tried to build it on Windows, but I got:
|
Yes, I see the CI build also failed. I guess I didn't add the file. I'll have a look when I am back at my computer. |
5f34265
to
ceca510
Compare
Please try again, @JoergAtGithub . Note that I have no idea if/how this will run on windows (or linux for that matter) and if it requires additional steps when setting up the QOpenGL stuff, so YMMV. |
I get now: ```
[718/870] Building CXX object CMakeFiles\mixxx-lib.dir\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp.obj
FAILED: CMakeFiles/mixxx-lib.dir/src/waveform/renderers/qopengl/waveformrendermarkrange.cpp.obj
C:\PROGRA~1\MICROS~1\2022\COMMUN~1\VC\Tools\MSVC\1433~1.316\bin\Hostx64\x64\cl.exe /nologo /TP -DAMD64 -DHAVE_WINSOCK2_H -DMIXXX_BUILD_RELEASE -DMIXXX_DEBUG_ASSERTIONS_ENABLED -DMIXXX_DEBUG_ASSERTIONS_FATAL -DMIXXX_USE_QOPENGL -DNDEBUG -DNOMINMAX -DQT_CONCURRENT_LIB -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_PRINTSUPPORT_LIB -DQT_QMLMODELS_LIB -DQT_QML_LIB -DQT_QUICKWIDGETS_LIB -DQT_QUICK_LIB -DQT_SQL_LIB -DQT_SVG_LIB -DQT_TABLET_SUPPORT -DQT_TESTCASE_BUILDDIR=\"C:/Users/Joerg.WORLDWARTWEB/source/repos/JoergAtGithub/mixxx/build/x64__portable\" -DQT_TESTLIB_LIB -DQT_USE_QSTRINGBUILDER -DQT_WIDGETS_LIB -DQT_XML_LIB -DSFC_SUPPORTS_SET_COMPRESSION_LEVEL -DUNICODE -DWIN32 -DWINVER=0x0601 -D_ATL_MIN_CRT -D_CRT_SECURE_NO_WARNINGS -D_SILENCE_CXX17_ITERATOR_BASE_CLASS_DEPRECATION_WARNING -D_USE_MATH_DEFINES -D_WIN32_WINNT=0x0601 -D_WINSOCK_DEPRECATED_NO_WARNINGS -D__BATTERY__ -D__BROADCAST__ -D__ENGINEPRIME__ -D__HID__ -D__HSS1394__ -D__LILV__ -D__MAD__ -D__MEDIAFOUNDATION__ -D__MODPLUG__ -D__OPUS__ -D__QTKEYCHAIN__ -D__SNDFILE__ -D__SQLITE3__ -D__SSE2__ -D__SSE__ -D__VINYLCONTROL__ -D__WINDOWS__ -D__WV__ -IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\build\x64__portable\mixxx-lib_autogen\include -IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src -IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\build\x64__portable\src -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\lib\fidlib -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\lib\googletest\googletest\include -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\lib\portaudio -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\lib\rigtorp\SPSCQueue\include -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\lib\replaygain -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\lib\reverb -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\lib\libshout-idjc\include -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\lib\kaitai -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\lib\mp3guessenc-0.27.4 -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\qt5 -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\qt5\QtConcurrent -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\qt5\QtCore -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\tools\qt5\mkspecs\win32-msvc -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\qt5\QtGui -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\qt5\QtNetwork -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\qt5\QtOpenGL -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\qt5\QtWidgets -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\qt5\QtPrintSupport -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\qt5\QtQml -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\qt5\QtQuickWidgets -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\qt5\QtQuick -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\qt5\QtQmlModels -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\qt5\QtSql -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\qt5\QtSvg -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\qt5\QtTest -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\qt5\QtXml -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\lib\qm-dsp -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\lib\qm-dsp\include -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\taglib -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\opus -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\hidapi -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\lib\xwax -external:W0 /DWIN32 /D_WINDOWS /GR /EHsc /Zc:__cplusplus /Z7 /O2 /Ob1 /DNDEBUG -MD /UTF8 /fp:fast /Gy /W3 -std:c++20 /showIncludes /FoCMakeFiles\mixxx-lib.dir\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp.obj /FdCMakeFiles\mixxx-lib.dir\mixxx-lib.pdb /FS -c C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(19): error C2872: 'WaveformRenderMarkRange': ambiguous symbol
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform/renderers/waveformmarkrange.h(79): note: could be 'WaveformRenderMarkRange'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform/renderers/qopengl/waveformrendermarkrange.h(15): note: or 'qopengl::WaveformRenderMarkRange'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(19): error C2027: use of undefined type 'WaveformRenderMarkRange'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform/renderers/waveformmarkrange.h(79): note: see declaration of 'WaveformRenderMarkRange'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(20): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(20): error C2550: '{ctor}': constructor initializer lists are only allowed on constructor definitions
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(21): warning C4508: '{ctor}': function should return a value; 'void' return type assumed
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(23): error C2872: 'WaveformRenderMarkRange': ambiguous symbol
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform/renderers/waveformmarkrange.h(79): note: could be 'WaveformRenderMarkRange'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform/renderers/qopengl/waveformrendermarkrange.h(15): note: or 'qopengl::WaveformRenderMarkRange'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(23): error C2872: 'WaveformRenderMarkRange': ambiguous symbol
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform/renderers/waveformmarkrange.h(79): note: could be 'WaveformRenderMarkRange'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform/renderers/qopengl/waveformrendermarkrange.h(15): note: or 'qopengl::WaveformRenderMarkRange'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(23): error C2027: use of undefined type 'WaveformRenderMarkRange'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform/renderers/waveformmarkrange.h(79): note: see declaration of 'WaveformRenderMarkRange'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(23): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(24): warning C4508: '{dtor}': function should return a value; 'void' return type assumed
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(26): error C2872: 'WaveformRenderMarkRange': ambiguous symbol
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform/renderers/waveformmarkrange.h(79): note: could be 'WaveformRenderMarkRange'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform/renderers/qopengl/waveformrendermarkrange.h(15): note: or 'qopengl::WaveformRenderMarkRange'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(26): error C2027: use of undefined type 'WaveformRenderMarkRange'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform/renderers/waveformmarkrange.h(79): note: see declaration of 'WaveformRenderMarkRange'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(44): error C2065: 'm_shaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(48): error C2065: 'm_shaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(53): error C2065: 'm_shaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(57): error C2065: 'm_shaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(61): error C2872: 'WaveformRenderMarkRange': ambiguous symbol
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform/renderers/waveformmarkrange.h(79): note: could be 'WaveformRenderMarkRange'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform/renderers/qopengl/waveformrendermarkrange.h(15): note: or 'qopengl::WaveformRenderMarkRange'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(61): error C2027: use of undefined type 'WaveformRenderMarkRange'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform/renderers/waveformmarkrange.h(79): note: see declaration of 'WaveformRenderMarkRange'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(70): error C2065: 'm_shaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(71): error C2065: 'm_shaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(73): error C2065: 'm_shaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(75): error C2065: 'm_shaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(76): error C2065: 'm_shaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(82): error C2872: 'WaveformRenderMarkRange': ambiguous symbol
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform/renderers/waveformmarkrange.h(79): note: could be 'WaveformRenderMarkRange'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform/renderers/qopengl/waveformrendermarkrange.h(15): note: or 'qopengl::WaveformRenderMarkRange'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(82): error C2027: use of undefined type 'WaveformRenderMarkRange'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform/renderers/waveformmarkrange.h(79): note: see declaration of 'WaveformRenderMarkRange'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(83): error C2065: 'm_markRanges': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(84): error C2065: 'm_markRanges': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(89): error C2065: 'm_markRanges': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(91): error C2065: 'm_waveformRenderer': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(94): error C2065: 'm_waveformRenderer': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(90): error C2440: '': cannot convert from 'initializer list' to 'WaveformMarkRange'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(94): note: No constructor could take the source type, or constructor overload resolution was ambiguous
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(100): error C2872: 'WaveformRenderMarkRange': ambiguous symbol
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform/renderers/waveformmarkrange.h(79): note: could be 'WaveformRenderMarkRange'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform/renderers/qopengl/waveformrendermarkrange.h(15): note: or 'qopengl::WaveformRenderMarkRange'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(100): error C2027: use of undefined type 'WaveformRenderMarkRange'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform/renderers/waveformmarkrange.h(79): note: see declaration of 'WaveformRenderMarkRange'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(105): error C2065: 'm_waveformRenderer': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(105): error C2065: 'm_waveformRenderer': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(105): error C2440: '': cannot convert from 'initializer list' to 'QRectF'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(105): note: No constructor could take the source type, or constructor overload resolution was ambiguous
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(106): error C2065: 'm_shaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(108): error C2065: 'm_shaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(109): error C2065: 'm_shaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(111): error C2065: 'm_markRanges': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(111): error C2530: 'markRange': references must be initialized
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(111): error C3531: 'markRange': a symbol whose type contains 'auto' must have an initializer
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(111): error C2143: syntax error: missing ';' before ':'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(111): error C2143: syntax error: missing ';' before ')'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(128): error C2065: 'm_waveformRenderer': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(130): error C2065: 'm_waveformRenderer': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(138): error C2065: 'm_waveformRenderer': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(145): error C2065: 'm_waveformRenderer': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(145): error C2440: '': cannot convert from 'initializer list' to 'QRectF'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermarkrange.cpp(145): note: No constructor could take the source type, or constructor overload resolution was ambiguous
[719/870] Building CXX object CMakeFiles\mixxx-lib.dir\src\waveform\renderers\qopengl\waveformrenderersignalbase.cpp.obj
[720/870] Building CXX object CMakeFiles\mixxx-lib.dir\src\waveform\renderers\qopengl\waveformrendererrgb.cpp.obj
[721/870] Building CXX object CMakeFiles\mixxx-lib.dir\src\waveform\widgets\qopengl\waveformwidget.cpp.obj
[722/870] Building CXX object CMakeFiles\mixxx-lib.dir\src\waveform\widgets\qopengl\rgbwaveformwidget.cpp.obj
[723/870] Building CXX object CMakeFiles\mixxx-lib.dir\src\waveform\renderers\qopengl\waveformrendererpreroll.cpp.obj
[724/870] Building CXX object CMakeFiles\mixxx-lib.dir\src\waveform\renderers\qopengl\waveformrendermark.cpp.obj
FAILED: CMakeFiles/mixxx-lib.dir/src/waveform/renderers/qopengl/waveformrendermark.cpp.obj
C:\PROGRA~1\MICROS~1\2022\COMMUN~1\VC\Tools\MSVC\1433~1.316\bin\Hostx64\x64\cl.exe /nologo /TP -DAMD64 -DHAVE_WINSOCK2_H -DMIXXX_BUILD_RELEASE -DMIXXX_DEBUG_ASSERTIONS_ENABLED -DMIXXX_DEBUG_ASSERTIONS_FATAL -DMIXXX_USE_QOPENGL -DNDEBUG -DNOMINMAX -DQT_CONCURRENT_LIB -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_PRINTSUPPORT_LIB -DQT_QMLMODELS_LIB -DQT_QML_LIB -DQT_QUICKWIDGETS_LIB -DQT_QUICK_LIB -DQT_SQL_LIB -DQT_SVG_LIB -DQT_TABLET_SUPPORT -DQT_TESTCASE_BUILDDIR=\"C:/Users/Joerg.WORLDWARTWEB/source/repos/JoergAtGithub/mixxx/build/x64__portable\" -DQT_TESTLIB_LIB -DQT_USE_QSTRINGBUILDER -DQT_WIDGETS_LIB -DQT_XML_LIB -DSFC_SUPPORTS_SET_COMPRESSION_LEVEL -DUNICODE -DWIN32 -DWINVER=0x0601 -D_ATL_MIN_CRT -D_CRT_SECURE_NO_WARNINGS -D_SILENCE_CXX17_ITERATOR_BASE_CLASS_DEPRECATION_WARNING -D_USE_MATH_DEFINES -D_WIN32_WINNT=0x0601 -D_WINSOCK_DEPRECATED_NO_WARNINGS -D__BATTERY__ -D__BROADCAST__ -D__ENGINEPRIME__ -D__HID__ -D__HSS1394__ -D__LILV__ -D__MAD__ -D__MEDIAFOUNDATION__ -D__MODPLUG__ -D__OPUS__ -D__QTKEYCHAIN__ -D__SNDFILE__ -D__SQLITE3__ -D__SSE2__ -D__SSE__ -D__VINYLCONTROL__ -D__WINDOWS__ -D__WV__ -IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\build\x64__portable\mixxx-lib_autogen\include -IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src -IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\build\x64__portable\src -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\lib\fidlib -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\lib\googletest\googletest\include -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\lib\portaudio -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\lib\rigtorp\SPSCQueue\include -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\lib\replaygain -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\lib\reverb -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\lib\libshout-idjc\include -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\lib\kaitai -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\lib\mp3guessenc-0.27.4 -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\qt5 -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\qt5\QtConcurrent -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\qt5\QtCore -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\tools\qt5\mkspecs\win32-msvc -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\qt5\QtGui -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\qt5\QtNetwork -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\qt5\QtOpenGL -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\qt5\QtWidgets -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\qt5\QtPrintSupport -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\qt5\QtQml -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\qt5\QtQuickWidgets -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\qt5\QtQuick -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\qt5\QtQmlModels -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\qt5\QtSql -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\qt5\QtSvg -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\qt5\QtTest -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\qt5\QtXml -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\lib\qm-dsp -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\lib\qm-dsp\include -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\taglib -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\opus -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\hidapi -external:IC:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\lib\xwax -external:W0 /DWIN32 /D_WINDOWS /GR /EHsc /Zc:__cplusplus /Z7 /O2 /Ob1 /DNDEBUG -MD /UTF8 /fp:fast /Gy /W3 -std:c++20 /showIncludes /FoCMakeFiles\mixxx-lib.dir\src\waveform\renderers\qopengl\waveformrendermark.cpp.obj /FdCMakeFiles\mixxx-lib.dir\mixxx-lib.pdb /FS -c C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(23): error C2872: 'WaveformRenderMark': ambiguous symbol
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\waveformmark.h(123): note: could be 'WaveformRenderMark'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform/renderers/qopengl/waveformrendermark.h(16): note: or 'qopengl::WaveformRenderMark'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(23): error C2027: use of undefined type 'WaveformRenderMark'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\waveformmark.h(123): note: see declaration of 'WaveformRenderMark'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(24): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(24): error C2550: '{ctor}': constructor initializer lists are only allowed on constructor definitions
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(25): warning C4508: '{ctor}': function should return a value; 'void' return type assumed
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(27): error C2872: 'WaveformRenderMark': ambiguous symbol
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\waveformmark.h(123): note: could be 'WaveformRenderMark'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform/renderers/qopengl/waveformrendermark.h(16): note: or 'qopengl::WaveformRenderMark'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(27): error C2872: 'WaveformRenderMark': ambiguous symbol
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\waveformmark.h(123): note: could be 'WaveformRenderMark'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform/renderers/qopengl/waveformrendermark.h(16): note: or 'qopengl::WaveformRenderMark'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(27): error C2027: use of undefined type 'WaveformRenderMark'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\waveformmark.h(123): note: see declaration of 'WaveformRenderMark'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(27): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(28): error C2065: 'm_marks': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(28): error C2530: 'pMark': references must be initialized
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(28): error C3531: 'pMark': a symbol whose type contains 'auto' must have an initializer
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(28): error C2143: syntax error: missing ';' before ':'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(28): error C2143: syntax error: missing ';' before ')'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(31): warning C4508: '{dtor}': function should return a value; 'void' return type assumed
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(33): error C2872: 'WaveformRenderMark': ambiguous symbol
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\waveformmark.h(123): note: could be 'WaveformRenderMark'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform/renderers/qopengl/waveformrendermark.h(16): note: or 'qopengl::WaveformRenderMark'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(33): error C2027: use of undefined type 'WaveformRenderMark'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\waveformmark.h(123): note: see declaration of 'WaveformRenderMark'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(34): error C2065: 'm_waveformRenderer': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(35): error C2065: 'm_marks': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(35): error C2065: 'm_waveformRenderer': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(38): error C2872: 'WaveformRenderMark': ambiguous symbol
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\waveformmark.h(123): note: could be 'WaveformRenderMark'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform/renderers/qopengl/waveformrendermark.h(16): note: or 'qopengl::WaveformRenderMark'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(38): error C2027: use of undefined type 'WaveformRenderMark'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\waveformmark.h(123): note: see declaration of 'WaveformRenderMark'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(39): error C3861: 'initGradientShader': identifier not found
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(40): error C3861: 'initTextureShader': identifier not found
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(42): error C3861: 'generatePlayPosMarkTexture': identifier not found
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(45): error C2872: 'WaveformRenderMark': ambiguous symbol
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\waveformmark.h(123): note: could be 'WaveformRenderMark'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform/renderers/qopengl/waveformrendermark.h(16): note: or 'qopengl::WaveformRenderMark'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(45): error C2027: use of undefined type 'WaveformRenderMark'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\waveformmark.h(123): note: see declaration of 'WaveformRenderMark'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(67): error C2065: 'm_gradientShaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(71): error C2065: 'm_gradientShaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(76): error C2065: 'm_gradientShaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(80): error C2065: 'm_gradientShaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(85): error C2872: 'WaveformRenderMark': ambiguous symbol
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\waveformmark.h(123): note: could be 'WaveformRenderMark'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform/renderers/qopengl/waveformrendermark.h(16): note: or 'qopengl::WaveformRenderMark'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(85): error C2027: use of undefined type 'WaveformRenderMark'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\waveformmark.h(123): note: see declaration of 'WaveformRenderMark'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(107): error C2065: 'm_textureShaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(111): error C2065: 'm_textureShaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(116): error C2065: 'm_textureShaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(120): error C2065: 'm_textureShaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(125): error C2872: 'WaveformRenderMark': ambiguous symbol
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\waveformmark.h(123): note: could be 'WaveformRenderMark'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform/renderers/qopengl/waveformrendermark.h(16): note: or 'qopengl::WaveformRenderMark'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(125): error C2027: use of undefined type 'WaveformRenderMark'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\waveformmark.h(123): note: see declaration of 'WaveformRenderMark'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(126): error C2065: 'm_waveformRenderer': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(126): error C2737: 'devicePixelRatio': const object must be initialized
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(141): error C2065: 'm_waveformRenderer': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(141): error C2065: 'm_waveformRenderer': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(141): error C2440: '': cannot convert from 'initializer list' to 'QRectF'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(141): note: No constructor could take the source type, or constructor overload resolution was ambiguous
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(143): error C2065: 'm_textureShaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(145): error C2065: 'm_textureShaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(146): error C2065: 'm_textureShaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(147): error C2065: 'm_textureShaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(148): error C2065: 'm_textureShaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(150): error C2065: 'm_textureShaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(152): error C2065: 'm_textureShaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(153): error C2065: 'm_textureShaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(155): error C2065: 'm_textureShaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(156): error C2065: 'm_textureShaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(159): error C2065: 'm_textureShaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(166): error C2872: 'WaveformRenderMark': ambiguous symbol
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\waveformmark.h(123): note: could be 'WaveformRenderMark'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform/renderers/qopengl/waveformrendermark.h(16): note: or 'qopengl::WaveformRenderMark'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(166): error C2027: use of undefined type 'WaveformRenderMark'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\waveformmark.h(123): note: see declaration of 'WaveformRenderMark'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(182): error C2065: 'm_waveformRenderer': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(182): error C2065: 'm_waveformRenderer': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(182): error C2440: '': cannot convert from 'initializer list' to 'QRectF'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(182): note: No constructor could take the source type, or constructor overload resolution was ambiguous
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(183): error C2065: 'm_gradientShaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(185): error C2065: 'm_gradientShaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(186): error C2065: 'm_gradientShaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(187): error C2065: 'm_gradientShaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(188): error C2065: 'm_gradientShaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(190): error C2065: 'm_gradientShaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(191): error C2065: 'm_gradientShaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(193): error C2065: 'm_gradientShaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(194): error C2065: 'm_gradientShaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(196): error C2065: 'm_gradientShaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(197): error C2065: 'm_gradientShaderProgram': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(203): error C2872: 'WaveformRenderMark': ambiguous symbol
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\waveformmark.h(123): note: could be 'WaveformRenderMark'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform/renderers/qopengl/waveformrendermark.h(16): note: or 'qopengl::WaveformRenderMark'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(203): error C2027: use of undefined type 'WaveformRenderMark'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\waveformmark.h(123): note: see declaration of 'WaveformRenderMark'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(204): error C2065: 'm_waveformRenderer': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(204): error C2737: 'devicePixelRatio': const object must be initialized
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(207): error C3861: 'checkCuesUpdated': identifier not found
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(212): error C2065: 'm_marks': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(212): error C2530: 'pMark': references must be initialized
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(212): error C3531: 'pMark': a symbol whose type contains 'auto' must have an initializer
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(212): error C2143: syntax error: missing ';' before ':'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(212): error C2143: syntax error: missing ';' before ')'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(224): error C3861: 'generateMarkImage': identifier not found
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(227): error C2737: 'samplePosition': const object must be initialized
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(230): error C2065: 'm_waveformRenderer': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(231): error C2737: 'sampleEndPosition': const object must be initialized
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(235): error C2065: 'm_waveformRenderer': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(239): error C2737: 'markHalfWidth': const object must be initialized
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(246): error C2065: 'm_waveformRenderer': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(248): error C2660: 'drawTexture': function does not take 2 arguments
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(125): note: see declaration of 'drawTexture'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(256): error C2065: 'm_waveformRenderer': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(268): error C2065: 'm_waveformRenderer': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(267): error C2440: '': cannot convert from 'double' to 'QPointF'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(269): note: No constructor could take the source type, or constructor overload resolution was ambiguous
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(266): error C2440: '': cannot convert from 'QPointF' to 'QRectF'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(269): note: No constructor could take the source type, or constructor overload resolution was ambiguous
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(277): error C2679: binary '[': no operator found which takes a right-hand operand of type 'int' (or there is no acceptable conversion)
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\qt5\QtCore/qmap.h(385): note: could be 'const T QMap::operator [](const Key &) const'
with
[
T=int,
Key=WaveformMarkPointer
]
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\qt5\QtCore/qmap.h(384): note: or 'T &QMap::operator [](const Key &)'
with
[
T=int,
Key=WaveformMarkPointer
]
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(277): note: while trying to match the argument list '(QMap, int)'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(280): error C2737: 'markHalfHeight': const object must be initialized
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(286): error C2065: 'm_waveformRenderer': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(288): error C2660: 'drawTexture': function does not take 2 arguments
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(125): note: see declaration of 'drawTexture'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(296): error C2065: 'm_waveformRenderer': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(299): error C2065: 'm_waveformRenderer': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(304): error C2065: 'm_waveformRenderer': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(304): error C2440: '': cannot convert from 'double' to 'QPointF'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(305): note: No constructor could take the source type, or constructor overload resolution was ambiguous
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(303): error C2440: '': cannot convert from 'QPointF' to 'QRectF'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(305): note: No constructor could take the source type, or constructor overload resolution was ambiguous
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(313): error C2679: binary '[': no operator found which takes a right-hand operand of type 'int' (or there is no acceptable conversion)
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\qt5\QtCore/qmap.h(385): note: could be 'const T QMap::operator [](const Key &) const'
with
[
T=int,
Key=WaveformMarkPointer
]
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\buildenv\mixxx-deps-2.4-x64-windows-f9cdab3\installed\x64-windows\include\qt5\QtCore/qmap.h(384): note: or 'T &QMap::operator [](const Key &)'
with
[
T=int,
Key=WaveformMarkPointer
]
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(313): note: while trying to match the argument list '(QMap, int)'
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(318): error C2065: 'm_waveformRenderer': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(321): error C2065: 'm_waveformRenderer': undeclared identifier
C:\Users\Joerg.WORLDWARTWEB\source\repos\JoergAtGithub\mixxx\src\waveform\renderers\qopengl\waveformrendermark.cpp(321): fatal error C1003: error count exceeds 100; stopping compilation
```
|
Meh... I am using the same names as several existing waveform renderer classes, but in a different namespace (qopengl). Unfortunately namespace resolution is very compiler dependent. I don't think that without access to a windows machine I will be able to fix this. I will change using a namespace to using a prefix instead. Might be more clear anyway. |
src/widget/qopengl/wspinny.cpp
Outdated
@@ -0,0 +1,824 @@ | |||
#include "widget/wspinny.h" |
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.
#include "widget/wspinny.h" | |
#include "widget/qopengl/wspinny.h" |
I guess this file is meant to be included here?
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 doesn't matter, "widget/wspinny.h" will include "widget/qopengl/wspinny.h" when MIXXX_USE_QOPENGL is defined.
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.
its still weird for the implementation in one module to include the header from a completely separate module...
Just a side note: Just |
I got it working on Windows. I had to add replace I could use this new Waveform-Type under Windows: Waveforms, Spinnies and VUMeter looked good, but the frame rate was rather low. |
Ok, thanks. I will revert the last commit and add the namespace, I prefer that over the prefix. Too bad that on windows it does not give the same good results as on macOS. Clearly Qt does things very differently under the hood. |
f286928
to
50bc499
Compare
I tested this again on Windows11, but this time with the new buildenv from #11074. This time the results were better:
If I move the cross fader of my controller fast, the crossfader in the GUI jumps, if I select a high OpenGL frame rate. Same as on normal GLSL. |
2969a38
to
06a1dd6
Compare
Something is gone wrong while rebasing (Ubuntu and Windows builds fail now):
|
I see, I only checked the macOS build with QOPENGL=on, where this code isn't compiled. I'll fix it. |
bb7db7d
to
6fc318f
Compare
To fix the pre-commit issues, download pre-commit.patch from the build artifacts, unzip it into your mixx directory, and call |
Any updates on this? This does improve waveform performance noticeably on M1 macs too. |
I added the completion of this on the list of GSoC 2023 projects: https://github.com/mixxxdj/mixxx/wiki/GSOC-2023-Ideas/#unify-opengl-waveform-code-for-macos-to-use-qt-515-or-later |
In my opinion this should be merged into main (I will try to find a moment this weekend to rebase it and make sure everything is still okay). I don't see how we can release mixxx 2.4 for macOS with the QGLWidget implementation. But I have the impression that since most devs are using linux or windows, they are okay with sticking with QGLWidget and even the suggestion to conditionally compile one or the other was not well received... |
Why not fix the CI issues and remove the "WIP" from the titel of this PR, to make clear, that it's ready for review now? |
I must say that I got a bit demotivated because after investing a lot of time and energy, I got the impression that it was not going to be accepted into 2.4. But if you think it could be, I will pick it back up. |
We are planning a short 2.4 beta phase and than starting a six month release cycle after the 2.4 release, so if we think this requires more testing it is not shifted by two years. I think it depends on how much testing will be done here. A least we should not delay 2.4 beta because of this. |
I thought Mixxx 2.4 on Mac Intel is so slow, that it's unusable. In my opinion this would be an absolute showstopper for a 2.4 release. But maybe there are also other solution to fix this? |
We have no clear evidence for that. For my understanding it works OKish with QT 5.12 but we need to test. |
I just tested 2.4 on a MacBook and I don't think its very usable. The framerate for the GL waveforms is hovering around 45fps, 25fps for the GLSL waveforms. GUI input lags behind for a solid 2 seconds or so when the spinnies are on. That problem sometimes vanishes but then comes back and I don't know why. |
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.
A couple thoughts. Everything but a proper review. I think this could use a little more care to clean up the code until someone can actually take a proper look at this.
Is this a reproduceable regression, or just a one time hick-up? |
@foss- sounds good. It is expected that there are occasional drops. This has always been the case, the problem is that the Qt event queue delivers the VSyncThread calls to WaveformWidgetFactory to render and swap the waveforms, so if anything holds up the queue (typically scrolling in the library) this causes a drop. But as long as it stabilises on 60 fps, all good! Could you also try with the "(allshaders)" waveform types? These are the most optimised. |
Yes, I confirm I don't have any regression with a clean local build after rebase, and neither with the github build made at the time that I experienced the regression, so I am assuming I messed something up with my build or there was something temporarily wrong with my system. So, false alarm, and sorry for that. |
RGB (all-shaders) (GLSL) looking good. Drops happen when scrolling (expected and has always been the case with Mixxx on macOS. There seem to be a few issues with Qt and scrolling on macOS. This P1 Critical bug filed 2019 finally got resolved summer 2022: https://bugreports.qt.io/browse/QTBUG-73117 Very excited to see this PR land 🚀 |
IIRC (I think @ronso0 explained this to me) it's also the querying of the sqlite database that is done in the same thread and thus can interfere with the waveform redraws. I have a branch where I draw the waveforms from the vsync thread directly, which would solve this problem. Once this PR has been merged to 2.4 I might create an additional PR that adds a vsync render mode "render in vsync thread". |
The VU-Meter failure in Shade is caused by the 1 pixel height. If I use two pixel height, it works. |
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.
OK, so we assume that the frame rate drop is natural is some conditions ad the original report about the regression after rebase was a false positive.
The current state of this PR is a rebase of the current 2.4. For now I ignore the issue that this may have produce not build-able commits. I have also not reviewed all the code again that can be required after such a rebase.
Please do not rebase a PR under review in future to avoide this situation.
Thank you for all the work and patients you have put into this branch. I think it is a mayor mile stone in the history of Mixxx.
A huge personal thank you to @m0dB for spending this amount of time and patience on this PR. Thank you to the rest of the team that we managed to get a change this gigantic merged in a reasonable time. Good job everyone. 2.4 Full force 🎉 |
@m0dB you mentioned that you had PR that would allow us to use the current skin system with Qt6, right? Can you open a PR against |
Kudos to @m0dB for your efforts, your perseverance, and your patience to finish this task and PR! |
Yes, but that is on top of this PR, so I can only create the Qt6 PR once this PR has been merged from 2.4 to main. But 2.4 to main merges are done regularly, right? Otherwise, I can create a PR for 2.4 in the meantime and rebase it later on.
It compiles (with some "deprecated" warnings, easy to fix) and runs smoothly, as far as I see, at least on macOS and only done some smoke testing. The few issues I have seen with Qt6:
Also I would be good to have a proper Qt6 buildenv. I am now using the existing buildenv and I pass the path to the official Qt6 binary install with CMAKE_PREFIX_PATH, but I suppose that the way to go is to have Qt6 from vcpkg. I started looking into that but vcpkg is too much of a learning curve right now, so it would be great if someone with vcpkg experience (@daschuer I guess) could take care of that. Or maybe this has been done already? We can decide to address all this before or after merging the PR. The PR will not change anything at all if you compile with Qt5 or with Qt6 with QML. |
@m0dB I spent many months juggling weird hacks with build environments and spinning in circles looking for optimizations to keep Mixxx barely functional on macOS. Thank you for finally doing the work to fix the root problem. |
I recommend to work on further refactoring on the main branch and leave the 2.4 beta branch with the |
This PR addresses performance issues, particularly on macOS, by replacing the (deprecated) QGLWidget with a new class WGLWidget. When cmake option QOPENGL is ON (the default), WGLWidget is derived from QWidget and uses QOpenGLWindow for drawing. When cmake option QOPENGL is OFF, WGLWidget derives directly from QGLWidget, effectively leaving everything as before.
Additionally, this PR implements waveform, spinny and vu-meter rendering using GLSL shaders for drawing for better performance. The original implementations were combining QPainter-based drawing with openGL. Using QPainter with QOpenGLWindow as a paint device causes performance issues.
The original WSpinny and WVuMeter classes are still available as fall back for when GLSL is not available or in case we encounter issues. By default the new WSpinnyGLSL and WVuMeterGLSL are used.
All original waveform types are also still available, but the new (all-shader) type waveforms should perform better on all platforms.
Notes:
Known issues: