[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#39745] [v3 1/2] gnu: java-openjfx-build: Fix openjfx-swing componen
From: |
Alexey Abramov |
Subject: |
[bug#39745] [v3 1/2] gnu: java-openjfx-build: Fix openjfx-swing component build for JDKu8 |
Date: |
Mon, 9 Mar 2020 17:36:11 +0100 |
* gnu/packages/java.scm (java-openjfx-build)[source]: Use it.
*
gnu/packages/patches/java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch:
New file.
* gnu/local.mk (dist_patch_DATA): Add it.
---
gnu/local.mk | 1 +
gnu/packages/java.scm | 3 +-
...ld-swing-compile-JFXPanel-with-JDK-8.patch | 64 +++++++++++++++++++
3 files changed, 67 insertions(+), 1 deletion(-)
create mode 100644
gnu/packages/patches/java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch
diff --git a/gnu/local.mk b/gnu/local.mk
index 0bcbde7301..7e4554198c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1034,6 +1034,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-get_guix_jdk_version.patch \
+
%D%/packages/patches/java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.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 349b22419a..21217b0211 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -2363,7 +2363,8 @@ new Date();"))
(sha256
(base32
"0yg38mwpivswccv9n96k06x3iv82i4px1a9xg9l8dswzwmfj259f"))
- (patches (search-patches
"java-openjfx-build-get_guix_jdk_version.patch"))))
+ (patches (search-patches
"java-openjfx-build-get_guix_jdk_version.patch"
+
"java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch"))))
(build-system ant-build-system)
(arguments
`(#:jar-name "java-openjfx.jar"
diff --git
a/gnu/packages/patches/java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch
b/gnu/packages/patches/java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch
new file mode 100644
index 0000000000..8f222e1780
--- /dev/null
+++
b/gnu/packages/patches/java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch
@@ -0,0 +1,64 @@
+From 173e65937d9e76872df51f7ba39c9d58986dc38f Mon Sep 17 00:00:00 2001
+From: Alexey Abramov <address@hidden>
+Date: Fri, 3 Jan 2020 01:17:45 +0100
+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.24.1
- [bug#39745] [v3 1/2] gnu: java-openjfx-build: Fix openjfx-swing component build for JDKu8,
Alexey Abramov <=