nixpkgs/pkgs/by-name/en/ensemble-chorus/juice-cxx-packing-fix.diff
aleksana 571c71e6f7 treewide: migrate packages to pkgs/by-name, take 1
We are migrating packages that meet below requirements:

1. using `callPackage`
2. called path is a directory
3. overriding set is empty (`{ }`)
4. not containing path expressions other than relative path (to
makenixpkgs-vet happy)
5. not referenced by nix files outside of the directory, other
than`pkgs/top-level/all-packages.nix`
6. not referencing nix files outside of the directory
7. not referencing `default.nix` (since it's changed to `package.nix`)
8. `outPath` doesn't change after migration

The tool is here: https://github.com/Aleksanaa/by-name-migrate.
2024-11-09 20:04:51 +08:00

56 lines
2.4 KiB
Diff

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");
//==============================================================================