diff options
Diffstat (limited to 'pkgs/applications/audio/ensemble-chorus/juice-cxx-packing-fix.diff')
-rw-r--r-- | pkgs/applications/audio/ensemble-chorus/juice-cxx-packing-fix.diff | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/pkgs/applications/audio/ensemble-chorus/juice-cxx-packing-fix.diff b/pkgs/applications/audio/ensemble-chorus/juice-cxx-packing-fix.diff new file mode 100644 index 0000000000000..041f252a81e02 --- /dev/null +++ b/pkgs/applications/audio/ensemble-chorus/juice-cxx-packing-fix.diff @@ -0,0 +1,55 @@ +diff --git a/thirdparty/JUCE/modules/juce_graphics/colour/juce_PixelFormats.h b/thirdparty/JUCE/modules/juce_graphics/colour/juce_PixelFormats.h +index 69a66e4..3e50635 100644 +--- a/thirdparty/JUCE/modules/juce_graphics/colour/juce_PixelFormats.h ++++ b/thirdparty/JUCE/modules/juce_graphics/colour/juce_PixelFormats.h +@@ -111,18 +111,10 @@ public: + forcedinline uint8 getGreen() const noexcept { return components.g; } + forcedinline uint8 getBlue() const noexcept { return components.b; } + +- #if JUCE_GCC +- // NB these are here as a workaround because GCC refuses to bind to packed values. +- forcedinline uint8& getAlpha() noexcept { return comps [indexA]; } +- forcedinline uint8& getRed() noexcept { return comps [indexR]; } +- forcedinline uint8& getGreen() noexcept { return comps [indexG]; } +- forcedinline uint8& getBlue() noexcept { return comps [indexB]; } +- #else + forcedinline uint8& getAlpha() noexcept { return components.a; } + forcedinline uint8& getRed() noexcept { return components.r; } + forcedinline uint8& getGreen() noexcept { return components.g; } + forcedinline uint8& getBlue() noexcept { return components.b; } +- #endif + + //============================================================================== + /** Copies another pixel colour over this one. +@@ -336,21 +328,22 @@ private: + uint8 b, g, r, a; + #endif + #endif +- } JUCE_PACKED; ++ }; ++ ++ // structure must be packed but using the packed attribute causes compile ++ // failures with newer c++ compilers. Verify default packing produces same layout ++ static_assert(sizeof(Components) == 4, "Components struct is not packed"); + + union + { + uint32 internal; + Components components; +- #if JUCE_GCC +- uint8 comps[4]; // helper struct needed because gcc does not allow references to packed union members +- #endif + }; +-} +-#ifndef DOXYGEN +- JUCE_PACKED +-#endif +-; ++}; ++ ++// class must be packed but using the packed attribute causes compile ++// failures with newer c++ compilers. Verify default packing produces same layout ++static_assert(sizeof(PixelARGB) == 4, "PixelARGB class is not packed"); + + + //============================================================================== |