[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#41360] [PATCH v3 4/9] gnu: java-openjfx-build: Fix openjfx-swing co
From: |
Alexey Abramov |
Subject: |
[bug#41360] [PATCH v3 4/9] gnu: java-openjfx-build: Fix openjfx-swing component build for JDKu8 |
Date: |
Sat, 30 May 2020 19:09:46 +0200 |
* gnu/packages/java.scm (java-openjfx-build)[source]: Use it.
* gnu/packages/patches/java-openjfx-build-swing-JFXPanel-JDK8.patch:
New file.
* gnu/local.mk (dist_patch_DATA): Add it.
Signed-off-by: Alexey Abramov <levenson@mmer.org>
---
gnu/local.mk | 1 +
gnu/packages/java.scm | 3 +-
...va-openjfx-build-swing-JFXPanel-JDK8.patch | 60 +++++++++++++++++++
3 files changed, 63 insertions(+), 1 deletion(-)
create mode 100644
gnu/packages/patches/java-openjfx-build-swing-JFXPanel-JDK8.patch
diff --git a/gnu/local.mk b/gnu/local.mk
index cbf0a20a9e..e15554f1c2 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1111,6 +1111,7 @@ dist_patch_DATA =
\
%D%/packages/patches/java-commons-collections-fix-java8.patch \
%D%/packages/patches/java-jeromq-fix-tests.patch \
%D%/packages/patches/java-openjfx-build-jdk_version.patch \
+ %D%/packages/patches/java-openjfx-build-swing-JFXPanel-JDK8.patch \
%D%/packages/patches/java-powermock-fix-java-files.patch \
%D%/packages/patches/java-simple-xml-fix-tests.patch \
%D%/packages/patches/java-svg-salamander-Fix-non-det.patch \
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 9d73d9a7e8..938fc0695c 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -2501,7 +2501,8 @@ new Date();"))
(sha256
(base32
"0yg38mwpivswccv9n96k06x3iv82i4px1a9xg9l8dswzwmfj259f"))
- (patches (search-patches
"java-openjfx-build-jdk_version.patch"))))
+ (patches (search-patches "java-openjfx-build-jdk_version.patch"
+
"java-openjfx-build-swing-JFXPanel-JDK8.patch"))))
(build-system ant-build-system)
(arguments
`(#:jar-name "java-openjfx.jar"
diff --git a/gnu/packages/patches/java-openjfx-build-swing-JFXPanel-JDK8.patch
b/gnu/packages/patches/java-openjfx-build-swing-JFXPanel-JDK8.patch
new file mode 100644
index 0000000000..b540048621
--- /dev/null
+++ b/gnu/packages/patches/java-openjfx-build-swing-JFXPanel-JDK8.patch
@@ -0,0 +1,60 @@
+Subject: [PATCH] java-openjfx-build: Cannot compile JFXPanel with JDK 8
+
+In JDKu9 getDefaultScale method was removed and sun.java2d.SurfaceData class
now
+has separate getDefaultScaleX() and getDefaultScaleY() methods. See
+https://bugs.openjdk.java.net/browse/JDK-8073320 for more info.
+
+Backport the missing port to build openjfx-swing package using JDKu8. For more
+info please see https://bugs.openjdk.java.net/browse/JDK-8149967
+
+---
+ .../java/javafx/embed/swing/JFXPanel.java | 20 ++++++++++++++++++-
+ 1 file changed, 19 insertions(+), 1 deletion(-)
+
+diff --git a/modules/swing/src/main/java/javafx/embed/swing/JFXPanel.java
b/modules/swing/src/main/java/javafx/embed/swing/JFXPanel.java
+index 97515e2290..614ed656b9 100644
+--- a/modules/swing/src/main/java/javafx/embed/swing/JFXPanel.java
++++ b/modules/swing/src/main/java/javafx/embed/swing/JFXPanel.java
+@@ -81,6 +81,7 @@ import sun.awt.AppContext;
+ import sun.awt.CausedFocusEvent;
+ import sun.awt.SunToolkit;
+ import sun.java2d.SunGraphics2D;
++import sun.java2d.SurfaceData;
+ import sun.util.logging.PlatformLogger;
+ import sun.util.logging.PlatformLogger.Level;
+
+@@ -681,6 +682,23 @@
+ e.getCaret().getInsertionIndex());
+ }
+
++ // FIXME: once we move to JDK 9 as the boot JDK we should remove the
++ // reflection code from this method, consider changing it to
++ // use double rather than int, and account for the possibility of
++ // a different scale factor in X and Y.
++ private int getDefaultScale(SurfaceData surfaceData) {
++ /*
++ double scale = surfaceData.getDefaultScaleX();
++ */
++ double scale = 1;
++ try {
++ Method meth = SurfaceData.class.getMethod("getDefaultScaleX");
++ scale = (Double)meth.invoke(surfaceData);
++ } catch (Exception ex) {
++ }
++
++ return (int)Math.round(scale);
++ }
+
+ /**
+ * Overrides the {@link javax.swing.JComponent#paintComponent(Graphics)}
+@@ -720,7 +738,7 @@ public class JFXPanel extends JComponent {
+
+ int newScaleFactor = scaleFactor;
+ if (g instanceof SunGraphics2D) {
+- newScaleFactor =
((SunGraphics2D)g).surfaceData.getDefaultScale();
++ newScaleFactor =
getDefaultScale(((SunGraphics2D)g).surfaceData);
+ }
+ if (scaleFactor != newScaleFactor) {
+ resizePixelBuffer(newScaleFactor);
+--
+2.24.1
--
2.26.2
- [bug#41360] [PATCH v2 7/9] gnu: java-openjfx-controls: Add new variable., (continued)
- [bug#41360] [PATCH 09/12] gnu: java-openjfx-web: Add new variable., Alexey Abramov, 2020/05/30
- [bug#41360] [PATCH 03/12] gnu: java-openjfx-graphics: Implement a complete compilation., Alexey Abramov, 2020/05/30
- [bug#41360] [PATCH v3 1/9] gnu: java-openjfx-build: Add helpful patch., Alexey Abramov, 2020/05/30
- [bug#41360] [PATCH v3 2/9] gnu: java-openjfx-build: Fix indentation., Alexey Abramov, 2020/05/30
- [bug#41360] [PATCH v3 6/9] gnu: java-openjfx-swt: Add new variable., Alexey Abramov, 2020/05/30
- [bug#41360] [PATCH v3 7/9] gnu: java-openjfx-controls: Add new variable., Alexey Abramov, 2020/05/30
- [bug#41360] [PATCH v3 4/9] gnu: java-openjfx-build: Fix openjfx-swing component build for JDKu8,
Alexey Abramov <=
- [bug#41360] [PATCH v3 9/9] gnu: java-openjfx-web: Add new variable., Alexey Abramov, 2020/05/30
- [bug#41360] [PATCH v3 8/9] gnu: java-openjfx-build: Prepare a patch to build openjfx-web., Alexey Abramov, 2020/05/30
- [bug#41360] [PATCH v3 5/9] gnu: java-openjfx-swing: Add new variable., Alexey Abramov, 2020/05/30
- [bug#41360] [PATCH v3 3/9] gnu: java-openjfx-graphics: Implement a complete compilation., Alexey Abramov, 2020/05/30