-
-
Notifications
You must be signed in to change notification settings - Fork 1k
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
MSVC fixes #4000
MSVC fixes #4000
Conversation
Fixes MSVC warnings "unknown option -std=c++11"
* CMake * Compiler flags fixes * Don't strip * Fix default template argument errors * Fix VLAs. MSVC doesn't support C99, so Variable-Length-Arrays are not available. Use QVarLengthArray instead.
The "d" suffix used in debug builds breaks plugin loading because LMMS expects to find a descriptor named e.g. "kickerd_plugin_descriptor" instead of "kicker_plugin_descriptor" when discovering a plugin with the filename "kickerd.dll".
Make AboutDialog support MSVC compiler info so we can use a screenshot of it to brag with on #devtalk
# Conflicts: # plugins/LadspaEffect/CMakeLists.txt # plugins/Xpressive/Xpressive.cpp # plugins/opl2/CMakeLists.txt # plugins/papu/CMakeLists.txt # plugins/xpressive/CMakeLists.txt # src/CMakeLists.txt
What a nice addition to be out 4000th issue/pull request 🎉 |
Some change introduced on
Edit: Appears to only occur when previeweing a note (such as in preset view or piano roll). Opening a demo project and playing works fine. Backtrace, though I'm not sure it's really related:
Crash occurs upon release of the note. |
After recompiling about 5 times, I suddenly get a proper backtrace:
Looks like some object is in a different thread than its parent, which is disallowed by Qt. |
I took a look at Qt's source code and found that the reason this only surfaces on Windows for me is that the |
MSVC fixes
Some fixes for MSVC support. In progress, things left to do:
This changes the minimum CMake version to 3.1.
Summary of the changes that were required to build with MSVC:
QVarLengthArray
EXPORT
problemsMicroTimer
was usingsys/time.h
, ported to standard C++11std::chrono::steady_clock
.RemotePlugin
was using GCC built-in atomic functions, ported to standard C++11std::atomic
asm
syntax, it has__asm
instead, which in turn doesn't work with x64. Replacedasm("pause")
by the_mm_pause()
intrinsicAddresses #3999.