unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
From: Alexey Abramov <levenson@mmer.org>
To: 39745@debbugs.gnu.org
Cc: Alexey Abramov <levenson@mmer.org>
Subject: [bug#39745] [v4 1/2] gnu: java-openjfx-build: Fix openjfx-swing component build for JDKu8
Date: Wed, 11 Mar 2020 11:36:16 +0100	[thread overview]
Message-ID: <20200311103617.185173-1-levenson@mmer.org> (raw)
In-Reply-To: <20200222201755.50425-4-levenson@mmer.org>

* 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 | 63 +++++++++++++++++++
 3 files changed, 66 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 476aa00511..010247be3b 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1033,6 +1033,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 6c1c2dba6c..768fbf09a1 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..363ce9509b
--- /dev/null
+++ b/gnu/packages/patches/java-openjfx-build-swing-compile-JFXPanel-with-JDK-8.patch
@@ -0,0 +1,63 @@
+From 173e65937d9e76872df51f7ba39c9d58986dc38f Mon Sep 17 00:00:00 2001
+From: Alexey Abramov <levenson@mmer.org>
+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

  parent reply	other threads:[~2020-03-11 10:37 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-22 20:17 [bug#39742] [PATCH 1/7] gnu: java-openjfx-build: Add helpful patch Alexey Abramov
2020-02-22 20:17 ` [bug#39744] [PATCH 2/7] gnu: java-openjfx-build: Fix indentation Alexey Abramov
2020-02-22 20:17 ` [bug#39747] [PATCH 3/7] gnu: java-openjfx-graphics: Implement a complete compilation Alexey Abramov
2020-03-04  3:00   ` Leo Famulari
2020-03-09 13:08     ` levenson
2020-03-09 12:46   ` [bug#39747] [v2] " Alexey Abramov
2020-02-22 20:17 ` [bug#39745] [PATCH 4/7] gnu: java-openjfx-swing: Add new variable Alexey Abramov
2020-03-04  3:04   ` Leo Famulari
2020-03-09 22:08     ` [bug#39741] " levenson
2020-03-09 16:15   ` [bug#39745] [v2] gnu: java-openjfx-build: Fix openjfx-swing component build for JDKu8 Alexey Abramov
2020-03-09 16:36   ` [bug#39745] [v3 1/2] " Alexey Abramov
2020-03-09 16:36     ` [bug#39745] [v3 2/2] gnu: java-openjfx-swing: Add new variable Alexey Abramov
2020-03-11 10:36   ` Alexey Abramov [this message]
2020-03-11 10:36     ` [bug#39745] [v4 " Alexey Abramov
2020-02-22 20:17 ` [bug#39741] [PATCH 5/7] gnu: java-openjfx-swt: " Alexey Abramov
2020-03-09 16:41   ` [bug#39741] [v2] " Alexey Abramov
2020-02-22 20:17 ` [bug#39743] [PATCH 6/7] gnu: java-openjfx-controls: " Alexey Abramov
2020-03-09 16:54   ` [bug#39743] [v2] " Alexey Abramov
2020-02-22 20:17 ` [bug#39746] [PATCH 7/7] gnu: java-openjfx-web: " Alexey Abramov
2020-03-04  3:07   ` Leo Famulari
2020-03-09 22:13     ` [bug#39741] " levenson
2020-03-17 22:17       ` Tobias Geerinckx-Rice via Guix-patches via
2020-03-09 21:41   ` [bug#39746] [v2 1/2] gnu: java-openjfx-build: Prepare a patch to build openjfx-web Alexey Abramov
2020-03-09 21:41     ` [bug#39746] [v2 2/2] gnu: java-openjfx-web: Add new variable Alexey Abramov
2020-03-14  6:10   ` [bug#39746] [v3 1/2] gnu: java-openjfx-build: Prepare a patch to build openjfx-web Alexey Abramov
2020-03-14  6:10     ` [bug#39746] [v3 2/2] gnu: java-openjfx-web: Add new variable Alexey Abramov
2020-03-04  2:56 ` [bug#39742] [PATCH 1/7] gnu: java-openjfx-build: Add helpful patch Leo Famulari
2020-03-05 20:42   ` Alexey Abramov
2020-03-05 19:09 ` Björn Höfling
2020-03-05 20:10   ` Alexey Abramov
2020-03-05 21:35   ` Björn Höfling
2020-03-08 19:40 ` [bug#39742] [v2] " Alexey Abramov
2020-03-15 18:19   ` bug#39742: " Leo Famulari
2020-03-17 21:12     ` [bug#39742] " Björn Höfling

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200311103617.185173-1-levenson@mmer.org \
    --to=levenson@mmer.org \
    --cc=39745@debbugs.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).