helm: fix build with gcc9

Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
This commit is contained in:
Andreas Müller
2019-08-01 23:32:54 +02:00
parent 64b1480e00
commit 3a8e8cd06c
5 changed files with 163 additions and 1 deletions

View File

@@ -0,0 +1,161 @@
From cee14bbe5a46de8cf0941b10686e84c30f7eaf76 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com>
Date: Thu, 1 Aug 2019 22:29:06 +0200
Subject: [PATCH] Fix build with gcc9
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Ported from [1]
[1] https://github.com/WeAreROLI/JUCE/commit/4e0adb2af8b424c43d22bd431011c9a6c57d36b6
Upstream-Status: Pending
Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
---
.../juce_graphics/colour/juce_PixelFormats.h | 33 +++-----------
.../native/juce_RenderingHelpers.h | 44 +------------------
2 files changed, 8 insertions(+), 69 deletions(-)
diff --git a/JUCE/modules/juce_graphics/colour/juce_PixelFormats.h b/JUCE/modules/juce_graphics/colour/juce_PixelFormats.h
index cb0867cf..dea97a6b 100644
--- a/JUCE/modules/juce_graphics/colour/juce_PixelFormats.h
+++ b/JUCE/modules/juce_graphics/colour/juce_PixelFormats.h
@@ -105,22 +105,9 @@ public:
//==============================================================================
forcedinline uint8 getAlpha() const noexcept { return components.a; }
- forcedinline uint8 getRed() const noexcept { return components.r; }
+ forcedinline uint8 getRed() const noexcept { return components.r; }
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
+ forcedinline uint8 getBlue() const noexcept { return components.b; }
//==============================================================================
/** Copies another pixel colour over this one.
@@ -340,9 +327,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
@@ -425,13 +409,9 @@ public:
//==============================================================================
forcedinline uint8 getAlpha() const noexcept { return 0xff; }
- forcedinline uint8 getRed() const noexcept { return r; }
+ forcedinline uint8 getRed() const noexcept { return r; }
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; }
+ forcedinline uint8 getBlue() const noexcept { return b; }
//==============================================================================
/** Copies another pixel colour over this one.
@@ -646,11 +626,10 @@ public:
//==============================================================================
forcedinline uint8 getAlpha() const noexcept { return a; }
- forcedinline uint8& getAlpha() noexcept { return a; }
- forcedinline uint8 getRed() const noexcept { return 0; }
+ forcedinline uint8 getRed() const noexcept { return 0; }
forcedinline uint8 getGreen() const noexcept { return 0; }
- forcedinline uint8 getBlue() const noexcept { return 0; }
+ forcedinline uint8 getBlue() const noexcept { return 0; }
//==============================================================================
/** Copies another pixel colour over this one.
diff --git a/JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h b/JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h
index e552758b..6dd943fb 100644
--- a/JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h
+++ b/JUCE/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
{
@@ -644,7 +640,6 @@ namespace EdgeTableFillers
const Image::BitmapData& destData;
PixelType* linePixels;
PixelARGB sourceColour;
- PixelRGB filler [4];
bool areRGBComponentsEqual;
forcedinline PixelType* getPixel (const int x) const noexcept
@@ -659,43 +654,8 @@ namespace EdgeTableFillers
forcedinline void replaceLine (PixelRGB* dest, const 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)
- {
- const int* const intFiller = reinterpret_cast<const int*> (filler);
-
- while (width > 8 && (((pointer_sized_int) dest) & 7) != 0)
- {
- dest->set (colour);
- ++dest;
- --width;
- }
-
- while (width > 4)
- {
- int* 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;
- }
- }
- }
+ 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))
--
2.21.0

View File

@@ -3,7 +3,7 @@ HOMEPAGE = "http://tytel.org/helm/"
LICENSE = "GPLv3"
LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
inherit qemu-ext distro_features_check gtk-icon-cache pack_audio_plugins
inherit dos2unix qemu-ext distro_features_check gtk-icon-cache pack_audio_plugins
REQUIRED_DISTRO_FEATURES = "x11"
@@ -25,6 +25,7 @@ SRC_URI += " \
file://0001-do-not-create-ttl-files-it-won-t-work-fo-cross.patch \
file://0002-set-VECTORIZE_LOOP-for-gcc.patch \
file://0003-use-single-precision-floats-it-performs-much-better.patch \
file://0004-Fix-build-with-gcc9.patch \
"
SRCREV = "927d2ed27f71a735c3ff2a1226ce3129d1544e7e"
PV = "0.9.0"