* gnu/packages/music.scm (helm)[origin]: Add patch. * gnu/packages/patches/helm-fix-gcc-9-build.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it.
		
			
				
	
	
		
			140 lines
		
	
	
	
		
			6.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			140 lines
		
	
	
	
		
			6.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From cb611a80bd5a36d31bfc31212ebbf79aa86c6f08 Mon Sep 17 00:00:00 2001
 | |
| From: jikstra <jikstra@disroot.org>
 | |
| Date: Tue, 20 Aug 2019 03:00:51 +0200
 | |
| Subject: [PATCH] Backport
 | |
|  https://github.com/WeAreROLI/JUCE/commit/4e0adb2af8b424c43d22bd431011c9a6c57d36b6
 | |
|  to the bundled JUCE framework to make helm compile on gcc 9.1 again
 | |
| 
 | |
| ---
 | |
|  .../juce_graphics/colour/juce_PixelFormats.h  | 25 +---------
 | |
|  .../native/juce_RenderingHelpers.h            | 48 +------------------
 | |
|  2 files changed, 4 insertions(+), 69 deletions(-)
 | |
| 
 | |
| diff --git a/JUCE/modules/juce_graphics/colour/juce_PixelFormats.h b/JUCE/modules/juce_graphics/colour/juce_PixelFormats.h
 | |
| index 9be9ba09c..3535eab80 100644
 | |
| --- a/JUCE/modules/juce_graphics/colour/juce_PixelFormats.h
 | |
| +++ b/JUCE/modules/juce_graphics/colour/juce_PixelFormats.h
 | |
| @@ -105,23 +105,9 @@ class JUCE_API  PixelARGB
 | |
|  
 | |
|      //==============================================================================
 | |
|      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 +326,6 @@ class JUCE_API  PixelARGB
 | |
|      {
 | |
|          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
 | |
| @@ -429,10 +412,6 @@ class JUCE_API  PixelRGB
 | |
|      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.
 | |
|  
 | |
| diff --git a/JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h b/JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h
 | |
| index 1c4cd31ef..29519cb5a 100644
 | |
| --- a/JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h
 | |
| +++ b/JUCE/modules/juce_graphics/native/juce_RenderingHelpers.h
 | |
| @@ -581,18 +581,10 @@ namespace EdgeTableFillers
 | |
|              : destData (image), sourceColour (colour)
 | |
|          {
 | |
|              if (sizeof (PixelType) == 3 && destData.pixelStride == sizeof (PixelType))
 | |
| -            {
 | |
|                  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
 | |
| -            {
 | |
|                  areRGBComponentsEqual = false;
 | |
| -            }
 | |
|          }
 | |
|  
 | |
|          forcedinline void setEdgeTableYPos (const int y) noexcept
 | |
| @@ -643,7 +635,6 @@ namespace EdgeTableFillers
 | |
|          const Image::BitmapData& destData;
 | |
|          PixelType* linePixels;
 | |
|          PixelARGB sourceColour;
 | |
| -        PixelRGB filler [4];
 | |
|          bool areRGBComponentsEqual;
 | |
|  
 | |
|          forcedinline PixelType* getPixel (const int x) const noexcept
 | |
| @@ -658,43 +649,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))
 |