about summary refs log tree commit diff
path: root/pkgs/applications/audio/ensemble-chorus/juice-cxx-packing-fix.diff
diff options
context:
space:
mode:
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.diff55
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");

+ 

+ 

+ //==============================================================================