[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#41360] [PATCH v4 02/12] gnu: java-openjfx-build: Fix openjfx-swing
From: |
Alexey Abramov |
Subject: |
[bug#41360] [PATCH v4 02/12] gnu: java-openjfx-build: Fix openjfx-swing component build for JDKu8 |
Date: |
Sun, 7 Jun 2020 17:55:08 +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 | 4 +-
...va-openjfx-build-swing-JFXPanel-JDK8.patch | 60 +++++++++++++++++++
3 files changed, 64 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 ae8a2275f7..5fe0eeadda 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1109,6 +1109,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 fb5d754a60..6e7f92c859 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -2501,7 +2501,9 @@ 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 v4 00/12] Improve OpenJFX and friends packages, Alexey Abramov, 2020/06/07
- [bug#41360] [PATCH v4 03/12] gnu: java-openjfx-swing: Add new variable., Alexey Abramov, 2020/06/07
- [bug#41360] [PATCH v4 02/12] gnu: java-openjfx-build: Fix openjfx-swing component build for JDKu8,
Alexey Abramov <=
- [bug#41360] [PATCH v4 01/12] gnu: java-openjfx-graphics: Implement a complete compilation., Alexey Abramov, 2020/06/07
- [bug#41360] [PATCH v4 04/12] gnu: java-openjfx-swt: Add new variable., Alexey Abramov, 2020/06/07
- [bug#41360] [PATCH v4 05/12] gnu: java-openjfx-controls: Add new variable., Alexey Abramov, 2020/06/07
- [bug#41360] [PATCH v4 06/12] gnu: java-openjfx-build: Patch DumpRenderTree for the web component., Alexey Abramov, 2020/06/07
- [bug#41360] [PATCH v4 09/12] gnu: java-openjfx-build: Fix web component linkage., Alexey Abramov, 2020/06/07
- [bug#41360] [PATCH v4 07/12] gnu: java-openjfx-build: Do not use an embedded 3rd party libraries., Alexey Abramov, 2020/06/07
- [bug#41360] [PATCH v4 11/12] gnu: java-openjfx-build: Ensure use of system provided libraries., Alexey Abramov, 2020/06/07
- [bug#41360] [PATCH v4 08/12] gnu: java-openjfx-build: Fix web component compilation with ICU 59+., Alexey Abramov, 2020/06/07