The current version we have does not support newer versions of JUCE which have this fixed and I don't dare update this to a newer version as the whole thing seems way too cursed. Someone else can try their hand at it later.
134 lines
5.9 KiB
Diff
134 lines
5.9 KiB
Diff
commit 1d53d416b47aee20b0d093e319b7bc9131b85adc
|
|
Author: q66 <daniel@octaforge.org>
|
|
Date: Sat Jan 4 23:52:36 2020 +0100
|
|
|
|
fix build with gcc9, adapted from upstream
|
|
|
|
diff --git JUCE-5.3.2/modules/juce_graphics/colour/juce_PixelFormats.h JUCE-5.3.2/modules/juce_graphics/colour/juce_PixelFormats.h
|
|
index 4b1ba87..f77b885 100644
|
|
--- JUCE-5.3.2/modules/juce_graphics/colour/juce_PixelFormats.h
|
|
+++ JUCE-5.3.2/modules/juce_graphics/colour/juce_PixelFormats.h
|
|
@@ -111,19 +111,6 @@ 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.
|
|
|
|
@@ -342,9 +329,6 @@ private:
|
|
{
|
|
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
|
|
@@ -433,10 +417,6 @@ public:
|
|
forcedinline uint8 getGreen() const noexcept { return g; }
|
|
forcedinline uint8 getBlue() const noexcept { return b; }
|
|
|
|
- forcedinline uint8& getRed() noexcept { return r; }
|
|
- forcedinline uint8& getGreen() noexcept { return g; }
|
|
- forcedinline uint8& getBlue() noexcept { return b; }
|
|
-
|
|
//==============================================================================
|
|
/** Copies another pixel colour over this one.
|
|
|
|
@@ -652,7 +632,6 @@ public:
|
|
|
|
//==============================================================================
|
|
forcedinline uint8 getAlpha() const noexcept { return a; }
|
|
- forcedinline uint8& getAlpha() noexcept { return a; }
|
|
|
|
forcedinline uint8 getRed() const noexcept { return 0; }
|
|
forcedinline uint8 getGreen() const noexcept { return 0; }
|
|
diff --git JUCE-5.3.2/modules/juce_graphics/native/juce_RenderingHelpers.h JUCE-5.3.2/modules/juce_graphics/native/juce_RenderingHelpers.h
|
|
index 9ac3ae2..9f41084 100644
|
|
--- JUCE-5.3.2/modules/juce_graphics/native/juce_RenderingHelpers.h
|
|
+++ JUCE-5.3.2/modules/juce_graphics/native/juce_RenderingHelpers.h
|
|
@@ -585,10 +585,6 @@ namespace EdgeTableFillers
|
|
{
|
|
areRGBComponentsEqual = sourceColour.getRed() == sourceColour.getGreen()
|
|
&& sourceColour.getGreen() == sourceColour.getBlue();
|
|
- filler[0].set (sourceColour);
|
|
- filler[1].set (sourceColour);
|
|
- filler[2].set (sourceColour);
|
|
- filler[3].set (sourceColour);
|
|
}
|
|
else
|
|
{
|
|
@@ -675,7 +671,6 @@ namespace EdgeTableFillers
|
|
const Image::BitmapData& destData;
|
|
PixelType* linePixels;
|
|
PixelARGB sourceColour;
|
|
- PixelRGB filler[4];
|
|
bool areRGBComponentsEqual;
|
|
|
|
forcedinline PixelType* getPixel (int x) const noexcept
|
|
@@ -690,47 +685,10 @@ namespace EdgeTableFillers
|
|
|
|
forcedinline void replaceLine (PixelRGB* dest, PixelARGB colour, int width) const noexcept
|
|
{
|
|
- if (destData.pixelStride == sizeof (*dest))
|
|
- {
|
|
- if (areRGBComponentsEqual) // if all the component values are the same, we can cheat..
|
|
- {
|
|
- memset (dest, colour.getRed(), (size_t) width * 3);
|
|
- }
|
|
- else
|
|
- {
|
|
- if (width >> 5)
|
|
- {
|
|
- auto intFiller = reinterpret_cast<const int*> (filler);
|
|
-
|
|
- while (width > 8 && (((pointer_sized_int) dest) & 7) != 0)
|
|
- {
|
|
- dest->set (colour);
|
|
- ++dest;
|
|
- --width;
|
|
- }
|
|
-
|
|
- while (width > 4)
|
|
- {
|
|
- auto d = reinterpret_cast<int*> (dest);
|
|
- *d++ = intFiller[0];
|
|
- *d++ = intFiller[1];
|
|
- *d++ = intFiller[2];
|
|
- dest = reinterpret_cast<PixelRGB*> (d);
|
|
- width -= 4;
|
|
- }
|
|
- }
|
|
-
|
|
- while (--width >= 0)
|
|
- {
|
|
- dest->set (colour);
|
|
- ++dest;
|
|
- }
|
|
- }
|
|
- }
|
|
- else
|
|
- {
|
|
- JUCE_PERFORM_PIXEL_OP_LOOP (set (colour))
|
|
- }
|
|
+ if ((size_t) destData.pixelStride == sizeof (*dest) && areRGBComponentsEqual)
|
|
+ memset ((void*) dest, colour.getRed(), (size_t) width * 3); // if all the component values are the same, we can cheat..
|
|
+ else
|
|
+ JUCE_PERFORM_PIXEL_OP_LOOP (set (colour));
|
|
}
|
|
|
|
forcedinline void replaceLine (PixelAlpha* dest, const PixelARGB colour, int width) const noexcept
|