commit:     29078f3a48e0ec0f8703614bf90c7e0290ce0de9
Author:     Brahmajit Das <brahmajit.xyz <AT> gmail <DOT> com>
AuthorDate: Tue Jun  6 17:20:09 2023 +0000
Commit:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
CommitDate: Sat Jun 17 14:23:50 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=29078f3a

x11-misc/piedock: -Wregister fix

ISO C++17 does not allow register storage class specifier

Also fixes non-constant-expression cannot be narrowed

Closes: https://bugs.gentoo.org/898888
Signed-off-by: Brahmajit Das <brahmajit.xyz <AT> gmail.com>
Closes: https://github.com/gentoo/gentoo/pull/31328
Signed-off-by: Joonas Niilola <juippis <AT> gentoo.org>

 .../piedock-1.6.9-clang16-register-narrowing.diff  | 108 +++++++++++++++++++++
 ...iedock-1.6.9.ebuild => piedock-1.6.9-r1.ebuild} |   5 +-
 2 files changed, 111 insertions(+), 2 deletions(-)

diff --git 
a/x11-misc/piedock/files/piedock-1.6.9-clang16-register-narrowing.diff 
b/x11-misc/piedock/files/piedock-1.6.9-clang16-register-narrowing.diff
new file mode 100644
index 000000000000..b32832f10e10
--- /dev/null
+++ b/x11-misc/piedock/files/piedock-1.6.9-clang16-register-narrowing.diff
@@ -0,0 +1,108 @@
+# Fix build with clang 16. There were two main issues:
+# 1. Usage of regiter keyword, which has been removed since C++17
+# 2. Non-constant-expression cannot be narrowed
+# This patch fixes both the issues.
+# Bug: https://bugs.gentoo.org/898888
+--- a/src/Blender.cpp
++++ b/src/Blender.cpp
+@@ -147,20 +147,20 @@ void Blender::blendInto32Bit(Details &details) {
+                               a >>= 24;
+                               mod = alphaMax / static_cast<double>(a);
+ 
+-                              register int d = (*dest) & 0xff;
+-                              register int blue = (*src) & 0xff;
++                              int d = (*dest) & 0xff;
++                              int blue = (*src) & 0xff;
+                               blue -= d;
+                               blue /= mod;
+                               blue += d;
+ 
+                               d = (*dest>>8) & 0xff;
+-                              register int green = (*src >> 8) & 0xff;
++                              int green = (*src >> 8) & 0xff;
+                               green -= d;
+                               green /= mod;
+                               green += d;
+ 
+                               d = (*dest >> 16) & 0xff;
+-                              register int red = (*src >> 16) & 0xff;
++                              int red = (*src >> 16) & 0xff;
+                               red -= d;
+                               red /= mod;
+                               red += d;
+@@ -282,9 +282,9 @@ void Blender::blendInto16Bit(Details &details) {
+                               src += 4;
+                               dest += 2;
+                       } else if (a == 0xff && !useGlobalAlpha) {
+-                              register int blue = *(src++);
+-                              register int green = *(src++);
+-                              register int red = *(src++);
++                              int blue = *(src++);
++                              int green = *(src++);
++                              int red = *(src++);
+ 
+                               *(reinterpret_cast<uint16_t *>(dest)) =
+                                       static_cast<uint16_t>((blue & 0xf8) >> 
3) |
+@@ -297,21 +297,21 @@ void Blender::blendInto16Bit(Details &details) {
+                               mod = alphaMax/static_cast<double>(a);
+ 
+                               uint16_t pixel = *(reinterpret_cast<uint16_t 
*>(dest));
+-                              register int db = (pixel << 3) & 0xf8;
+-                              register int dg = (pixel >> 3) & 0xf8;
+-                              register int dr = (pixel >> 8) & 0xf8;
++                              int db = (pixel << 3) & 0xf8;
++                              int dg = (pixel >> 3) & 0xf8;
++                              int dr = (pixel >> 8) & 0xf8;
+ 
+-                              register int blue = *src++;
++                              int blue = *src++;
+                               blue -= db;
+                               blue /= mod;
+                               blue += db;
+ 
+-                              register int green = *src++;
++                              int green = *src++;
+                               green -= dg;
+                               green /= mod;
+                               green += dg;
+ 
+-                              register int red = *src++;
++                              int red = *src++;
+                               red -= dr;
+                               red /= mod;
+                               red += dr;
+--- a/src/Cartouche.cpp
++++ b/src/Cartouche.cpp
+@@ -110,7 +110,7 @@ void Cartouche::drawRoundedRectangle(
+               bottom - radius - 1,
+               right - radius - 1,
+               getBytesPerLine(),
+-              color,
++              static_cast<int>( color ),
+               getData() + top * getBytesPerLine()
+       };
+ 
+--- a/src/Settings.cpp
++++ b/src/Settings.cpp
+@@ -614,7 +614,7 @@ void Settings::load(Display *d) {
+                                               !((*ki).modifier & (*mi))) {
+                                       Trigger trigger = {
+                                               (*ki).modifier | (*mi),
+-                                              (*ki).keySym,
++                                              static_cast<unsigned int>( 
(*ki).keySym ),
+                                               (*ki).menuName,
+                                               (*ki).eventMask
+                                       };
+--- a/src/WildcardCompare.cpp
++++ b/src/WildcardCompare.cpp
+@@ -91,8 +91,8 @@ const bool WildcardCompare::match(
+                                       return false;
+                               }
+                       } else {
+-                              register unsigned char p = *pattern;
+-                              register unsigned char l = *literal;
++                              unsigned char p = *pattern;
++                              unsigned char l = *literal;
+ 
+                               if (p > 64 && p < 91) {
+                                       p += 32;

diff --git a/x11-misc/piedock/piedock-1.6.9.ebuild 
b/x11-misc/piedock/piedock-1.6.9-r1.ebuild
similarity index 88%
rename from x11-misc/piedock/piedock-1.6.9.ebuild
rename to x11-misc/piedock/piedock-1.6.9-r1.ebuild
index cd38c36006d0..f458b11594b0 100644
--- a/x11-misc/piedock/piedock-1.6.9.ebuild
+++ b/x11-misc/piedock/piedock-1.6.9-r1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2022 Gentoo Authors
+# Copyright 1999-2023 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
@@ -26,7 +26,7 @@ RDEPEND="
        x11-libs/libXmu
        x11-libs/libXrender
        gtk? (
-               dev-libs/atk
+               >=app-accessibility/at-spi2-core-2.46.0
                dev-libs/glib
                x11-libs/gdk-pixbuf
                x11-libs/gtk+:2
@@ -40,6 +40,7 @@ PATCHES=(
        "${FILESDIR}"/${PN}-1.6.1-signals.patch
        "${FILESDIR}"/${PN}-1.6.9-freetype_pkgconfig.patch
        "${FILESDIR}"/${PN}-1.6.9-gcc12-time.patch
+       "${FILESDIR}"/${PN}-1.6.9-clang16-register-narrowing.diff
 )
 
 src_prepare() {

Reply via email to