diff options
author | Tobias Kortkamp <tobik@FreeBSD.org> | 2019-07-23 05:34:21 +0000 |
---|---|---|
committer | Tobias Kortkamp <tobik@FreeBSD.org> | 2019-07-23 05:34:21 +0000 |
commit | 0455f383ae2b2a352d45fb1f7256ee0cb9cc3027 (patch) | |
tree | 58737cc1ec13a905f0f91a64e6a0b12c8713bb93 /java | |
parent | 94cb2dcddad264910f67fb6927f72937fb9d44fd (diff) | |
download | ports-0455f383ae2b2a352d45fb1f7256ee0cb9cc3027.tar.gz ports-0455f383ae2b2a352d45fb1f7256ee0cb9cc3027.zip |
java/openjfx8-devel: Update to 8u202-b07
- Also update devel/gradle to the latest version on the 4.x branch.
Gradle >=4.8<5 is required to build OpenJFX now.
- GStreamer-lite is now based on GStreamer 1.0, so update the sndio
backend accordingly.
- Add a bunch of missing platform checks which will make it
actually use system fonts as configured.
OpenJFX 8 is unmaintained upstream and has been for a while [1].
Deprecate the port as noone seems to have stepped up to take over
maintainership. No expiration date since this port has multiple
consumers and there is no alternative.
[1] https://mail.openjdk.java.net/pipermail/openjfx-dev/2018-December/023007.html
PR: 237443
Notes
Notes:
svn path=/head/; revision=507200
Diffstat (limited to 'java')
42 files changed, 1039 insertions, 1026 deletions
diff --git a/java/openjfx8-devel/Makefile b/java/openjfx8-devel/Makefile index 18f535a09ee1..5e6a2db083b2 100644 --- a/java/openjfx8-devel/Makefile +++ b/java/openjfx8-devel/Makefile @@ -2,8 +2,7 @@ # $FreeBSD$ PORTNAME= openjfx8 -DISTVERSION= 8u172-b11 -PORTREVISION= 7 +DISTVERSION= 8u202-b07 PORTEPOCH= 1 CATEGORIES= java x11-toolkits devel MASTER_SITES= https://github.com/t6/openjfx/releases/download/release/ \ @@ -16,23 +15,31 @@ COMMENT= JavaFX SDK overlay for OpenJDK 8 LICENSE= GPLv2 LICENSE_FILE= ${WRKSRC}/LICENSE +DEPRECATED= No longer maintained upstream ONLY_FOR_ARCHS= amd64 i386 BUILD_DEPENDS= apache-ant>0:devel/apache-ant \ antlr3>0:devel/antlr3 \ - gradle4>=4.0:devel/gradle4 \ + gradle4>=4.8:devel/gradle4 \ ${JAVALIBDIR}/junit.jar:java/junit LIB_DEPENDS= libfontconfig.so:x11-fonts/fontconfig \ libfreetype.so:print/freetype2 -USES= gettext-runtime gl gnome jpeg pkgconfig sqlite +USES= gettext-runtime gl gnome jpeg localbase:ldflags pkgconfig sqlite USE_GL= gl -USE_GNOME= atk cairo gdkpixbuf2 glib20 gtk20 pango +USE_GNOME= atk cairo gdkpixbuf2 glib20 gtk20 gtk30 pango USE_JAVA= yes JAVA_VERSION= 1.8 USE_LDCONFIG= yes USE_XORG= x11 xtst xxf86vm +CFLAGS+= -Wno-unused-command-line-argument + +WRKSRC= ${WRKDIR}/rt-${DISTVERSION} + +PLIST_SUB= ARCH=${ARCH} \ + JAVA_HOME=${JAVA_HOME} + OPTIONS_DEFINE= MEDIA SWT TEST WEBKIT OPTIONS_DEFAULT= MEDIA WEBKIT OPTIONS_SUB= yes @@ -53,8 +60,8 @@ TEST_USES= display:test TEST_VARS= AWT_TEST=true FULL_TEST=true # Gradle calls CMake during the build -WEBKIT_BUILD_DEPENDS= cmake:devel/cmake WEBKIT_IMPLIES= MEDIA +WEBKIT_BUILD_DEPENDS= cmake:devel/cmake WEBKIT_LIB_DEPENDS= libicui18n.so:devel/icu WEBKIT_USES= bison compiler:c++14-lang gmake gperf perl5 python:2.7,build WEBKIT_USE= GNOME=libxslt,libxml2 \ @@ -64,13 +71,10 @@ WEBKIT_USE= GNOME=libxslt,libxml2 \ WEBKIT_VARS= RUBY_NO_RUN_DEPENDS=yes COMPILE_WEBKIT=true # Move Gradle's home below ${WRKDIR} instead of using ${HOME}/.gradle -GRADLE_ENV= GRADLE_USER_HOME=${WRKDIR}/gradle-home \ - CC=${CC} CXX=${CXX} -GRADLE_RUN= ${SETENV} ${GRADLE_ENV} gradle4 --no-daemon - -PLIST_SUB= ARCH=${ARCH} \ - JAVA_HOME=${JAVA_HOME} -WRKSRC= ${WRKDIR}/rt-${DISTVERSION} +_GRADLE_ENV= CC=${WRKDIR}/bin/ccwrapper \ + CXX=${WRKDIR}/bin/cxxwrapper \ + GRADLE_USER_HOME=${WRKDIR}/gradle-home +_GRADLE_RUN= ${SETENV} ${_GRADLE_ENV} gradle4 --no-daemon # NOTE: This port won't build if ${JAVA_HOME}/jre/lib/ext/jfxrt.jar # already exists on your system. This is not a problem in Poudriere @@ -87,14 +91,21 @@ pre-patch: ${WRKSRC}/modules/media/src/main/native/gstreamer/projects/bsd post-patch: - @${CP} ${FILESDIR}/bsd.gradle ${WRKSRC}/buildSrc + @${MKDIR} ${WRKDIR}/bin + @${PRINTF} '#!/bin/sh\nexec ${CC} ${CFLAGS} ${LDFLAGS} "$$@"\n' > ${WRKDIR}/bin/ccwrapper + @${PRINTF} '#!/bin/sh\nexec ${CXX} ${CXXFLAGS} ${LDFLAGS} "$$@"\n' > ${WRKDIR}/bin/cxxwrapper + @${CHMOD} +x ${WRKDIR}/bin/ccwrapper ${WRKDIR}/bin/cxxwrapper + @${SED} -e 's@/linux@/freebsd@g' -e 's@-DLINUX@-DFREEBSD@g' -e 's@LINUX@BSD@g' \ + -e 's@linux_@bsd_@g' -e 's@"-static-libgcc", "-static-libstdc++",@@g' \ + -e 's@"gcc"@"${WRKDIR}/bin/ccwrapper"@g' -e 's@"g\+\+"@"${WRKDIR}/bin/cxxwrapper"@g' \ + ${WRKSRC}/buildSrc/linux.gradle > ${WRKSRC}/buildSrc/bsd.gradle # Add a *BSD native audio sink to GStreamer-lite instead of using the # bundled ALSA sink. Currently we add an sndio sink, but this is an extension # point for eventually adding an OSS backend (or others) as an option as well. # If you add a new one make sure it registers itself as "bsdaudiosink" as defined # in modules/media/src/main/native/jfxmedia/platform/gstreamer/GstPipelineFactory.cpp @${MKDIR} ${WRKSRC}/modules/media/src/main/native/gstreamer/gstreamer-lite/gst-plugins-base/ext/bsdaudio - @${CP} ${FILESDIR}/gstsndio.c ${FILESDIR}/sndiosink.c ${FILESDIR}/sndiosink.h \ + @${CP} ${FILESDIR}/gstsndio.* ${FILESDIR}/sndiosink.* \ ${WRKSRC}/modules/media/src/main/native/gstreamer/gstreamer-lite/gst-plugins-base/ext/bsdaudio @cd ${WRKSRC}/modules/media/src/main/native/gstreamer/gstreamer-lite/gst-plugins-base/ext/bsdaudio && \ ${LN} -s gstsndio.c gstbsdaudio.c && \ @@ -105,6 +116,9 @@ post-patch: # Remove bundled libraries. We use the system's versions instead. @cd ${WRKSRC}/modules/web/src/main/native/Source/ThirdParty && \ ${RM} -r icu libxml libxslt sqlite + @${RM} -r ${WRKSRC}/modules/web/src/main/native/Source/WTF/icu + @cd ${WRKSRC}/modules/media/src/main/native/gstreamer/3rd_party && \ + ${RM} -r glib libffi post-patch-SWT-off: @${RM} -r ${WRKSRC}/modules/graphics/src/main/java/com/sun/glass/ui/swt @@ -118,7 +132,7 @@ do-configure: @${ECHO_CMD} "BSD.compileSWT = ${COMPILE_SWT:Ufalse};" >> ${WRKSRC}/buildSrc/bsd.gradle do-build: - @cd ${WRKSRC} && ${GRADLE_RUN} zips + @cd ${WRKSRC} && ${_GRADLE_RUN} zips do-install: @${MKDIR} ${STAGEDIR}${JAVA_HOME} @@ -127,6 +141,6 @@ do-install: @${FIND} ${STAGEDIR}${JAVA_HOME}/jre -name '*.so' -exec ${STRIP_CMD} \{\} \; do-test-TEST-on: - @cd ${WRKSRC} && ${GRADLE_RUN} check test + @cd ${WRKSRC} && ${_GRADLE_RUN} check test .include <bsd.port.mk> diff --git a/java/openjfx8-devel/distinfo b/java/openjfx8-devel/distinfo index 8e5744eec780..7f707e3ee585 100644 --- a/java/openjfx8-devel/distinfo +++ b/java/openjfx8-devel/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1524062144 -SHA256 (openjfx8-8u172-b11.tar.gz) = 2e88966dadaa93d172a67b6bd6e9f32002ac41e5c4eabf625c143c53f4ed6391 -SIZE (openjfx8-8u172-b11.tar.gz) = 107629343 +TIMESTAMP = 1563779003 +SHA256 (openjfx8-8u202-b07.tar.gz) = ca98b6d0721a0e4b91d62672e81594c80a47cfb5ded241de50f10ade9884c400 +SIZE (openjfx8-8u202-b07.tar.gz) = 70669594 diff --git a/java/openjfx8-devel/files/bsd.gradle b/java/openjfx8-devel/files/bsd.gradle deleted file mode 100644 index 4a77f9800493..000000000000 --- a/java/openjfx8-devel/files/bsd.gradle +++ /dev/null @@ -1,257 +0,0 @@ -/* - * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -ext.BSD = [:] - -// Declare whether this particular target file applies to the current system -BSD.canBuild = IS_BSD; -if (!BSD.canBuild) return; - -// All desktop related packages should be built -BSD.compileSwing = true; -BSD.compileFXPackager = true; - -// Libraries end up in the sdk/rt/lib/$OS_ARCH directory for freebsd -BSD.libDest = "lib/$OS_ARCH" - -// Lambda for naming the generated libs -BSD.library = { name -> return "lib${name}.so" as String } - -// A set of common parameters to use for both compiling and linking -def commonFlags = [ - "-fno-strict-aliasing", "-fPIC", "-fno-omit-frame-pointer", // optimization flags - "-W", "-Wall", "-Wno-unused", "-Wno-parentheses", "-Werror=implicit-function-declaration"] // warning flags - -if (!IS_64) { - commonFlags += "-m32" -} - -// Specify the compilation parameters and link parameters -def ccFlags = [ - commonFlags, "-I$JDK_HOME/include", "-I$JDK_HOME/include/freebsd", "-c", - IS_DEBUG_NATIVE ? ["-ggdb", "-DVERBOSE"] : ["-O2", "-DNDEBUG"]].flatten() -//ccFlags.addAll(["-Wnon-virtual-dtor", "-Woverloaded-virtual", "-std=c++0x"]) -def linkFlags = ["-shared", commonFlags].flatten() - -// Create $buildDir/bsd_tools.properties file and load props from it -setupTools("bsd_tools", - { propFile -> - ByteArrayOutputStream results = new ByteArrayOutputStream(); - exec { - commandLine("pkg-config", "--cflags", "gtk+-2.0", "gthread-2.0", "xtst"); - setStandardOutput(results); - } - propFile << "cflags=" << results.toString().trim() << "\n"; - - results = new ByteArrayOutputStream(); - exec { - commandLine "pkg-config", "--libs", "gtk+-2.0", "gthread-2.0", "xtst" - standardOutput = results - } - propFile << "libs=" << results.toString().trim(); - }, - { properties -> - ccFlags.addAll(properties.getProperty("cflags").split(" ")) - linkFlags.addAll(properties.getProperty("libs").split(" ")) - } -) - -def pangoCCFlags = ["-D_ENABLE_PANGO"]; -def pangoLinkFlags = []; -setupTools("bsd_pango_tools", - { propFile -> - ByteArrayOutputStream results = new ByteArrayOutputStream(); - exec { - commandLine "pkg-config", "--cflags", "pangoft2" - standardOutput = results - } - propFile << "cflags=" << results.toString().trim() << "\n"; - - results = new ByteArrayOutputStream(); - exec { - commandLine "pkg-config", "--libs", "pangoft2" - standardOutput = results - } - propFile << "libs=" << results.toString().trim(); - }, - { properties -> - pangoCCFlags.addAll(properties.getProperty("cflags").split(" ")) - pangoLinkFlags.addAll(properties.getProperty("libs").split(" ")) - } -) - -def freetypeCCFlags = [ext.IS_COMPILE_PANGO ? "-D_ENABLE_PANGO" : - ext.IS_COMPILE_HARFBUZZ ? "-D_ENABLE_HARFBUZZ" : ""] -def freetypeLinkFlags = [] -setupTools("bsd_freetype_tools", - { propFile -> - ByteArrayOutputStream results = new ByteArrayOutputStream(); - exec { - commandLine "pkg-config", "--cflags", "freetype2" - standardOutput = results - } - propFile << "cflags=" << results.toString().trim() << "\n"; - - results = new ByteArrayOutputStream(); - exec { - commandLine "pkg-config", "--libs", "freetype2" - standardOutput = results - } - propFile << "libs=" << results.toString().trim(); - }, - { properties -> - freetypeCCFlags.addAll(properties.getProperty("cflags").split(" ")) - freetypeLinkFlags.addAll(properties.getProperty("libs").split(" ")) - } -) - -def compiler = IS_COMPILE_PARFAIT ? "parfait-gcc" : "cc"; -def linker = IS_COMPILE_PARFAIT ? "parfait-g++" : "c++"; - -BSD.glass = [:] -BSD.glass.javahInclude = [ - "com/sun/glass/events/**", - "com/sun/glass/ui/*", - "com/sun/glass/ui/gtk/*"] -BSD.glass.nativeSource = file("modules/graphics/src/main/native-glass/gtk") -BSD.glass.compiler = compiler -BSD.glass.ccFlags = [ccFlags, "-Werror"].flatten() -BSD.glass.linker = linker -BSD.glass.linkFlags = [linkFlags].flatten() -BSD.glass.lib = "glass" - -BSD.decora = [:] -BSD.decora.compiler = compiler -BSD.decora.ccFlags = [ccFlags, "-ffast-math"].flatten() -BSD.decora.linker = linker -BSD.decora.linkFlags = [linkFlags].flatten() -BSD.decora.lib = "decora_sse" - -BSD.prism = [:] -BSD.prism.javahInclude = ["com/sun/prism/impl/**/*", "com/sun/prism/PresentableState*"] -BSD.prism.nativeSource = file("modules/graphics/src/main/native-prism") -BSD.prism.compiler = compiler -BSD.prism.ccFlags = [ccFlags, "-DINLINE=inline"].flatten() -BSD.prism.linker = linker -BSD.prism.linkFlags = [linkFlags].flatten() -BSD.prism.lib = "prism_common" - -BSD.prismSW = [:] -BSD.prismSW.javahInclude = ["com/sun/pisces/**/*"] -BSD.prismSW.nativeSource = file("modules/graphics/src/main/native-prism-sw") -BSD.prismSW.compiler = compiler -BSD.prismSW.ccFlags = [ccFlags, "-DINLINE=inline"].flatten() -BSD.prismSW.linker = linker -BSD.prismSW.linkFlags = [linkFlags].flatten() -BSD.prismSW.lib = "prism_sw" - -BSD.launcher = [:] -BSD.launcher.compiler = compiler -BSD.launcher.ccFlags = ["-DJAVAARCH=\"$OS_ARCH\"", "-I$JDK_HOME/include", "-I$JDK_HOME/include/freebsd", "-c"] -BSD.launcher.linker = linker -BSD.launcher.linkFlags = ["-ldl"] -if (!IS_64) { - BSD.launcher.ccFlags += "-m32" - BSD.launcher.linkFlags += "-m32" -} - -BSD.launcherlibrary = [:] -BSD.launcherlibrary.compiler = compiler -BSD.launcherlibrary.ccFlags = ["-DJAVAARCH=\"$OS_ARCH\"", "-I$JDK_HOME/include", "-I$JDK_HOME/include/freebsd", "-c", "-fPIC"] -BSD.launcherlibrary.linker = linker -BSD.launcherlibrary.linkFlags = ["-ldl", "-lpthread", "-shared"] -if (!IS_64) { - BSD.launcherlibrary.ccFlags += "-m32" - BSD.launcherlibrary.linkFlags += "-m32" -} - -BSD.iio = [:] -BSD.iio.javahInclude = ["com/sun/javafx/iio/**/*"] -BSD.iio.nativeSource = [file("modules/graphics/src/main/native-iio")] -BSD.iio.compiler = compiler -BSD.iio.ccFlags = [ccFlags].flatten() -BSD.iio.linker = linker -BSD.iio.linkFlags = [linkFlags].flatten() -BSD.iio.linkFlags += "-ljpeg" -BSD.iio.lib = "javafx_iio" - -BSD.prismES2 = [:] -BSD.prismES2.javahInclude = ["com/sun/prism/es2/**/*"] -BSD.prismES2.nativeSource = [ - file("modules/graphics/src/main/native-prism-es2"), - file("modules/graphics/src/main/native-prism-es2/GL"), - file("modules/graphics/src/main/native-prism-es2/x11") -] -BSD.prismES2.compiler = compiler -BSD.prismES2.ccFlags = ["-DFREEBSD", ccFlags].flatten() -BSD.prismES2.linker = linker -BSD.prismES2.linkFlags = [linkFlags, "-lX11", "-lXxf86vm", "-lGL"].flatten() -BSD.prismES2.lib = "prism_es2" - -def closedDir = file("$projectDir/../rt-closed") -BSD.font = [:] -BSD.font.javahInclude = [ - "com/sun/javafx/font/**/*", - "com/sun/javafx/text/**/*"] -BSD.font.compiler = compiler -BSD.font.nativeSource = [file("modules/graphics/src/main/native-font")] -BSD.font.ccFlags = ["-DJFXFONT_PLUS", ccFlags].flatten() -BSD.font.linker = linker -BSD.font.linkFlags = [linkFlags].flatten() -BSD.font.lib = "javafx_font" - -BSD.fontT2K = [:] -BSD.fontT2K.javahInclude = ["com/sun/javafx/font/t2k/**/*"] -BSD.fontT2K.nativeSource = [ - file("$closedDir/javafx-font-t2k-native/src"), - file("$closedDir/javafx-font-t2k-native/src/layout")] -BSD.fontT2K.compiler = compiler -BSD.fontT2K.ccFlags = ["-DJFXFONT_PLUS", "-DLE_STANDALONE", ccFlags].flatten() -BSD.fontT2K.linker = linker -BSD.fontT2K.linkFlags = [linkFlags].flatten() -BSD.fontT2K.lib = "javafx_font_t2k" - -BSD.fontFreetype = [:] -BSD.fontFreetype.javahInclude = ["com/sun/javafx/font/freetype/OSFreetype.class"] -BSD.fontFreetype.nativeSource = ["src/main/native-font/freetype.c"] -BSD.fontFreetype.compiler = compiler -BSD.fontFreetype.ccFlags = ["-DJFXFONT_PLUS", ccFlags, freetypeCCFlags].flatten() -BSD.fontFreetype.linker = linker -BSD.fontFreetype.linkFlags = [linkFlags, freetypeLinkFlags].flatten() -BSD.fontFreetype.lib = "javafx_font_freetype" - -BSD.fontPango = [:] -BSD.fontPango.javahInclude = ["com/sun/javafx/font/freetype/OSPango.class"] -BSD.fontPango.nativeSource = ["src/main/native-font/pango.c"] -BSD.fontPango.compiler = compiler -BSD.fontPango.ccFlags = ["-DJFXFONT_PLUS", ccFlags, pangoCCFlags].flatten() -BSD.fontPango.linker = linker -BSD.fontPango.linkFlags = [linkFlags, pangoLinkFlags].flatten() -BSD.fontPango.lib = "javafx_font_pango" - -BSD.media = [:] -BSD.media.compiler = compiler -BSD.media.linker = linker -BSD.media.lib = "ar" diff --git a/java/openjfx8-devel/files/gstsndio.c b/java/openjfx8-devel/files/gstsndio.c index 927ccef2f5af..4ef2cf1b5fdc 100644 --- a/java/openjfx8-devel/files/gstsndio.c +++ b/java/openjfx8-devel/files/gstsndio.c @@ -1,5 +1,6 @@ /* - * Copyright (C) <2008> Jacob Meuser <jakemsr@sdf.lonestar.org> + * Copyright (C) 2008 Jacob Meuser <jakemsr@sdf.lonestar.org> + * Copyright (C) 2012 Alexandre Ratchov <alex@caoua.org> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -17,26 +18,379 @@ #ifdef HAVE_CONFIG_H #include "config.h" #endif -#include "sndiosink.h" + +#include <stdio.h> +#include "gstsndio.h" GST_DEBUG_CATEGORY (gst_sndio_debug); +#define GST_CAT_DEFAULT gst_sndio_debug + +GType gst_sndiosink_get_type (void); gboolean plugin_init_alsa (GstPlugin * plugin) { - if (!gst_element_register (plugin, "bsdaudiosink", GST_RANK_PRIMARY, - GST_TYPE_SNDIOSINK)) { + GST_DEBUG_CATEGORY_INIT (gst_sndio_debug, "sndio", 0, "sndio plugins"); + + /* prefer sndiosink over pulsesink (GST_RANK_PRIMARY + 10) */ + if (!gst_element_register (plugin, "bsdaudiosink", GST_RANK_PRIMARY + 20, + gst_sndiosink_get_type())) return FALSE; + return TRUE; +} + +GST_PLUGIN_DEFINE (GST_VERSION_MAJOR, + GST_VERSION_MINOR, + sndio, + "sndio plugin library", + plugin_init_alsa, VERSION, GST_LICENSE, GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN) + +/* + * common code to src and sink + */ + +void +gst_sndio_init (struct gstsndio *sio, GObject *obj) +{ + sio->obj = obj; + sio->hdl = NULL; + sio->device = g_strdup (SIO_DEVANY); +} + +void +gst_sndio_finalize (struct gstsndio *sio) +{ + gst_caps_replace (&sio->cur_caps, NULL); + g_free (sio->device); +} + +GstCaps * +gst_sndio_getcaps (struct gstsndio *sio, GstCaps * filter) +{ + if (sio->cur_caps == NULL) { + /* XXX */ + GST_LOG_OBJECT (sio->obj, "getcaps called, returning template caps"); + return NULL; + } + + GST_LOG_OBJECT (sio->obj, "returning %" GST_PTR_FORMAT, sio->cur_caps); + + if (filter) { + return gst_caps_intersect_full (filter, + sio->cur_caps, GST_CAPS_INTERSECT_FIRST); + } else { + return gst_caps_ref (sio->cur_caps); + } +} + +static void +gst_sndio_onvol (void *arg, unsigned int vol) +{ + struct gstsndio *sio = arg; + sio->volume = vol; + g_object_notify (G_OBJECT (sio->obj), "mute"); + g_object_notify (G_OBJECT (sio->obj), "volume"); +} + +gboolean +gst_sndio_open (struct gstsndio *sio, gint mode) +{ + GValue list = G_VALUE_INIT, item = G_VALUE_INIT; + GstStructure *s; + GstCaps *caps; + struct sio_enc *enc; + struct sio_cap cap; + char fmt[16]; + int i, chan; + + GST_DEBUG_OBJECT (sio->obj, "open"); + + sio->hdl = sio_open (sio->device, mode, 0); + if (sio->hdl == NULL) { + GST_ELEMENT_ERROR (sio->obj, RESOURCE, OPEN_READ_WRITE, + ("Couldn't open sndio device"), (NULL)); + return FALSE; + } + sio->mode = mode; + + if (!sio_getcap(sio->hdl, &cap)) { + GST_ELEMENT_ERROR (sio, RESOURCE, OPEN_WRITE, + ("Couldn't get device capabilities"), (NULL)); + sio_close(sio->hdl); + sio->hdl = NULL; + return FALSE; + } + if (cap.nconf == 0) { + GST_ELEMENT_ERROR (sio, RESOURCE, OPEN_WRITE, + ("Device has empty capabilities"), (NULL)); + sio_close(sio->hdl); + sio->hdl = NULL; + return FALSE; + } + sio_onvol (sio->hdl, gst_sndio_onvol, sio); + + caps = gst_caps_new_empty (); + s = gst_structure_new ("audio/x-raw", (char *)NULL, (void *)NULL); + + /* + * scan supported rates + */ + g_value_init (&list, GST_TYPE_LIST); + g_value_init (&item, G_TYPE_INT); + for (i = 0; i < SIO_NRATE; i++) { + if ((cap.confs[0].rate & (1 << i)) == 0) + continue; + g_value_set_int(&item, cap.rate[i]); + gst_value_list_append_value (&list, &item); + } + gst_structure_set_value (s, "rate", &list); + g_value_unset (&item); + g_value_unset (&list); + + /* + * scan supported channels + */ + g_value_init (&list, GST_TYPE_LIST); + g_value_init (&item, G_TYPE_INT); + chan = (mode == SIO_PLAY) ? cap.confs[0].pchan : cap.confs[0].rchan; + for (i = 0; i < SIO_NCHAN; i++) { + if ((chan & (1 << i)) == 0) + continue; + g_value_set_int(&item, (mode == SIO_PLAY) ? cap.pchan[i] : cap.rchan[i]); + gst_value_list_append_value (&list, &item); + } + gst_structure_set_value (s, "channels", &list); + g_value_unset (&item); + g_value_unset (&list); + + /* + * scan supported encodings + */ + g_value_init (&list, GST_TYPE_LIST); + g_value_init (&item, G_TYPE_STRING); + for (i = 0; i < SIO_NENC; i++) { + if ((cap.confs[0].enc & (1 << i)) == 0) + continue; + enc = cap.enc + i; + if (enc->bits % 8 != 0) + continue; + if (enc->bits < enc->bps * 8 && enc->msb) + continue; + if (enc->bits == enc->bps * 8) { + snprintf(fmt, sizeof(fmt), "%s%u%s", + enc->sig ? "S" : "U", + enc->bits, + enc->bps > 1 ? (enc->le ? "LE" : "BE") : ""); + } else { + snprintf(fmt, sizeof(fmt), "%s%u_%u%s", + enc->sig ? "S" : "U", + enc->bits, + enc->bps * 8, + enc->bps > 1 ? (enc->le ? "LE" : "BE") : ""); + } + g_value_set_string(&item, fmt); + gst_value_list_append_value (&list, &item); } + gst_structure_set_value (s, "format", &list); + g_value_unset (&item); + g_value_unset (&list); - GST_DEBUG_CATEGORY_INIT (gst_sndio_debug, "sndio", 0, "sndio elements"); + /* + * add the only supported layout: interleaved + */ + g_value_init (&item, G_TYPE_STRING); + g_value_set_string(&item, "interleaved"); + gst_structure_set_value (s, "layout", &item); + g_value_unset (&item); -#ifdef ENABLE_NLS - GST_DEBUG ("binding text domain %s to locale dir %s", GETTEXT_PACKAGE, - LOCALEDIR); - bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); - bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); -#endif /* ENABLE_NLS */ + gst_caps_append_structure (caps, s); + sio->cur_caps = caps; + GST_DEBUG ("caps are %s", gst_caps_to_string(caps)); + return TRUE; +} + +gboolean +gst_sndio_close (struct gstsndio *sio) +{ + GST_DEBUG_OBJECT (sio->obj, "close"); + gst_caps_replace (&sio->cur_caps, NULL); + sio_close (sio->hdl); + sio->hdl = NULL; return TRUE; } + +static void +gst_sndio_cb (void *addr, int delta) +{ + struct gstsndio *sio = addr; + + delta *= sio->bpf; + if (sio->mode == SIO_PLAY) + sio->delay -= delta; + else + sio->delay += delta; +} + +gboolean +gst_sndio_prepare (struct gstsndio *sio, GstAudioRingBufferSpec *spec) +{ + struct sio_par par, retpar; + unsigned nchannels; + + GST_DEBUG_OBJECT (sio, "prepare"); + + if (spec->type != GST_AUDIO_RING_BUFFER_FORMAT_TYPE_RAW) { + GST_ELEMENT_ERROR (sio, RESOURCE, OPEN_READ_WRITE, + ("Only raw buffer format supported by sndio"), (NULL)); + return FALSE; + } + if (!GST_AUDIO_INFO_IS_INTEGER(&spec->info)) { + GST_ELEMENT_ERROR (sio, RESOURCE, OPEN_READ_WRITE, + ("Only integer format supported"), (NULL)); + return FALSE; + } + if (GST_AUDIO_INFO_DEPTH(&spec->info) % 8) { + GST_ELEMENT_ERROR (sio, RESOURCE, OPEN_READ_WRITE, + ("Only depths multiple of 8 are supported"), (NULL)); + return FALSE; + } + + sio_initpar (&par); + switch (GST_AUDIO_INFO_FORMAT (&spec->info)) { + case GST_AUDIO_FORMAT_S8: + case GST_AUDIO_FORMAT_U8: + case GST_AUDIO_FORMAT_S16LE: + case GST_AUDIO_FORMAT_S16BE: + case GST_AUDIO_FORMAT_U16LE: + case GST_AUDIO_FORMAT_U16BE: + case GST_AUDIO_FORMAT_S32LE: + case GST_AUDIO_FORMAT_S32BE: + case GST_AUDIO_FORMAT_U32LE: + case GST_AUDIO_FORMAT_U32BE: + case GST_AUDIO_FORMAT_S24_32LE: + case GST_AUDIO_FORMAT_S24_32BE: + case GST_AUDIO_FORMAT_U24_32LE: + case GST_AUDIO_FORMAT_U24_32BE: + case GST_AUDIO_FORMAT_S24LE: + case GST_AUDIO_FORMAT_S24BE: + case GST_AUDIO_FORMAT_U24LE: + case GST_AUDIO_FORMAT_U24BE: + break; + default: + GST_ELEMENT_ERROR (sio, RESOURCE, OPEN_READ_WRITE, + ("Unsupported audio format"), + ("format = %d", GST_AUDIO_INFO_FORMAT (&spec->info))); + return FALSE; + } + par.sig = GST_AUDIO_INFO_IS_SIGNED(&spec->info); + par.bits = GST_AUDIO_INFO_WIDTH(&spec->info); + par.bps = GST_AUDIO_INFO_DEPTH(&spec->info) / 8; + if (par.bps > 1) + par.le = GST_AUDIO_INFO_IS_LITTLE_ENDIAN(&spec->info); + if (par.bits < par.bps * 8) + par.msb = 0; + par.rate = GST_AUDIO_INFO_RATE(&spec->info); + if (sio->mode == SIO_PLAY) + par.pchan = GST_AUDIO_INFO_CHANNELS(&spec->info); + else + par.rchan = GST_AUDIO_INFO_CHANNELS(&spec->info); + par.round = par.rate / 1000000. * spec->latency_time; + par.appbufsz = par.rate / 1000000. * spec->buffer_time; + + if (!sio_setpar (sio->hdl, &par)) { + GST_ELEMENT_ERROR (sio, RESOURCE, OPEN_WRITE, + ("Unsupported audio encoding"), (NULL)); + return FALSE; + } + if (!sio_getpar (sio->hdl, &retpar)) { + GST_ELEMENT_ERROR (sio, RESOURCE, OPEN_WRITE, + ("Couldn't get audio device parameters"), (NULL)); + return FALSE; + } +#if 0 + GST_DEBUG ("format = %s, " + "requested: sig = %d, bits = %d, bps = %d, le = %d, msb = %d, " + "rate = %d, pchan = %d, round = %d, appbufsz = %d; " + "returned: sig = %d, bits = %d, bps = %d, le = %d, msb = %d, " + "rate = %d, pchan = %d, round = %d, appbufsz = %d, bufsz = %d", + GST_AUDIO_INFO_NAME(&spec->info), + par.sig, par.bits, par.bps, par.le, par.msb, + par.rate, par.pchan, par.round, par.appbufsz, + retpar.sig, retpar.bits, retpar.bps, retpar.le, retpar.msb, + retpar.rate, retpar.pchan, retpar.round, retpar.appbufsz, retpar.bufsz); +#endif + if (par.bits != retpar.bits || + par.bps != retpar.bps || + par.rate != retpar.rate || + (sio->mode == SIO_PLAY && par.pchan != retpar.pchan) || + (sio->mode == SIO_REC && par.rchan != retpar.rchan) || + (par.bps > 1 && par.le != retpar.le) || + (par.bits < par.bps * 8 && par.msb != retpar.msb)) { + GST_ELEMENT_ERROR (sio, RESOURCE, OPEN_WRITE, + ("Audio device refused requested parameters"), (NULL)); + return FALSE; + } + + nchannels = (sio->mode == SIO_PLAY) ? retpar.pchan : retpar.rchan; + spec->segsize = retpar.round * retpar.bps * nchannels; + spec->segtotal = retpar.bufsz / retpar.round; + sio->bpf = retpar.bps * nchannels; + sio->delay = 0; + sio_onmove (sio->hdl, gst_sndio_cb, sio); + + if (!sio_start (sio->hdl)) { + GST_ELEMENT_ERROR (sio->obj, RESOURCE, OPEN_READ_WRITE, + ("Could not start sndio"), (NULL)); + return FALSE; + } + return TRUE; +} + +gboolean +gst_sndio_unprepare (struct gstsndio *sio) +{ + if (sio->hdl) + sio_stop (sio->hdl); + return TRUE; +} + +void +gst_sndio_set_property (struct gstsndio *sio, guint prop_id, + const GValue * value, GParamSpec * pspec) +{ + switch (prop_id) { + case PROP_DEVICE: + g_free (sio->device); + sio->device = g_value_dup_string (value); + break; + case PROP_VOLUME: + sio_setvol (sio->hdl, g_value_get_double (value) * SIO_MAXVOL); + break; + case PROP_MUTE: + if (g_value_get_boolean (value)) + sio_setvol (sio->hdl, 0); + break; + default: + break; + } +} + +void +gst_sndio_get_property (struct gstsndio *sio, guint prop_id, + GValue * value, GParamSpec * pspec) +{ + switch (prop_id) { + case PROP_DEVICE: + g_value_set_string (value, sio->device); + break; + case PROP_VOLUME: + g_value_set_double (value, (gdouble)sio->volume / SIO_MAXVOL); + break; + case PROP_MUTE: + g_value_set_boolean (value, (sio->volume == 0)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (sio->obj, prop_id, pspec); + } +} diff --git a/java/openjfx8-devel/files/gstsndio.h b/java/openjfx8-devel/files/gstsndio.h new file mode 100644 index 000000000000..77ec4e6f86a5 --- /dev/null +++ b/java/openjfx8-devel/files/gstsndio.h @@ -0,0 +1,78 @@ +/* + * Copyright (C) 2012 Alexandre Ratchov <alex@caoua.org> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ +#ifndef __GST_SNDIO_H__ +#define __GST_SNDIO_H__ + +#include <sndio.h> +#include <gst/gst.h> +#include <gst/audio/gstaudiosink.h> +#include <gst/audio/gstaudiosrc.h> +#include <gst/audio/streamvolume.h> + +enum +{ + PROP_0, + PROP_DEVICE, + PROP_VOLUME, + PROP_MUTE +}; + +#define GST_SNDIO_CAPS_STRING \ + "audio/x-raw, " \ + "format = (string) { " \ + "S8, U8, " \ + "S16LE, S16BE, U16LE, U16BE, " \ + "S32LE, S32BE, U32LE, U32BE, " \ + "S24_32LE, S24_32BE, U24_32LE, " \ + "U24_32BE, S24LE, S24BE, U24LE, U24BE " \ + "}, " \ + "layout = (string) interleaved, " \ + "rate = (int) [ 8000, 192000 ], " \ + "channels = (int) [1, 16]" + +/* + * data common to src and sink + */ +struct gstsndio { + struct sio_hdl *hdl; + gchar *device; + gint mode; + gint bpf; /* bytes per frame */ + gint delay; /* bytes stored in the audio fifo */ + guint volume; /* volume level */ + GstCaps *cur_caps; /* saved capabilities of opened device */ + GObject *obj; /* for logging */ +}; + +#define GST_SNDIO_DELAY(s) ((s)->delay / (s)->bpf) + +void gst_sndio_init (struct gstsndio *sio, GObject *obj); +void gst_sndio_finalize (struct gstsndio *sio); +GstCaps *gst_sndio_getcaps (struct gstsndio *sio, GstCaps * filter); +gboolean gst_sndio_open (struct gstsndio *sio, gint mode); +gboolean gst_sndio_close (struct gstsndio *sio); +gboolean gst_sndio_prepare (struct gstsndio *sio, GstAudioRingBufferSpec *spec); +gboolean gst_sndio_unprepare (struct gstsndio *sio); +void gst_sndio_set_property (struct gstsndio *sio, guint prop_id, + const GValue * value, GParamSpec * pspec); +void gst_sndio_get_property (struct gstsndio *sio, guint prop_id, + GValue * value, GParamSpec * pspec); + +int gst_sndio_setpar(gpointer sio, GstAudioRingBufferSpec * spec, + int mode, struct sio_hdl *hdl); +GstCaps *gst_sndio_caps (gpointer sio, int mode, struct sio_hdl *hdl); + +#endif diff --git a/java/openjfx8-devel/files/patch-build.gradle b/java/openjfx8-devel/files/patch-build.gradle index cf1fd4e50a79..60783880255f 100644 --- a/java/openjfx8-devel/files/patch-build.gradle +++ b/java/openjfx8-devel/files/patch-build.gradle @@ -1,6 +1,6 @@ ---- build.gradle.orig 2018-01-16 01:40:56 UTC +--- build.gradle.orig 2018-12-10 16:30:22 UTC +++ build.gradle -@@ -251,6 +251,7 @@ ext.IS_64 = OS_ARCH.toLowerCase().contains("64") +@@ -253,6 +253,7 @@ ext.IS_64 = OS_ARCH.toLowerCase().contains("64") ext.IS_MAC = OS_NAME.contains("mac") || OS_NAME.contains("darwin") ext.IS_WINDOWS = OS_NAME.contains("windows") ext.IS_LINUX = OS_NAME.contains("linux") @@ -8,7 +8,7 @@ // Get the JDK_HOME automatically based on the version of Java used to execute gradle. Or, if specified, // use a user supplied JDK_HOME, STUB_RUNTIME, JAVAC, and/or JAVAH, all of which may be specified -@@ -311,7 +312,7 @@ defineProperty("COMPILE_MEDIA", "false") +@@ -313,7 +314,7 @@ defineProperty("COMPILE_MEDIA", "false") ext.IS_COMPILE_MEDIA = Boolean.parseBoolean(COMPILE_MEDIA) // COMPILE_PANGO specifies whether to build javafx_font_pango. @@ -17,17 +17,17 @@ ext.IS_COMPILE_PANGO = Boolean.parseBoolean(COMPILE_PANGO) // COMPILE_HARFBUZZ specifies whether to use Harfbuzz. -@@ -342,7 +343,8 @@ ext.SWT_FILE_NAME = IS_MAC ? "org.eclipse.swt.cocoa.ma - IS_WINDOWS && IS_64 ? "org.eclipse.swt.win32.win32.x86_64_3.7.2.v3740f" : - IS_WINDOWS && !IS_64 ? "org.eclipse.swt.win32.win32.x86_3.7.2.v3740f" : - IS_LINUX && IS_64 ? "org.eclipse.swt.gtk.linux.x86_64_3.7.2.v3740f" : -- IS_LINUX && !IS_64 ? "org.eclipse.swt.gtk.linux.x86_3.7.2.v3740f" : "" -+ IS_LINUX && !IS_64 ? "org.eclipse.swt.gtk.linux.x86_3.7.2.v3740f" : +@@ -344,7 +345,8 @@ ext.SWT_FILE_NAME = IS_MAC ? "org.eclipse.swt.cocoa.ma + IS_WINDOWS && IS_64 ? "org.eclipse.swt.win32.win32.x86_64_3.105.3.v20170228-0512" : + IS_WINDOWS && !IS_64 ? "org.eclipse.swt.win32.win32.x86_3.105.3.v20170228-0512" : + IS_LINUX && IS_64 ? "org.eclipse.swt.gtk.linux.x86_64_3.105.3.v20170228-0512" : +- IS_LINUX && !IS_64 ? "org.eclipse.swt.gtk.linux.x86_3.105.3.v20170228-0512" : "" ++ IS_LINUX && !IS_64 ? "org.eclipse.swt.gtk.linux.x86_3.105.3.v20170228-0512" : + IS_BSD ? "/usr/local/share/java/classes/swt-devel.jar" : "" // Build javadocs only if BUILD_JAVADOC=true defineProperty("BUILD_JAVADOC", "false") -@@ -402,6 +404,12 @@ if (IS_MAC) { +@@ -404,6 +406,12 @@ if (IS_MAC) { defineProperty("NUM_COMPILE_THREADS", "${Runtime.runtime.availableProcessors()}") } @@ -40,7 +40,7 @@ // // The next three sections of properties are used to generate the // VersionInfo class, and the Windows DLL manifest. -@@ -442,7 +450,7 @@ defineProperty("RELEASE_MILESTONE", jfxReleaseMileston +@@ -444,7 +452,7 @@ defineProperty("RELEASE_MILESTONE", jfxReleaseMileston // Check whether the COMPILE_TARGETS property has been specified (if so, it was done by // the user and not by this script). If it has not been defined then default // to building the normal desktop build for this machine @@ -49,7 +49,7 @@ defineProperty("COMPILE_TARGETS", "$defaultHostTarget") // Flag indicating whether to import cross compile tools -@@ -549,7 +557,7 @@ void fetchExternalTools(String configName, List packag +@@ -551,7 +559,7 @@ void fetchExternalTools(String configName, List packag def File pkgdir = file("$destdir/$basename") if (pkgname.endsWith(".tgz")) { @@ -58,7 +58,7 @@ // use native tar to support symlinks pkgdir.mkdirs() exec { -@@ -674,7 +682,7 @@ compileTargets { t -> +@@ -676,7 +684,7 @@ compileTargets { t -> if (!targetProperties.containsKey('includeMonocle')) targetProperties.includeMonocle = false if (!targetProperties.containsKey('includeEGL')) targetProperties.includeEGL = false @@ -67,7 +67,7 @@ // This value is used to under ./build/${sdkDirName} to allow for // a common name for the hosted build (for use when building apps) -@@ -706,7 +714,7 @@ compileTargets { t -> +@@ -708,7 +716,7 @@ compileTargets { t -> // at present building on PI is not supported, but we would only need to make // some changes on assumptions on what should be built (like SWT / Swing) and // such and we could probably make it work. @@ -76,7 +76,7 @@ if (IS_WINDOWS && OS_ARCH != "x86" && OS_ARCH != "amd64") { throw new Exception("Unknown and unsupported build architecture: $OS_ARCH") } else if (IS_MAC && OS_ARCH != "x86_64") { -@@ -1169,7 +1177,8 @@ allprojects { +@@ -1165,7 +1173,8 @@ allprojects { // By default all of our projects require junit for testing so we can just // setup this dependency here. dependencies { @@ -86,7 +86,7 @@ if (BUILD_CLOSED && DO_JCOV) { testCompile name: "jcov" } -@@ -1307,12 +1316,15 @@ project(":graphics") { +@@ -1303,12 +1312,15 @@ project(":graphics") { dependencies { compile project(":base"), BUILD_SRC @@ -107,47 +107,17 @@ } // Create a single "native" task which will depend on all the individual native tasks for graphics -@@ -1461,7 +1473,7 @@ project(":graphics") { - workingDir = "modules/graphics" - main = settings.generator - classpath = configurations.compile + configurations.antlr3 -- classpath += files("$buildDir/classes/main") -+ classpath += files("$buildDir/classes/java/main") - classpath += files("$buildDir/classes/jsl-compilers/decora") - args = ["-i", sourceDir, "-o", destinationDir, "-t", "-pkg", "com/sun/scenario/effect", "$settings.outputs", "$settings.fileName"] - jvmArgs "-Djava.ext.dirs=" -@@ -1472,9 +1484,9 @@ project(":graphics") { - task generateDecoraNativeHeaders(type: JavaHeaderTask, dependsOn: compileDecoraJavaShaders) { - description = "Generates JNI Headers for Decora SSE Natives" - source file("$buildDir/classes/jsl-decora") -- source file("$buildDir/classes/main") -+ source file("$buildDir/classes/java/main") - include("com/sun/scenario/effect/impl/sw/sse/*"); -- classpath = files("$buildDir/classes/main", "$buildDir/classes/jsl-decora") -+ classpath = files("$buildDir/classes/java/main", "$buildDir/classes/jsl-decora") - output = file("$buildDir/generated-src/headers/jsl-decora") - } - -@@ -1602,9 +1614,7 @@ project(":graphics") { - copy { - into libsDir - from f.getParentFile() -- include "**/antlr-3.1.3.jar" -- include "**/stringtemplate-3.2.jar" -- include "**/antlr-runtime-3.1.3.jar" -+ include "**/antlr-3.5.2-complete.jar" - includeEmptyDirs = false - } - // Have to rename the swt jar because it is some platform specific name but -@@ -1651,7 +1661,7 @@ project(":controls") { - javaexec { - executable = JAVA - workingDir = "modules/controls" -- classpath files("$buildDir/classes/main", -+ classpath files("$buildDir/classes/java/main", - project(":graphics").sourceSets.main.output, - project(":base").sourceSets.main.output) - main = "com.sun.javafx.css.parser.Css2Bin" +@@ -1599,9 +1611,7 @@ project(":graphics") { + copy { + into libsDir + from f.getParentFile() +- include "**/antlr-3.1.3.jar" +- include "**/stringtemplate-3.2.jar" +- include "**/antlr-runtime-3.1.3.jar" ++ include "**/antlr-3.5.2-complete.jar" + includeEmptyDirs = false + } + // Have to rename the swt jar because it is some platform specific name but @@ -1688,7 +1698,11 @@ project(":swt") { } dependencies { @@ -161,7 +131,7 @@ } } -@@ -1787,7 +1801,7 @@ project(":fxpackager") { +@@ -1794,7 +1808,7 @@ project(":fxpackager") { } dependencies { @@ -170,30 +140,23 @@ } // When producing the jar, we need to relocate a few class files -@@ -2038,7 +2052,7 @@ project(":fxpackager") { - description = "Creates the packager.jar" - archiveName = "packager.jar"; - includeEmptyDirs = false -- from("$buildDir/classes/main"); -+ from("$buildDir/classes/java/main"); - from("$buildDir/resources/main"); - include('jdk/packager/**') - -@@ -2048,21 +2062,6 @@ project(":fxpackager") { +@@ -2055,23 +2069,6 @@ project(":fxpackager") { jar.dependsOn buildJavaPackager jar.dependsOn packagerJar -- classes << { -- // Copy all of the download libraries to libs directory for the sake of the IDEs -- File libsDir = rootProject.file("build/libs"); -- File antLib = new File(libsDir, "ant-1.8.2.jar") -- libsDir.mkdirs(); -- for (File f : configurations.compile.files) { -- copy { -- into libsDir -- from f.getParentFile() -- include "**/ant-1.8.2.jar" -- includeEmptyDirs = false +- classes { +- doLast { +- // Copy all of the download libraries to libs directory for the sake of the IDEs +- File libsDir = rootProject.file("build/libs"); +- File antLib = new File(libsDir, "ant-1.8.2.jar") +- libsDir.mkdirs(); +- for (File f : configurations.compile.files) { +- copy { +- into libsDir +- from f.getParentFile() +- include "**/ant-1.8.2.jar" +- includeEmptyDirs = false +- } - } - } - } @@ -201,7 +164,7 @@ task packagerFakeJar(type: Jar) { dependsOn compileTestJava from compileTestJava.destinationDir -@@ -2241,7 +2240,7 @@ project(":media") { +@@ -2250,7 +2247,7 @@ project(":media") { doLast { exec { @@ -210,7 +173,7 @@ args("JAVA_HOME=${JDK_HOME}", "GENERATED_HEADERS_DIR=${generatedHeadersDir}", "OUTPUT_DIR=${nativeOutputDir}", "BUILD_TYPE=${buildType}", "BASE_NAME=jfxmedia", "COMPILE_PARFAIT=${compileParfait}") -@@ -2251,7 +2250,7 @@ project(":media") { +@@ -2260,7 +2257,7 @@ project(":media") { args(IS_64 ? "ARCH=x64" : "ARCH=x32", "RESOURCE=${nativeOutputDir}/${buildType}/${WIN.media.jfxmediaRcFile}") } else { args ("CC=${mediaProperties.compiler}", "LINK=${mediaProperties.linker}", "LIB=${mediaProperties.lib}") @@ -219,7 +182,7 @@ args(IS_64 ? "ARCH=x64" : "ARCH=x32") } -@@ -2273,7 +2272,7 @@ project(":media") { +@@ -2282,7 +2279,7 @@ project(":media") { enabled = IS_COMPILE_MEDIA doLast { exec { @@ -228,7 +191,7 @@ args("OUTPUT_DIR=${nativeOutputDir}", "BUILD_TYPE=${buildType}", "BASE_NAME=gstreamer-lite") if (t.name == "win") { -@@ -2281,7 +2280,7 @@ project(":media") { +@@ -2290,7 +2287,7 @@ project(":media") { args(IS_64 ? "ARCH=x64" : "ARCH=x32", "RESOURCE=${nativeOutputDir}/${buildType}/${WIN.media.gstreamerRcFile}") } else { args ("CC=${mediaProperties.compiler}", "LINK=${mediaProperties.linker}", "LIB=${mediaProperties.lib}") @@ -237,7 +200,7 @@ args(IS_64 ? "ARCH=x64" : "ARCH=x32") } } -@@ -2302,7 +2301,7 @@ project(":media") { +@@ -2311,7 +2308,7 @@ project(":media") { doLast { exec { @@ -246,7 +209,7 @@ args("OUTPUT_DIR=${nativeOutputDir}", "BUILD_TYPE=${buildType}", "BASE_NAME=fxplugins", "ON2_SRCDIR=${project.ext.ON2_SRCDIR}", "ON2_LIB=${project.ext.ON2_LIB}") -@@ -2319,7 +2318,7 @@ project(":media") { +@@ -2328,7 +2325,7 @@ project(":media") { args(IS_64 ? "ARCH=x64" : "ARCH=x32", "RESOURCE=${nativeOutputDir}/${buildType}/${WIN.media.fxpluginsRcFile}") } else { args ("CC=${mediaProperties.compiler}", "LINK=${mediaProperties.linker}", "LIB=${mediaProperties.lib}") @@ -255,7 +218,7 @@ args(IS_64 ? "ARCH=x64" : "ARCH=x32") } } -@@ -2329,7 +2328,7 @@ project(":media") { +@@ -2338,7 +2335,7 @@ project(":media") { buildNative.dependsOn buildPlugins @@ -264,7 +227,7 @@ def buildAVPlugin = task( "buildAVPlugin", dependsOn: [buildPlugins]) { enabled = IS_COMPILE_MEDIA -@@ -2340,7 +2339,7 @@ project(":media") { +@@ -2349,7 +2346,7 @@ project(":media") { File dir = file(libavDir) if (dir.exists()) { exec { @@ -273,7 +236,7 @@ args("CC=${mediaProperties.compiler}", "OUTPUT_DIR=${nativeOutputDir}", "BUILD_TYPE=${buildType}", "BASE_NAME=avplugin", "VERSION=${version}", "LIBAV_DIR=${libavDir}", "SUFFIX=", IS_64 ? "ARCH=x64" : "ARCH=x32") -@@ -2353,7 +2352,7 @@ project(":media") { +@@ -2362,7 +2359,7 @@ project(":media") { File dir = file(libavDir) if (dir.exists()) { exec { @@ -282,16 +245,16 @@ args("CC=${mediaProperties.compiler}", "LINKER=${mediaProperties.linker}", "OUTPUT_DIR=${nativeOutputDir}", "BUILD_TYPE=${buildType}", "BASE_NAME=avplugin", "VERSION=${version}", "LIBAV_DIR=${libavDir}", -@@ -2364,7 +2363,7 @@ project(":media") { +@@ -2373,7 +2370,7 @@ project(":media") { } else { // Building fxavcodec plugin (libav plugin) exec { - commandLine ("make", "${makeJobsFlag}", "-C", "${nativeSrcDir}/gstreamer/projects/linux/avplugin") -+ commandLine (MAKE_CMD, "${makeJobsFlag}", "-C", "${nativeSrcDir}/gstreamer/projects/linux/avplugin") ++ commandLine (MAKE_CMD, "${makeJobsFlag}", "-C", "${nativeSrcDir}/gstreamer/projects/${t.name}/avplugin") args("CC=${mediaProperties.compiler}", "OUTPUT_DIR=${nativeOutputDir}", "BUILD_TYPE=${buildType}", "BASE_NAME=avplugin", IS_64 ? "ARCH=x64" : "ARCH=x32") } -@@ -2412,7 +2411,7 @@ project(":media") { +@@ -2423,7 +2420,7 @@ project(":media") { doLast { exec { environment(WINDOWS_NATIVE_COMPILE_ENVIRONMENT) @@ -300,130 +263,53 @@ args("OUTPUT_DIR=${nativeOutputDir}", "BUILD_TYPE=${buildType}", "BASE_NAME=glib-lite", IS_64 ? "ARCH=x64" : "ARCH=x32", "RESOURCE=${nativeOutputDir}/${buildType}/${WIN.media.glibRcFile}") } -@@ -2425,7 +2424,7 @@ project(":media") { - enabled = IS_COMPILE_MEDIA - doLast { +@@ -2442,7 +2439,7 @@ project(":media") { + } + exec { - commandLine ("make", "${makeJobsFlag}", "-C", "${nativeSrcDir}/gstreamer/projects/${projectDir}/glib-lite") + commandLine (MAKE_CMD, "${makeJobsFlag}", "-C", "${nativeSrcDir}/gstreamer/projects/${projectDir}/glib-lite") args("OUTPUT_DIR=${nativeOutputDir}", "BUILD_TYPE=${buildType}", "BASE_NAME=glib-lite") args ("CC=${mediaProperties.compiler}", "LINK=${mediaProperties.linker}", "LIB=${mediaProperties.lib}") } -@@ -2478,7 +2477,7 @@ project(":web") { - - task generateHeaders(dependsOn: compileJava) { - doLast { -- def classpath = files("$buildDir/classes/main", -+ def classpath = files("$buildDir/classes/java/main", - project(":graphics").sourceSets.main.output.classesDir) - def dest = file("$buildDir/generated-src/headers"); - mkdir dest; -@@ -2525,7 +2524,7 @@ project(":web") { - +@@ -2562,7 +2559,7 @@ project(":web") { compileTargets { t -> def targetProperties = project.rootProject.ext[t.upper] + def webkitProperties = targetProperties.webkit - def classifier = (t.name != "linux" && t.name != "win") ? t.name : + def classifier = (t.name != "linux" && t.name != "bsd" && t.name != "win") ? t.name : IS_64 ? "${t.name}-amd64" : "${t.name}-i586" def webkitOutputDir = cygpath("$buildDir/${t.name}") -@@ -2592,6 +2591,9 @@ project(":web") { - targetCpuBitDepthSwitch = "--32-bit" - } - -+ cmakeArgs += " -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON" -+ cmakeArgs += " -DCMAKE_C_COMPILER:STRING=${System.getenv("CC")}" -+ cmakeArgs += " -DCMAKE_CXX_COMPILER:STRING=${System.getenv("CXX")}" - commandLine("perl", "$projectDir/src/main/native/Tools/Scripts/build-webkit", - "--java", "--icu-unicode", targetCpuBitDepthSwitch, - "--cmakeargs=${cmakeArgs}") -@@ -2634,7 +2636,7 @@ project(":web") { - task drtJar(type: Jar, dependsOn: compileJava) { - archiveName = "drt.jar" - destinationDir = file("$buildDir/test") -- from "$buildDir/classes/main" -+ from "$buildDir/classes/java/main" - include drtClasses - } - if (IS_COMPILE_WEBKIT) { -@@ -2886,22 +2888,22 @@ compileTargets { t -> - description = "Creates the jfxrt.jar for the $t.name target" - archiveName = "build/${sdkDirName}/rt/lib/ext/jfxrt.jar"; - includeEmptyDirs = false -- from("modules/base/build/classes/main", -+ from("modules/base/build/classes/java/main", - "modules/base/build/resources/main", -- "modules/builders/build/classes/main", -- "modules/graphics/build/classes/main", -+ "modules/builders/build/classes/java/main", -+ "modules/graphics/build/classes/java/main", - "modules/graphics/build/resources/main", -- "modules/controls/build/classes/main", -+ "modules/controls/build/classes/java/main", - "modules/controls/build/resources/main", -- "modules/fxml/build/classes/main", -+ "modules/fxml/build/classes/java/main", - "modules/fxml/build/resources/main", - "modules/graphics/build/classes/jsl-decora", - "modules/graphics/build/resources/jsl-decora", - "modules/graphics/build/classes/jsl-prism", - "modules/graphics/build/resources/jsl-prism", -- "modules/media/build/classes/main", -+ "modules/media/build/classes/java/main", - "modules/media/build/resources/main") -- if (COMPILE_SWING) from ("modules/swing/build/classes/main", "modules/swing/build/resources/main") -+ if (COMPILE_SWING) from ("modules/swing/build/classes/java/main", "modules/swing/build/resources/main") - - if (!IS_MAC) { - exclude ("modules/media/build/classes/main/com/sun/media/jfxmediaimpl/platform/osx/**", -@@ -2966,7 +2968,7 @@ compileTargets { t -> - "modules/web/build/resources/ios", - "modules/extensions/build/classes/ios") - } else { -- from ("modules/web/build/classes/main", "modules/web/build/resources/main") -+ from ("modules/web/build/classes/java/main", "modules/web/build/resources/main") - } - - exclude("**/javafx/embed/swt/**") -@@ -3007,8 +3009,8 @@ compileTargets { t -> - description = "Creates the jfxswt.jar for the $t.name target" - archiveName = "build/${sdkDirName}/rt/lib/jfxswt.jar"; - includeEmptyDirs = false -- from("modules/swt/build/classes/main"); -- from("modules/builders/build/classes/main"); -+ from("modules/swt/build/classes/java/main"); -+ from("modules/builders/build/classes/java/main"); - include("**/javafx/embed/swt/**") - exclude("**/*.java"); // Builder java files are in build/classes and should be excluded +@@ -2638,6 +2635,9 @@ project(":web") { + } -@@ -3029,7 +3031,7 @@ compileTargets { t -> - description = "Creates the javafx-mx.jar" - archiveName = "build/${sdkDirName}/lib/javafx-mx.jar"; - includeEmptyDirs = false -- from "modules/jmx/build/classes/main" -+ from "modules/jmx/build/classes/java/main" - from "modules/jmx/build/resources/main" - dependsOn project(":jmx").assemble - } -@@ -3084,7 +3086,7 @@ compileTargets { t -> + cmakeArgs += " -DJAVAFX_RELEASE_VERSION=8.0" ++ cmakeArgs += " -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON" ++ cmakeArgs += " -DCMAKE_C_COMPILER:STRING=${System.getenv("CC")}" ++ cmakeArgs += " -DCMAKE_CXX_COMPILER:STRING=${System.getenv("CXX")}" + commandLine("perl", "$projectDir/src/main/native/Tools/Scripts/build-webkit", + "--java", "--icu-unicode", targetCpuBitDepthSwitch, + "--cmakeargs=${cmakeArgs}") +@@ -3132,7 +3132,7 @@ compileTargets { t -> // OSX media natives - [ "jfxmedia_qtkit", "jfxmedia_avf", "glib-lite" ].each { name -> + [ "jfxmedia_qtkit", "jfxmedia_avf" ].each { name -> from ("modules/media/build/native/${t.name}/${mediaBuildType}/${library(name)}") } - } else if (t.name == "linux") { + } else if (t.name == "linux" || t.name == "bsd") { from("modules/media/build/native/${t.name}/${mediaBuildType}") { include "libavplugin*.so" } - } else from ("modules/media/build/native/${t.name}/${mediaBuildType}/${library("glib-lite")}") + } } else { -@@ -3097,7 +3099,7 @@ compileTargets { t -> +@@ -3145,7 +3145,7 @@ compileTargets { t -> // copy libjfxmedia_{avf,qtkit}.dylib if they exist - [ "jfxmedia_qtkit", "jfxmedia_avf", "glib-lite" ].each { name -> + [ "jfxmedia_qtkit", "jfxmedia_avf" ].each { name -> from ("$LIBRARY_STUB/${library(name)}") } - } else if (t.name == "linux") { + } else if (t.name == "linux" || t.name == "bsd") { from(LIBRARY_STUB) { include "libavplugin*.so" } } - else if (t.name != "android" && t.name != "dalvik" ) { -@@ -3162,7 +3164,7 @@ compileTargets { t -> + } +@@ -3207,7 +3207,7 @@ compileTargets { t -> } // Copy over the javapackager executable @@ -432,21 +318,15 @@ copy { from "modules/fxpackager/build/javapackager" into "build/${sdkDirName}/bin" -@@ -3215,10 +3217,11 @@ ext.JFXRT_CP = - project(":fxml").sourceSets.main.output.classesDir, - project(":swing").sourceSets.main.output.classesDir, //NOTE - used by 3Dviewer - project(":builders").sourceSets.main.output.classesDir, -- "modules/media/build/classes/main", -- "modules/web/build/classes/main", -+ "modules/media/build/classes/java/main", -+ "modules/web/build/classes/java/main", +@@ -3264,6 +3264,7 @@ ext.JFXRT_CP = + "modules/web/build/classes/java/main", ) +/* project(":apps") { // The apps build is Ant based, and gradle lets us "import" ant build.xml // into our configuration. -@@ -3295,7 +3298,7 @@ project(":apps") { +@@ -3341,7 +3342,7 @@ project(":apps") { } rootProject.clean.dependsOn(appsClean) } diff --git a/java/openjfx8-devel/files/patch-modules_controls_src_main_java_com_sun_javafx_scene_control_behavior_TextInputControlBehavior.java b/java/openjfx8-devel/files/patch-modules_controls_src_main_java_com_sun_javafx_scene_control_behavior_TextInputControlBehavior.java new file mode 100644 index 000000000000..2ec15ad0ea0e --- /dev/null +++ b/java/openjfx8-devel/files/patch-modules_controls_src_main_java_com_sun_javafx_scene_control_behavior_TextInputControlBehavior.java @@ -0,0 +1,20 @@ +--- modules/controls/src/main/java/com/sun/javafx/scene/control/behavior/TextInputControlBehavior.java.orig 2019-07-22 19:05:36 UTC ++++ modules/controls/src/main/java/com/sun/javafx/scene/control/behavior/TextInputControlBehavior.java +@@ -362,7 +362,7 @@ public abstract class TextInputControlBehavior<T exten + + protected void selectNextWord() { + TextInputControl textInputControl = getControl(); +- if (isMac() || isLinux()) { ++ if (isMac() || isLinux() || isFreeBSD()) { + textInputControl.selectEndOfNextWord(); + } else { + textInputControl.selectNextWord(); +@@ -401,7 +401,7 @@ public abstract class TextInputControlBehavior<T exten + + protected void nextWord() { + TextInputControl textInputControl = getControl(); +- if (isMac() || isLinux()) { ++ if (isMac() || isLinux() || isFreeBSD()) { + textInputControl.endOfNextWord(); + } else { + textInputControl.nextWord(); diff --git a/java/openjfx8-devel/files/patch-modules_controls_src_main_java_com_sun_javafx_scene_control_behavior_TextInputControlBindings.java b/java/openjfx8-devel/files/patch-modules_controls_src_main_java_com_sun_javafx_scene_control_behavior_TextInputControlBindings.java new file mode 100644 index 000000000000..58a16694bb8d --- /dev/null +++ b/java/openjfx8-devel/files/patch-modules_controls_src_main_java_com_sun_javafx_scene_control_behavior_TextInputControlBindings.java @@ -0,0 +1,11 @@ +--- modules/controls/src/main/java/com/sun/javafx/scene/control/behavior/TextInputControlBindings.java.orig 2019-07-22 19:06:01 UTC ++++ modules/controls/src/main/java/com/sun/javafx/scene/control/behavior/TextInputControlBindings.java +@@ -134,7 +134,7 @@ public class TextInputControlBindings { + BINDINGS.add(new KeyBinding(KP_RIGHT, KEY_PRESSED, "SelectRightWord").ctrl().shift()); + BINDINGS.add(new KeyBinding(A, KEY_PRESSED, "SelectAll").ctrl()); + BINDINGS.add(new KeyBinding(BACK_SLASH, KEY_PRESSED, "Unselect").ctrl()); +- if (PlatformUtil.isLinux()) { ++ if (PlatformUtil.isLinux() || PlatformUtil.isFreeBSD()) { + BINDINGS.add(new KeyBinding(Z, KEY_PRESSED, "Undo").ctrl()); + BINDINGS.add(new KeyBinding(Z, KEY_PRESSED, "Redo").ctrl().shift()); + } else { // Windows diff --git a/java/openjfx8-devel/files/patch-modules_fxpackager_src_main_native_library_common_PosixPlatform.cpp b/java/openjfx8-devel/files/patch-modules_fxpackager_src_main_native_library_common_PosixPlatform.cpp index 8b9e9d1e6ddd..1d65dd73face 100644 --- a/java/openjfx8-devel/files/patch-modules_fxpackager_src_main_native_library_common_PosixPlatform.cpp +++ b/java/openjfx8-devel/files/patch-modules_fxpackager_src_main_native_library_common_PosixPlatform.cpp @@ -1,14 +1,14 @@ http://pkgs.fedoraproject.org/cgit/rpms/openjfx.git/tree/0001-Fix-wait-call-in-PosixPlatform.patch ---- modules/fxpackager/src/main/native/library/common/PosixPlatform.cpp.orig 2017-09-08 16:56:55 UTC +--- modules/fxpackager/src/main/native/library/common/PosixPlatform.cpp.orig 2018-12-10 16:30:22 UTC +++ modules/fxpackager/src/main/native/library/common/PosixPlatform.cpp -@@ -230,13 +230,7 @@ bool PosixProcess::Wait() { +@@ -231,13 +231,7 @@ bool PosixProcess::Wait() { int status = 0; pid_t wpid = 0; - //TODO Use waitpid instead of wait -#ifdef LINUX -- wait(); +- wait(&status); -#endif -#ifdef MAC wpid = wait(&status); diff --git a/java/openjfx8-devel/files/patch-modules_graphics_src_main_java_com_sun_javafx_font_LogicalFont.java b/java/openjfx8-devel/files/patch-modules_graphics_src_main_java_com_sun_javafx_font_LogicalFont.java new file mode 100644 index 000000000000..68225ceebc98 --- /dev/null +++ b/java/openjfx8-devel/files/patch-modules_graphics_src_main_java_com_sun_javafx_font_LogicalFont.java @@ -0,0 +1,11 @@ +--- modules/graphics/src/main/java/com/sun/javafx/font/LogicalFont.java.orig 2019-07-22 19:00:13 UTC ++++ modules/graphics/src/main/java/com/sun/javafx/font/LogicalFont.java +@@ -175,7 +175,7 @@ public class LogicalFont implements CompositeFontResou + styleName = STYLE_BOLD_ITALIC; + } + fullName = familyName + " " + styleName; +- if (PrismFontFactory.isLinux) { ++ if (PrismFontFactory.isLinux || PrismFontFactory.isFreeBSD) { + FontConfigManager.FcCompFont fcCompFont = + FontConfigManager.getFontConfigFont(family, bold, italic); + physicalFullName = fcCompFont.firstFont.fullName; diff --git a/java/openjfx8-devel/files/patch-modules_graphics_src_main_java_com_sun_javafx_font_PrismFontFactory.java b/java/openjfx8-devel/files/patch-modules_graphics_src_main_java_com_sun_javafx_font_PrismFontFactory.java index 2f0f581766ce..17c1be9d10f0 100644 --- a/java/openjfx8-devel/files/patch-modules_graphics_src_main_java_com_sun_javafx_font_PrismFontFactory.java +++ b/java/openjfx8-devel/files/patch-modules_graphics_src_main_java_com_sun_javafx_font_PrismFontFactory.java @@ -1,4 +1,4 @@ ---- modules/graphics/src/main/java/com/sun/javafx/font/PrismFontFactory.java.orig 2017-09-08 16:56:55 UTC +--- modules/graphics/src/main/java/com/sun/javafx/font/PrismFontFactory.java.orig 2018-12-10 16:30:22 UTC +++ modules/graphics/src/main/java/com/sun/javafx/font/PrismFontFactory.java @@ -51,6 +51,7 @@ public abstract class PrismFontFactory implements Font public static final boolean debugFonts; @@ -39,7 +39,7 @@ } } - if (fontResource == null && isLinux) { -+ if (fontResource == null && isLinux && isFreeBSD) { ++ if (fontResource == null && (isLinux || isFreeBSD)) { String path = FontConfigManager.getDefaultFontPath(); if (path != null) { fontResource = createFontResource(jreDefaultFontLC, diff --git a/java/openjfx8-devel/files/patch-modules_graphics_src_main_java_com_sun_javafx_tk_quantum_GlassSystemMenu.java b/java/openjfx8-devel/files/patch-modules_graphics_src_main_java_com_sun_javafx_tk_quantum_GlassSystemMenu.java new file mode 100644 index 000000000000..5d5c29f0eafc --- /dev/null +++ b/java/openjfx8-devel/files/patch-modules_graphics_src_main_java_com_sun_javafx_tk_quantum_GlassSystemMenu.java @@ -0,0 +1,35 @@ +--- modules/graphics/src/main/java/com/sun/javafx/tk/quantum/GlassSystemMenu.java.orig 2019-07-22 19:03:56 UTC ++++ modules/graphics/src/main/java/com/sun/javafx/tk/quantum/GlassSystemMenu.java +@@ -317,13 +317,13 @@ class GlassSystemMenu implements TKSystemMenu { + } else if (accelerator instanceof KeyCodeCombination) { + KeyCodeCombination kcc = (KeyCodeCombination)accelerator; + KeyCode code = kcc.getCode(); +- assert PlatformUtil.isMac() || PlatformUtil.isLinux(); ++ assert PlatformUtil.isMac() || PlatformUtil.isLinux() || PlatformUtil.isFreeBSD(); + int modifier = glassModifiers(kcc); + if (PlatformUtil.isMac()) { + int finalCode = code.isLetterKey() ? code.impl_getChar().toUpperCase().charAt(0) + : code.impl_getCode(); + glassSubMenuItem.setShortcut(finalCode, modifier); +- } else if (PlatformUtil.isLinux()) { ++ } else if (PlatformUtil.isLinux() || PlatformUtil.isFreeBSD()) { + String lower = code.impl_getChar().toLowerCase(); + if ((modifier & KeyEvent.MODIFIER_CONTROL) != 0) { + glassSubMenuItem.setShortcut(lower.charAt(0), modifier); +@@ -352,14 +352,14 @@ class GlassSystemMenu implements TKSystemMenu { + ret += KeyEvent.MODIFIER_ALT; + } + if (kcc.getShortcut() == KeyCombination.ModifierValue.DOWN) { +- if (PlatformUtil.isLinux()) { ++ if (PlatformUtil.isLinux() || PlatformUtil.isFreeBSD()) { + ret += KeyEvent.MODIFIER_CONTROL; + } else if (PlatformUtil.isMac()) { + ret += KeyEvent.MODIFIER_COMMAND; + } + } + if (kcc.getMeta() == KeyCombination.ModifierValue.DOWN) { +- if (PlatformUtil.isLinux()) { ++ if (PlatformUtil.isLinux() || PlatformUtil.isFreeBSD()) { + ret += KeyEvent.MODIFIER_WINDOWS; // RT-19326 - Linux shortcut support + } else if (PlatformUtil.isMac()) { + ret += KeyEvent.MODIFIER_COMMAND; diff --git a/java/openjfx8-devel/files/patch-modules_graphics_src_main_java_com_sun_javafx_tk_quantum_WindowStage.java b/java/openjfx8-devel/files/patch-modules_graphics_src_main_java_com_sun_javafx_tk_quantum_WindowStage.java new file mode 100644 index 000000000000..0f723724e2fc --- /dev/null +++ b/java/openjfx8-devel/files/patch-modules_graphics_src_main_java_com_sun_javafx_tk_quantum_WindowStage.java @@ -0,0 +1,11 @@ +--- modules/graphics/src/main/java/com/sun/javafx/tk/quantum/WindowStage.java.orig 2019-07-22 19:05:13 UTC ++++ modules/graphics/src/main/java/com/sun/javafx/tk/quantum/WindowStage.java +@@ -432,7 +432,7 @@ class WindowStage extends GlassStage { + } else if (PlatformUtil.isWindows()) { //Windows Sized Icons + SMALL_ICON_HEIGHT = 32; + SMALL_ICON_WIDTH = 32; +- } else if (PlatformUtil.isLinux()) { //Linux icons ++ } else if (PlatformUtil.isLinux() || PlatformUtil.isFreeBSD()) { //Linux icons + SMALL_ICON_HEIGHT = 128; + SMALL_ICON_WIDTH = 128; + } diff --git a/java/openjfx8-devel/files/patch-modules_graphics_src_main_java_com_sun_prism_impl_PrismSettings.java b/java/openjfx8-devel/files/patch-modules_graphics_src_main_java_com_sun_prism_impl_PrismSettings.java index ee3c466944e2..95344b078542 100644 --- a/java/openjfx8-devel/files/patch-modules_graphics_src_main_java_com_sun_prism_impl_PrismSettings.java +++ b/java/openjfx8-devel/files/patch-modules_graphics_src_main_java_com_sun_prism_impl_PrismSettings.java @@ -1,4 +1,4 @@ ---- modules/graphics/src/main/java/com/sun/prism/impl/PrismSettings.java.orig 2017-09-08 16:56:55 UTC +--- modules/graphics/src/main/java/com/sun/prism/impl/PrismSettings.java.orig 2018-12-10 16:30:22 UTC +++ modules/graphics/src/main/java/com/sun/prism/impl/PrismSettings.java @@ -212,6 +212,8 @@ public final class PrismSettings { tryOrderArr = new String[] { "es2" }; @@ -9,3 +9,12 @@ } else { tryOrderArr = new String[] { "sw" }; } +@@ -221,7 +223,7 @@ public final class PrismSettings { + + String npprop = systemProperties.getProperty("prism.nativepisces"); + if (npprop == null) { +- doNativePisces = PlatformUtil.isEmbedded() || !PlatformUtil.isLinux(); ++ doNativePisces = PlatformUtil.isEmbedded() || !PlatformUtil.isLinux() || !PlatformUtil.isFreeBSD(); + } else { + doNativePisces = Boolean.parseBoolean(npprop); + } diff --git a/java/openjfx8-devel/files/patch-modules_graphics_src_main_native-glass_gtk_GlassApplication.cpp b/java/openjfx8-devel/files/patch-modules_graphics_src_main_native-glass_gtk_GlassApplication.cpp new file mode 100644 index 000000000000..d8d0e0446185 --- /dev/null +++ b/java/openjfx8-devel/files/patch-modules_graphics_src_main_native-glass_gtk_GlassApplication.cpp @@ -0,0 +1,10 @@ +--- modules/graphics/src/main/native-glass/gtk/GlassApplication.cpp.orig 2019-07-22 07:18:58 UTC ++++ modules/graphics/src/main/native-glass/gtk/GlassApplication.cpp +@@ -101,6 +101,7 @@ JNIEXPORT jint JNICALL Java_com_sun_glass_ui_gtk_GtkAp + + gdk_threads_enter(); + gtk_init(NULL, NULL); ++ gdk_threads_leave(); + + return JNI_TRUE; + } diff --git a/java/openjfx8-devel/files/patch-modules_graphics_src_main_native-glass_gtk_glass__general.cpp b/java/openjfx8-devel/files/patch-modules_graphics_src_main_native-glass_gtk_glass__general.cpp deleted file mode 100644 index b7ee01c502cb..000000000000 --- a/java/openjfx8-devel/files/patch-modules_graphics_src_main_native-glass_gtk_glass__general.cpp +++ /dev/null @@ -1,10 +0,0 @@ ---- modules/graphics/src/main/native-glass/gtk/glass_general.cpp.orig 2017-09-08 16:56:55 UTC -+++ modules/graphics/src/main/native-glass/gtk/glass_general.cpp -@@ -372,6 +372,7 @@ JNI_OnLoad(JavaVM *jvm, void *reserved) - - gdk_threads_enter(); - gtk_init(NULL, NULL); -+ gdk_threads_leave(); - - return JNI_VERSION_1_6; - } diff --git a/java/openjfx8-devel/files/patch-modules_graphics_src_main_native-glass_gtk_glass__window.h b/java/openjfx8-devel/files/patch-modules_graphics_src_main_native-glass_gtk_glass__window.h index f57060221460..ad05d792416a 100644 --- a/java/openjfx8-devel/files/patch-modules_graphics_src_main_native-glass_gtk_glass__window.h +++ b/java/openjfx8-devel/files/patch-modules_graphics_src_main_native-glass_gtk_glass__window.h @@ -1,4 +1,4 @@ ---- modules/graphics/src/main/native-glass/gtk/glass_window.h.orig 2017-09-08 16:56:55 UTC +--- modules/graphics/src/main/native-glass/gtk/glass_window.h.orig 2018-12-10 16:30:22 UTC +++ modules/graphics/src/main/native-glass/gtk/glass_window.h @@ -365,7 +365,7 @@ class WindowContextChild: public WindowContextBase { ( class WindowContextTop: public WindowContextBase { @@ -7,8 +7,8 @@ - struct WindowContext *owner; + WindowContext *owner; WindowGeometry geometry; - int stale_config_notifications; struct _Resizable{// we can't use set/get gtk_window_resizable function + _Resizable(): request(REQUEST_NONE), value(true), prev(false), @@ -455,4 +455,3 @@ class EventsCounterHelper { (public) }; diff --git a/java/openjfx8-devel/files/patch-modules_graphics_src_main_native-glass_gtk_launcher.c b/java/openjfx8-devel/files/patch-modules_graphics_src_main_native-glass_gtk_launcher.c new file mode 100644 index 000000000000..7e9ef50a07ba --- /dev/null +++ b/java/openjfx8-devel/files/patch-modules_graphics_src_main_native-glass_gtk_launcher.c @@ -0,0 +1,10 @@ +--- modules/graphics/src/main/native-glass/gtk/launcher.c.orig 2019-07-22 07:33:51 UTC ++++ modules/graphics/src/main/native-glass/gtk/launcher.c +@@ -25,7 +25,6 @@ + + #include <stdio.h> + #include <stdlib.h> +-#include <linux/fb.h> + #include <fcntl.h> + #ifndef __USE_GNU // required for dladdr() & Dl_info + #define __USE_GNU diff --git a/java/openjfx8-devel/files/patch-modules_graphics_src_main_native-glass_gtk_wrapped.c b/java/openjfx8-devel/files/patch-modules_graphics_src_main_native-glass_gtk_wrapped.c new file mode 100644 index 000000000000..fff612e73e08 --- /dev/null +++ b/java/openjfx8-devel/files/patch-modules_graphics_src_main_native-glass_gtk_wrapped.c @@ -0,0 +1,10 @@ +--- modules/graphics/src/main/native-glass/gtk/wrapped.c.orig 2019-07-22 07:33:14 UTC ++++ modules/graphics/src/main/native-glass/gtk/wrapped.c +@@ -24,7 +24,6 @@ + */ + + #include <stdio.h> +-#include <linux/fb.h> + #include <fcntl.h> + #ifndef __USE_GNU // required for dladdr() & Dl_info + #define __USE_GNU diff --git a/java/openjfx8-devel/files/patch-modules_media_src_main_java_com_sun_media_jfxmediaimpl_HostUtils.java b/java/openjfx8-devel/files/patch-modules_media_src_main_java_com_sun_media_jfxmediaimpl_HostUtils.java new file mode 100644 index 000000000000..7df72a648511 --- /dev/null +++ b/java/openjfx8-devel/files/patch-modules_media_src_main_java_com_sun_media_jfxmediaimpl_HostUtils.java @@ -0,0 +1,13 @@ +--- modules/media/src/main/java/com/sun/media/jfxmediaimpl/HostUtils.java.orig 2019-07-22 19:01:46 UTC ++++ modules/media/src/main/java/com/sun/media/jfxmediaimpl/HostUtils.java +@@ -66,6 +66,10 @@ public class HostUtils { + return osName.startsWith("linux"); + } + ++ public static boolean isFreeBSD() { ++ return osName.startsWith("freebsd"); ++ } ++ + public static boolean isIOS() { + return osName.startsWith("ios"); + } diff --git a/java/openjfx8-devel/files/patch-modules_media_src_main_java_com_sun_media_jfxmediaimpl_NativeMediaManager.java b/java/openjfx8-devel/files/patch-modules_media_src_main_java_com_sun_media_jfxmediaimpl_NativeMediaManager.java new file mode 100644 index 000000000000..79401c1b9000 --- /dev/null +++ b/java/openjfx8-devel/files/patch-modules_media_src_main_java_com_sun_media_jfxmediaimpl_NativeMediaManager.java @@ -0,0 +1,11 @@ +--- modules/media/src/main/java/com/sun/media/jfxmediaimpl/NativeMediaManager.java.orig 2019-07-22 19:02:57 UTC ++++ modules/media/src/main/java/com/sun/media/jfxmediaimpl/NativeMediaManager.java +@@ -108,7 +108,7 @@ public class NativeMediaManager { + NativeLibLoader.loadLibrary("glib-lite"); + } + +- if (!HostUtils.isLinux() && !HostUtils.isIOS()) { ++ if (!HostUtils.isFreeBSD() && !HostUtils.isLinux() && !HostUtils.isIOS()) { + NativeLibLoader.loadLibrary("gstreamer-lite"); + } + diff --git a/java/openjfx8-devel/files/patch-modules_media_src_main_native_gstreamer_gstreamer-lite_gstreamer_gst_gstregistry.c b/java/openjfx8-devel/files/patch-modules_media_src_main_native_gstreamer_gstreamer-lite_gstreamer_gst_gstregistry.c new file mode 100644 index 000000000000..073b3f7bfd41 --- /dev/null +++ b/java/openjfx8-devel/files/patch-modules_media_src_main_native_gstreamer_gstreamer-lite_gstreamer_gst_gstregistry.c @@ -0,0 +1,11 @@ +--- modules/media/src/main/native/gstreamer/gstreamer-lite/gstreamer/gst/gstregistry.c.orig 2019-07-23 04:09:55 UTC ++++ modules/media/src/main/native/gstreamer/gstreamer-lite/gstreamer/gst/gstregistry.c +@@ -143,7 +143,7 @@ static const int AVCODEC_LIBAV_EXPLICIT_VERSIONS[] = { + // For ffmpeg (libavcodec-ffmpeg.so) + static const int AVCODEC_FFMPEG_EXPLICIT_VERSIONS[] = { 56 }; + // For libav or ffmpeg (libavcodec.so) +-static const int AVCODEC_EXPLICIT_VERSIONS[] = { 57 }; ++static const int AVCODEC_EXPLICIT_VERSIONS[] = { 58, 57 }; + + /* + * Callback passed to dl_iterate_phdr(): finds the path of diff --git a/java/openjfx8-devel/files/patch-modules_media_src_main_native_gstreamer_gstreamer-lite_projects_build_linux_common_config.h b/java/openjfx8-devel/files/patch-modules_media_src_main_native_gstreamer_gstreamer-lite_projects_build_linux_common_config.h new file mode 100644 index 000000000000..47b03d595243 --- /dev/null +++ b/java/openjfx8-devel/files/patch-modules_media_src_main_native_gstreamer_gstreamer-lite_projects_build_linux_common_config.h @@ -0,0 +1,18 @@ +--- modules/media/src/main/native/gstreamer/gstreamer-lite/projects/build/linux/common/config.h.orig 2019-07-22 15:39:06 UTC ++++ modules/media/src/main/native/gstreamer/gstreamer-lite/projects/build/linux/common/config.h +@@ -264,7 +264,7 @@ + #define HAVE_SYS_POLL_H 1 + + /* Define to 1 if you have the <sys/prctl.h> header file. */ +-#define HAVE_SYS_PRCTL_H 1 ++#undef HAVE_SYS_PRCTL_H + + /* Define to 1 if you have the <sys/socket.h> header file. */ + #define HAVE_SYS_SOCKET_H 1 +@@ -430,4 +430,4 @@ + /* Define to `unsigned int' if <sys/types.h> does not define. */ + /* #undef size_t */ + +-#define DISABLE_ORC +\ No newline at end of file ++#define DISABLE_ORC diff --git a/java/openjfx8-devel/files/patch-modules_media_src_main_native_gstreamer_projects_bsd_avplugin_Makefile b/java/openjfx8-devel/files/patch-modules_media_src_main_native_gstreamer_projects_bsd_avplugin_Makefile new file mode 100644 index 000000000000..a635fa4cb392 --- /dev/null +++ b/java/openjfx8-devel/files/patch-modules_media_src_main_native_gstreamer_projects_bsd_avplugin_Makefile @@ -0,0 +1,29 @@ +--- modules/media/src/main/native/gstreamer/projects/bsd/avplugin/Makefile.orig 2019-07-22 15:50:27 UTC ++++ modules/media/src/main/native/gstreamer/projects/bsd/avplugin/Makefile +@@ -43,19 +43,23 @@ else + CFLAGS += -g -Wall + endif + ++PACKAGES_INCLUDES := $(shell pkg-config --cflags glib-2.0 gio-2.0 gobject-2.0 gthread-2.0) ++PACKAGES_LIBS := $(shell pkg-config --libs glib-2.0 gio-2.0 gobject-2.0 gthread-2.0) ++ + INCLUDES= -I../../../plugins \ + -I../../../plugins/av \ + -I../../../gstreamer-lite/gstreamer \ + -I../../../gstreamer-lite/gstreamer/libs \ + -I$(GLIB_DIR) \ + -I$(GLIB_DIR)/glib \ +- -I$(GLIB_DIR)/gmodule ++ -I$(GLIB_DIR)/gmodule \ ++ $(PACKAGES_INCLUDES) + + LDFLAGS = -L$(BUILD_DIR) \ + -z relro \ + -lgstreamer-lite \ +- -lglib-lite \ +- -static-libgcc -static-libstdc++ -Wl,--gc-sections ++ $(PACKAGES_LIBS) \ ++ -Wl,--gc-sections + + ifneq ($(strip $(LIBAV_DIR)),) + INCLUDES += -I$(LIBAV_DIR)/include diff --git a/java/openjfx8-devel/files/patch-modules_media_src_main_native_gstreamer_projects_bsd_fxplugins_Makefile b/java/openjfx8-devel/files/patch-modules_media_src_main_native_gstreamer_projects_bsd_fxplugins_Makefile new file mode 100644 index 000000000000..476af3b93c8e --- /dev/null +++ b/java/openjfx8-devel/files/patch-modules_media_src_main_native_gstreamer_projects_bsd_fxplugins_Makefile @@ -0,0 +1,28 @@ +--- modules/media/src/main/native/gstreamer/projects/bsd/fxplugins/Makefile.orig 2019-07-22 15:43:47 UTC ++++ modules/media/src/main/native/gstreamer/projects/bsd/fxplugins/Makefile +@@ -45,17 +45,21 @@ else + endif + + ++PACKAGES_INCLUDES := $(shell pkg-config --cflags glib-2.0 gio-2.0 gobject-2.0 gthread-2.0) ++PACKAGES_LIBS := $(shell pkg-config --libs glib-2.0 gio-2.0 gobject-2.0 gthread-2.0) ++ + INCLUDES = -I$(SRCBASE_DIR) \ + $(addprefix -I$(SRCBASE_DIR)/,$(DIRLIST)) \ + -I../../../gstreamer-lite/gstreamer \ + -I../../../gstreamer-lite/gstreamer/libs \ + -I$(GLIB_DIR) \ + -I$(GLIB_DIR)/glib \ +- -I$(GLIB_DIR)/gmodule ++ -I$(GLIB_DIR)/gmodule \ ++ $(PACKAGES_INCLUDES) + +-LDFLAGS = -L$(BUILD_DIR) -lgstreamer-lite -lglib-lite \ +- -z relro \ +- -static-libgcc -static-libstdc++ -Wl,--gc-sections ++LDFLAGS = -L$(BUILD_DIR) -lgstreamer-lite \ ++ -z relro -Wl,--gc-sections \ ++ $(PACKAGES_LIBS) + + ifeq ($(ARCH), x32) + CFLAGS += -m32 diff --git a/java/openjfx8-devel/files/patch-modules_media_src_main_native_gstreamer_projects_bsd_gstreamer-lite_Makefile b/java/openjfx8-devel/files/patch-modules_media_src_main_native_gstreamer_projects_bsd_gstreamer-lite_Makefile index cc61d4f26f4d..364c7a6557ac 100644 --- a/java/openjfx8-devel/files/patch-modules_media_src_main_native_gstreamer_projects_bsd_gstreamer-lite_Makefile +++ b/java/openjfx8-devel/files/patch-modules_media_src_main_native_gstreamer_projects_bsd_gstreamer-lite_Makefile @@ -1,6 +1,6 @@ ---- modules/media/src/main/native/gstreamer/projects/bsd/gstreamer-lite/Makefile.orig 2017-10-03 19:30:23 UTC +--- modules/media/src/main/native/gstreamer/projects/bsd/gstreamer-lite/Makefile.orig 2019-07-22 07:19:58 UTC +++ modules/media/src/main/native/gstreamer/projects/bsd/gstreamer-lite/Makefile -@@ -27,7 +27,7 @@ DIRLIST = gstreamer/gst \ +@@ -31,7 +31,7 @@ DIRLIST = gstreamer/gst \ gst-plugins-base/gst/volume \ gst-plugins-good/gst/audioparsers \ gst-plugins-good/gst/isomp4 \ @@ -9,30 +9,34 @@ gst-plugins-good/gst/audiofx \ gst-plugins-good/gst/equalizer \ gst-plugins-good/gst/spectrum \ -@@ -67,10 +67,10 @@ INCLUDES = -I$(BASE_DIR)/plugins - -I$(SRCBASE_DIR)/gst-plugins-good/gst/isomp4 \ - -I$(SRCBASE_DIR)/gst-plugins-bad/gst-libs +@@ -80,13 +80,11 @@ INCLUDES = -I$(BASE_DIR)/plugins + -I$(GLIB_DIR)/glib \ + -I$(GLIB_DIR)/gmodule --PACKAGES_INCLUDES := $(shell pkg-config --cflags alsa glib-2.0) --PACKAGES_LIBS := $(shell pkg-config --libs alsa glib-2.0 gobject-2.0 gmodule-2.0 gthread-2.0) -+PACKAGES_INCLUDES := $(shell pkg-config --cflags glib-2.0) -+PACKAGES_LIBS := $(shell pkg-config --libs glib-2.0 gobject-2.0 gmodule-2.0 gthread-2.0) - --LDFLAGS = -L$(BUILD_DIR) -lm $(PACKAGES_LIBS) -+LDFLAGS = -L$(BUILD_DIR) -lm $(PACKAGES_LIBS) -lsndio +-PACKAGES_INCLUDES := $(shell pkg-config --cflags alsa) +-PACKAGES_LIBS := $(shell pkg-config --libs alsa) ++PACKAGES_INCLUDES := $(shell pkg-config --cflags glib-2.0 gio-2.0 gobject-2.0 gthread-2.0) ++PACKAGES_LIBS := $(shell pkg-config --libs glib-2.0 gio-2.0 gobject-2.0 gthread-2.0) ++ ++LDFLAGS = -L$(BUILD_DIR) -lm $(PACKAGES_LIBS) -l sndio -z relro +-LDFLAGS = -L$(BUILD_DIR) -lm -lglib-lite $(PACKAGES_LIBS) \ +- -z relro \ +- -static-libgcc -static-libstdc++ -Wl,--gc-sections +- ifeq ($(ARCH), x32) CFLAGS += -m32 -@@ -227,10 +227,8 @@ SOURCES = \ - gst-plugins-good/gst/isomp4/qtdemux_dump.c \ - gst-plugins-good/gst/isomp4/qtdemux_types.c \ - gst-plugins-good/gst/isomp4/qtdemux.c \ -- gst-plugins-base/ext/alsa/gstalsaplugin.c \ -- gst-plugins-base/ext/alsa/gstalsa.c \ -- gst-plugins-base/ext/alsa/gstalsadeviceprobe.c \ -- gst-plugins-base/ext/alsa/gstalsasink.c \ -+ gst-plugins-base/ext/bsdaudio/gstbsdaudio.c \ -+ gst-plugins-base/ext/bsdaudio/bsdaudiosink.c \ - gst-plugins-good/gst/audiofx/audiofx.c \ - gst-plugins-good/gst/audiofx/audiopanorama.c \ - gst-plugins-good/gst/equalizer/gstiirequalizer.c \ + LDFLAGS += -m32 +@@ -264,10 +262,8 @@ SOURCES = \ + gstreamer/plugins/elements/gsttypefindelement.c \ + gst-plugins-base/gst/volume/gstvolume.c \ + gst-plugins-base/gst/volume/gstvolumeorc-dist.c \ +- gst-plugins-base/ext/alsa/gstalsaplugin.c \ +- gst-plugins-base/ext/alsa/gstalsa.c \ +- gst-plugins-base/ext/alsa/gstalsadeviceprobe.c \ +- gst-plugins-base/ext/alsa/gstalsasink.c \ ++ gst-plugins-base/ext/bsdaudio/gstbsdaudio.c \ ++ gst-plugins-base/ext/bsdaudio/bsdaudiosink.c \ + projects/plugins/gstplugins-lite.c + + OBJ_DIRS = $(addprefix $(OBJBASE_DIR)/,$(DIRLIST)) diff --git a/java/openjfx8-devel/files/patch-modules_media_src_main_native_jfxmedia_projects_bsd_Makefile b/java/openjfx8-devel/files/patch-modules_media_src_main_native_jfxmedia_projects_bsd_Makefile index 2b1eae925e67..031dd1ba9c6a 100644 --- a/java/openjfx8-devel/files/patch-modules_media_src_main_native_jfxmedia_projects_bsd_Makefile +++ b/java/openjfx8-devel/files/patch-modules_media_src_main_native_jfxmedia_projects_bsd_Makefile @@ -1,4 +1,4 @@ ---- modules/media/src/main/native/jfxmedia/projects/bsd/Makefile.orig 2017-10-03 19:30:23 UTC +--- modules/media/src/main/native/jfxmedia/projects/bsd/Makefile.orig 2019-07-22 15:35:34 UTC +++ modules/media/src/main/native/jfxmedia/projects/bsd/Makefile @@ -1,5 +1,5 @@ # @@ -15,7 +15,17 @@ -D_GNU_SOURCE \ -DGST_REMOVE_DEPRECATED \ -DGST_DISABLE_GST_DEBUG \ -@@ -46,7 +47,7 @@ ifdef HOST_COMPILE +@@ -34,6 +35,9 @@ CPPFLAGS = -fno-rtti -ffunction-sections -fdata-sectio + BASE_INCLUDES = -I$(SRCBASE_DIR) \ + -I$(GENERATED_HEADERS_DIR) + ++PACKAGES_INCLUDES := $(shell pkg-config --cflags glib-2.0 gio-2.0 gobject-2.0 gthread-2.0) ++PACKAGES_LIBS := $(shell pkg-config --libs glib-2.0 gio-2.0 gobject-2.0 gthread-2.0) ++ + ifdef HOST_COMPILE + GSTREAMER_LITE_DIR = ../../../gstreamer/gstreamer-lite + GLIB_LITE_DIR = ../../../gstreamer/3rd_party/glib/glib-2.56.1 +@@ -49,17 +53,17 @@ ifdef HOST_COMPILE INCLUDES = $(BASE_INCLUDES) \ -I$(JAVA_HOME)/include \ @@ -24,3 +34,17 @@ -I$(GSTREAMER_LITE_DIR)/gstreamer \ -I$(GSTREAMER_LITE_DIR)/gst-plugins-base/gst-libs \ -I$(GSTREAMER_LITE_DIR)/gstreamer/libs \ + -I$(GLIB_LITE_DIR)/ \ + -I$(GLIB_LITE_DIR)/glib \ +- -I$(GLIB_LITE_DIR)/gmodule ++ -I$(GLIB_LITE_DIR)/gmodule \ ++ $(PACKAGES_INCLUDES) + +- LDFLAGS = -Wl,-rpath,\$$ORIGIN -L$(BUILD_DIR) -lgstreamer-lite -lglib-lite \ +- -z relro \ +- -static-libgcc -static-libstdc++ -Wl,--gc-sections ++ LDFLAGS = -Wl,-rpath,\$$ORIGIN -L$(BUILD_DIR) -lgstreamer-lite \ ++ -z relro $(PACKAGES_LIBS) -Wl,--gc-sections + else + CFLAGS += $(EXTRA_CFLAGS) + INCLUDES = $(BASE_INCLUDES) diff --git a/java/openjfx8-devel/files/patch-modules_swing_src_main_java_javafx_embed_swing_JFXPanel.java b/java/openjfx8-devel/files/patch-modules_swing_src_main_java_javafx_embed_swing_JFXPanel.java new file mode 100644 index 000000000000..edaf8a97af43 --- /dev/null +++ b/java/openjfx8-devel/files/patch-modules_swing_src_main_java_javafx_embed_swing_JFXPanel.java @@ -0,0 +1,20 @@ +--- modules/swing/src/main/java/javafx/embed/swing/JFXPanel.java.orig 2019-07-22 18:59:20 UTC ++++ modules/swing/src/main/java/javafx/embed/swing/JFXPanel.java +@@ -995,7 +995,7 @@ public class JFXPanel extends JComponent { + public boolean grabFocus() { + // On X11 grab is limited to a single XDisplay connection, + // so we can't delegate it to another GUI toolkit. +- if (PlatformUtil.isLinux()) return true; ++ if (PlatformUtil.isLinux() || PlatformUtil.isFreeBSD()) return true; + + invokeOnClientEDT(() -> { + Window window = SwingUtilities.getWindowAncestor(JFXPanel.this); +@@ -1013,7 +1013,7 @@ public class JFXPanel extends JComponent { + public void ungrabFocus() { + // On X11 grab is limited to a single XDisplay connection, + // so we can't delegate it to another GUI toolkit. +- if (PlatformUtil.isLinux()) return; ++ if (PlatformUtil.isLinux() || PlatformUtil.isFreeBSD()) return; + + invokeOnClientEDT(() -> { + Window window = SwingUtilities.getWindowAncestor(JFXPanel.this); diff --git a/java/openjfx8-devel/files/patch-modules_swing_src_main_java_javafx_embed_swing_SwingNode.java b/java/openjfx8-devel/files/patch-modules_swing_src_main_java_javafx_embed_swing_SwingNode.java new file mode 100644 index 000000000000..3108ce911230 --- /dev/null +++ b/java/openjfx8-devel/files/patch-modules_swing_src_main_java_javafx_embed_swing_SwingNode.java @@ -0,0 +1,11 @@ +--- modules/swing/src/main/java/javafx/embed/swing/SwingNode.java.orig 2019-07-22 18:58:46 UTC ++++ modules/swing/src/main/java/javafx/embed/swing/SwingNode.java +@@ -860,7 +860,7 @@ public class SwingNode extends Node { + SwingFXUtils.runOnFxThread(() -> { + // On X11 grab is limited to a single XDisplay connection, + // so we can't delegate it to another GUI toolkit. +- if (PlatformUtil.isLinux()) return; ++ if (PlatformUtil.isLinux() || PlatformUtil.isFreeBSD()) return; + + SwingNode swingNode = swingNodeRef.get(); + if (swingNode != null) { diff --git a/java/openjfx8-devel/files/patch-modules_web_src_main_native_Source_JavaScriptCore_PlatformJava.cmake b/java/openjfx8-devel/files/patch-modules_web_src_main_native_Source_JavaScriptCore_PlatformJava.cmake deleted file mode 100644 index 2599b506351f..000000000000 --- a/java/openjfx8-devel/files/patch-modules_web_src_main_native_Source_JavaScriptCore_PlatformJava.cmake +++ /dev/null @@ -1,8 +0,0 @@ ---- modules/web/src/main/native/Source/JavaScriptCore/PlatformJava.cmake.orig 2017-09-08 16:56:55 UTC -+++ modules/web/src/main/native/Source/JavaScriptCore/PlatformJava.cmake -@@ -46,4 +46,4 @@ list(APPEND JavaScriptCore_SYSTEM_INCLUDE_DIRECTORIES - ${JDK_INCLUDE_DIRS} - ) - --add_dependencies(WTF icudatagen) -+#add_dependencies(WTF icudatagen) diff --git a/java/openjfx8-devel/files/patch-modules_web_src_main_native_Source_WTF_wtf_CMakeLists.txt b/java/openjfx8-devel/files/patch-modules_web_src_main_native_Source_WTF_wtf_CMakeLists.txt index 6c7aa8dc0086..17ced47ed03e 100644 --- a/java/openjfx8-devel/files/patch-modules_web_src_main_native_Source_WTF_wtf_CMakeLists.txt +++ b/java/openjfx8-devel/files/patch-modules_web_src_main_native_Source_WTF_wtf_CMakeLists.txt @@ -1,6 +1,6 @@ ---- modules/web/src/main/native/Source/WTF/wtf/CMakeLists.txt.orig 2018-01-16 01:40:56 UTC +--- modules/web/src/main/native/Source/WTF/wtf/CMakeLists.txt.orig 2018-07-27 01:38:45 UTC +++ modules/web/src/main/native/Source/WTF/wtf/CMakeLists.txt -@@ -343,6 +343,7 @@ list(APPEND WTF_SOURCES +@@ -464,6 +464,7 @@ list(APPEND WTF_SOURCES ) set(WTF_SYSTEM_INCLUDE_DIRECTORIES ${ICU_INCLUDE_DIRS} diff --git a/java/openjfx8-devel/files/patch-modules_web_src_main_native_Source_WTF_wtf_Optional.h b/java/openjfx8-devel/files/patch-modules_web_src_main_native_Source_WTF_wtf_Optional.h index e5b6835d430b..43b6422f2d5d 100644 --- a/java/openjfx8-devel/files/patch-modules_web_src_main_native_Source_WTF_wtf_Optional.h +++ b/java/openjfx8-devel/files/patch-modules_web_src_main_native_Source_WTF_wtf_Optional.h @@ -1,6 +1,6 @@ ---- modules/web/src/main/native/Source/WTF/wtf/Optional.h.orig 2018-03-23 23:53:57 UTC +--- modules/web/src/main/native/Source/WTF/wtf/Optional.h.orig 2018-12-10 16:30:22 UTC +++ modules/web/src/main/native/Source/WTF/wtf/Optional.h -@@ -295,12 +295,14 @@ struct nullopt_t +@@ -291,12 +291,14 @@ struct nullopt_t constexpr nullopt_t nullopt{nullopt_t::init()}; diff --git a/java/openjfx8-devel/files/patch-modules_web_src_main_native_Source_WebCore_CMakeLists.txt b/java/openjfx8-devel/files/patch-modules_web_src_main_native_Source_WebCore_CMakeLists.txt deleted file mode 100644 index 7ac24870f680..000000000000 --- a/java/openjfx8-devel/files/patch-modules_web_src_main_native_Source_WebCore_CMakeLists.txt +++ /dev/null @@ -1,10 +0,0 @@ ---- modules/web/src/main/native/Source/WebCore/CMakeLists.txt.orig 2018-03-23 23:53:57 UTC -+++ modules/web/src/main/native/Source/WebCore/CMakeLists.txt -@@ -131,6 +131,7 @@ set(WebCore_INCLUDE_DIRECTORIES - - set(WebCore_SYSTEM_INCLUDE_DIRECTORIES - ${ICU_INCLUDE_DIRS} -+ ${CMAKE_INSTALL_PREFIX}/include/libxml2 - ) - - set(WebCore_IDL_INCLUDES diff --git a/java/openjfx8-devel/files/patch-modules_web_src_main_native_Source_WebCore_PlatformJava.cmake b/java/openjfx8-devel/files/patch-modules_web_src_main_native_Source_WebCore_PlatformJava.cmake deleted file mode 100644 index d90aedd16d90..000000000000 --- a/java/openjfx8-devel/files/patch-modules_web_src_main_native_Source_WebCore_PlatformJava.cmake +++ /dev/null @@ -1,22 +0,0 @@ ---- modules/web/src/main/native/Source/WebCore/PlatformJava.cmake.orig 2018-03-23 23:53:57 UTC -+++ modules/web/src/main/native/Source/WebCore/PlatformJava.cmake -@@ -188,8 +188,8 @@ elseif (APPLE) - endif () - - list(APPEND WebCore_LIBRARIES -- XMLJava -- XSLTJava -+ ${CMAKE_INSTALL_PREFIX}/lib/libxml2.so -+ ${CMAKE_INSTALL_PREFIX}/lib/libxslt.so - ) - - list(APPEND WebCore_USER_AGENT_STYLE_SHEETS -@@ -225,7 +225,7 @@ set(WebCore_FORWARDING_HEADERS_FILES - set(WebCore_USER_AGENT_SCRIPTS_DEPENDENCIES ${WEBCORE_DIR}/platform/java/RenderThemeJava.cpp) - - list(APPEND WebCore_LIBRARIES -- SqliteJava -+ ${CMAKE_INSTALL_PREFIX}/lib/libsqlite3.so - ${ICU_I18N_LIBRARIES} - ${ICU_LIBRARIES} - ) diff --git a/java/openjfx8-devel/files/patch-modules_web_src_main_native_Source_cmake_OptionsJava.cmake b/java/openjfx8-devel/files/patch-modules_web_src_main_native_Source_cmake_OptionsJava.cmake index 76727ffc1778..9c44785b7b68 100644 --- a/java/openjfx8-devel/files/patch-modules_web_src_main_native_Source_cmake_OptionsJava.cmake +++ b/java/openjfx8-devel/files/patch-modules_web_src_main_native_Source_cmake_OptionsJava.cmake @@ -1,29 +1,21 @@ ---- modules/web/src/main/native/Source/cmake/OptionsJava.cmake.orig 2018-03-23 23:53:57 UTC +--- modules/web/src/main/native/Source/cmake/OptionsJava.cmake.orig 2018-12-10 16:30:22 UTC +++ modules/web/src/main/native/Source/cmake/OptionsJava.cmake -@@ -49,9 +49,9 @@ elseif (APPLE) - set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) - elseif (UNIX) - #### ICU #### -- set(ICU_JAVA_COMMON_LIB icuuc) -- set(ICU_I18N_LIBRARIES icui18n) -- set(ICU_JAVA_DATA_LIB ${CMAKE_BINARY_DIR}/lib/libicudata.a) -+ set(ICU_JAVA_COMMON_LIB ${CMAKE_INSTALL_PREFIX}/lib/libicuuc.so) -+ set(ICU_I18N_LIBRARIES ${CMAKE_INSTALL_PREFIX}/lib/libicui18n.so) -+ set(ICU_JAVA_DATA_LIB ${CMAKE_INSTALL_PREFIX}/lib/libicudata.so) - #### ICU-END #### +@@ -26,14 +26,10 @@ endif () + set(LIB_INSTALL_DIR "${CMAKE_INSTALL_FULL_LIBDIR}" CACHE PATH "Absolute path to library installation directory") + set(EXEC_INSTALL_DIR "${CMAKE_INSTALL_FULL_BINDIR}" CACHE PATH "Absolute path to executable installation directory") - set(CMAKE_SKIP_RPATH TRUE) -@@ -60,11 +60,12 @@ else () - endif () - - set(ICU_INCLUDE_DIRS -+ "${CMAKE_INSTALL_PREFIX}/include" - "${THIRDPARTY_DIR}/icu/source/common" - "${THIRDPARTY_DIR}/icu/source/i18n" - ) - set(ICU_LIBRARIES ${ICU_JAVA_COMMON_LIB} ${ICU_JAVA_DATA_LIB}) +-set(SQLITE_LIBRARIES SqliteJava) +-set(LIBXML2_LIBRARIES XMLJava) +-set(LIBXSLT_LIBRARIES XSLTJava) +- +-set(ICU_LIBRARIES icuuc icudata) +-set(ICU_I18N_LIBRARIES icui18n icuuc icudata) +-set(ICU_DATA_LIBRARIES icudata) - -+set(ICU_LIBRARIES ${ICU_JAVA_COMMON_LIB} ${ICU_JAVA_DATA_LIB}) ++find_package(LibXml2 2.8.0 REQUIRED) ++find_package(LibXslt REQUIRED) ++find_package(Sqlite REQUIRED) ++find_package(ICU REQUIRED) find_package(JNI REQUIRED) find_package(Threads REQUIRED) diff --git a/java/openjfx8-devel/files/patch-modules_web_src_main_native_Source_cmake_WebKitCompilerFlags.cmake b/java/openjfx8-devel/files/patch-modules_web_src_main_native_Source_cmake_WebKitCompilerFlags.cmake new file mode 100644 index 000000000000..3d9c6bc1b652 --- /dev/null +++ b/java/openjfx8-devel/files/patch-modules_web_src_main_native_Source_cmake_WebKitCompilerFlags.cmake @@ -0,0 +1,13 @@ +--- modules/web/src/main/native/Source/cmake/WebKitCompilerFlags.cmake.orig 2019-07-22 23:29:21 UTC ++++ modules/web/src/main/native/Source/cmake/WebKitCompilerFlags.cmake +@@ -176,10 +176,6 @@ if (NOT MSVC) + string(REGEX MATCHALL "-fsanitize=[^ ]*" ENABLED_COMPILER_SANITIZERS ${CMAKE_CXX_FLAGS}) + endif () + +-if (UNIX AND NOT APPLE AND NOT ENABLED_COMPILER_SANITIZERS) +- set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined ${CMAKE_SHARED_LINKER_FLAGS}") +-endif () +- + + # CODE_GENERATOR_PREPROCESSOR_WITH_LINEMARKERS only matters with GCC >= 4.7.0. Since this + # version, -P does not output empty lines, which currently breaks make_names.pl in diff --git a/java/openjfx8-devel/files/patch-modules_web_src_main_native_Tools_DumpRenderTree_TestRunner.cpp b/java/openjfx8-devel/files/patch-modules_web_src_main_native_Tools_DumpRenderTree_TestRunner.cpp index 5bdfca88819f..51ce7bac8d53 100644 --- a/java/openjfx8-devel/files/patch-modules_web_src_main_native_Tools_DumpRenderTree_TestRunner.cpp +++ b/java/openjfx8-devel/files/patch-modules_web_src_main_native_Tools_DumpRenderTree_TestRunner.cpp @@ -1,6 +1,6 @@ ---- modules/web/src/main/native/Tools/DumpRenderTree/TestRunner.cpp.orig 2018-01-16 01:40:56 UTC +--- modules/web/src/main/native/Tools/DumpRenderTree/TestRunner.cpp.orig 2018-12-10 16:30:22 UTC +++ modules/web/src/main/native/Tools/DumpRenderTree/TestRunner.cpp -@@ -2400,7 +2400,7 @@ void TestRunner::runUIScript(JSContextRef context, JSS +@@ -2415,7 +2415,7 @@ void TestRunner::runUIScript(JSContextRef context, JSS if (!m_UIScriptContext) m_UIScriptContext = std::make_unique<WTR::UIScriptContext>(*this); diff --git a/java/openjfx8-devel/files/patch-modules_web_src_main_native_Tools_DumpRenderTree_java_CMakeLists.txt b/java/openjfx8-devel/files/patch-modules_web_src_main_native_Tools_DumpRenderTree_java_CMakeLists.txt index 9c522dbe29d2..7a390db949ff 100644 --- a/java/openjfx8-devel/files/patch-modules_web_src_main_native_Tools_DumpRenderTree_java_CMakeLists.txt +++ b/java/openjfx8-devel/files/patch-modules_web_src_main_native_Tools_DumpRenderTree_java_CMakeLists.txt @@ -1,13 +1,12 @@ ---- modules/web/src/main/native/Tools/DumpRenderTree/java/CMakeLists.txt.orig 2018-01-16 01:40:56 UTC +--- modules/web/src/main/native/Tools/DumpRenderTree/java/CMakeLists.txt.orig 2019-07-22 18:32:25 UTC +++ modules/web/src/main/native/Tools/DumpRenderTree/java/CMakeLists.txt -@@ -90,9 +90,7 @@ add_library(DumpRenderTreeJava SHARED ${DumpRenderTree +@@ -72,9 +72,5 @@ add_library(DumpRenderTreeJava SHARED ${DumpRenderTree add_definitions(-DWEBCORE_EXPORT=WTF_IMPORT -DWEBCORE_TESTSUPPORT_EXPORT=WTF_IMPORT) add_dependencies(DumpRenderTreeJava DumpRenderTreeBindings) -if (UNIX AND NOT APPLE) - set_target_properties(DumpRenderTreeJava PROPERTIES LINK_FLAGS "-Wl,--no-undefined") --elseif (WIN32) -+if (WIN32) - # Workaround for MSBuild. It always creates Release|Debug folder - # according to the build type on each target. - install(PROGRAMS ${CMAKE_BINARY_DIR}/bin/DumpRenderTreeJava.dll DESTINATION ${CMAKE_BINARY_DIR}/lib OPTIONAL) +-endif () +- + set_target_properties(DumpRenderTreeJava PROPERTIES OUTPUT_NAME "DumpRenderTreeJava") + target_link_libraries(DumpRenderTreeJava ${DumpRenderTree_LIBRARIES}) diff --git a/java/openjfx8-devel/files/patch-modules_web_src_main_native_Tools_Scripts_webkitdirs.pm b/java/openjfx8-devel/files/patch-modules_web_src_main_native_Tools_Scripts_webkitdirs.pm index aefc2e8f1871..5d1abb8af296 100644 --- a/java/openjfx8-devel/files/patch-modules_web_src_main_native_Tools_Scripts_webkitdirs.pm +++ b/java/openjfx8-devel/files/patch-modules_web_src_main_native_Tools_Scripts_webkitdirs.pm @@ -1,11 +1,11 @@ ---- modules/web/src/main/native/Tools/Scripts/webkitdirs.pm.orig 2018-01-16 01:40:56 UTC +--- modules/web/src/main/native/Tools/Scripts/webkitdirs.pm.orig 2018-07-27 01:38:45 UTC +++ modules/web/src/main/native/Tools/Scripts/webkitdirs.pm -@@ -2061,7 +2061,7 @@ sub generateBuildSystemFromCMakeProject +@@ -2148,7 +2148,7 @@ sub generateBuildSystemFromCMakeProject chdir($buildPath) or die; # We try to be smart about when to rerun cmake, so that we can have faster incremental builds. -- my $willUseNinja = canUseNinja() && canUseNinjaGenerator(); -+ my $willUseNinja = 0; # canUseNinja() && canUseNinjaGenerator(); +- my $willUseNinja = canUseNinja(); ++ my $willUseNinja = 0; # canUseNinja(); if (-e cmakeCachePath() && -e cmakeGeneratedBuildfile($willUseNinja)) { return 0; } diff --git a/java/openjfx8-devel/files/sndiosink.c b/java/openjfx8-devel/files/sndiosink.c index eda86ee726f2..cc68bd29d807 100644 --- a/java/openjfx8-devel/files/sndiosink.c +++ b/java/openjfx8-devel/files/sndiosink.c @@ -1,5 +1,6 @@ /* - * Copyright (C) <2008> Jacob Meuser <jakemsr@sdf.lonestar.org> + * Copyright (C) 2008 Jacob Meuser <jakemsr@sdf.lonestar.org> + * Copyright (C) 2012 Alexandre Ratchov <alex@caoua.org> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -34,491 +35,192 @@ #ifdef HAVE_CONFIG_H #include "config.h" #endif - #include "sndiosink.h" -#include <unistd.h> -#include <errno.h> - -#define _(x) x GST_DEBUG_CATEGORY_EXTERN (gst_sndio_debug); #define GST_CAT_DEFAULT gst_sndio_debug -enum -{ - PROP_0, - PROP_HOST -}; +#define gst_sndiosink_parent_class parent_class -static GstStaticPadTemplate sndio_sink_factory = +static GstStaticPadTemplate sndiosink_factory = GST_STATIC_PAD_TEMPLATE ("sink", - GST_PAD_SINK, - GST_PAD_ALWAYS, - GST_STATIC_CAPS ("audio/x-raw-int, " - "endianness = (int) { 1234, 4321 }, " - "signed = (boolean) { TRUE, FALSE }, " - "width = (int) { 8, 16, 24, 32 }, " - "depth = (int) { 8, 16, 24, 32 }, " - "rate = (int) [ 8000, 192000 ], " - "channels = (int) [ 1, 16 ] ") + GST_PAD_SINK, + GST_PAD_ALWAYS, + GST_STATIC_CAPS (GST_SNDIO_CAPS_STRING) ); -static void gst_sndiosink_finalize (GObject * object); - -static GstCaps *gst_sndiosink_getcaps (GstBaseSink * bsink); +G_DEFINE_TYPE_WITH_CODE (GstSndioSink, gst_sndiosink, GST_TYPE_AUDIO_SINK, + G_IMPLEMENT_INTERFACE (GST_TYPE_STREAM_VOLUME, NULL)); +static void gst_sndiosink_finalize (GObject * object); +static GstCaps *gst_sndiosink_getcaps (GstBaseSink * bsink, + GstCaps * filter); static gboolean gst_sndiosink_open (GstAudioSink * asink); static gboolean gst_sndiosink_close (GstAudioSink * asink); static gboolean gst_sndiosink_prepare (GstAudioSink * asink, - GstRingBufferSpec * spec); + GstAudioRingBufferSpec * spec); static gboolean gst_sndiosink_unprepare (GstAudioSink * asink); -static guint gst_sndiosink_write (GstAudioSink * asink, gpointer data, +static gint gst_sndiosink_write (GstAudioSink * asink, gpointer data, guint length); static guint gst_sndiosink_delay (GstAudioSink * asink); static void gst_sndiosink_reset (GstAudioSink * asink); - static void gst_sndiosink_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec); static void gst_sndiosink_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec); -static void gst_sndiosink_cb(void * addr, int delta); - -GST_BOILERPLATE (GstSndioSink, gst_sndiosink, GstAudioSink, GST_TYPE_AUDIO_SINK); - -static void -gst_sndiosink_base_init (gpointer g_class) -{ - GstElementClass *element_class = GST_ELEMENT_CLASS (g_class); - - gst_element_class_set_details_simple (element_class, - "Sndio audio sink", "Sink/Audio", "Plays audio through sndio", - "Jacob Meuser <jakemsr@sdf.lonestar.org>"); - - gst_element_class_add_pad_template (element_class, - gst_static_pad_template_get (&sndio_sink_factory)); -} - -static void -gst_sndiosink_class_init (GstSndioSinkClass * klass) -{ - GObjectClass *gobject_class; - GstBaseSinkClass *gstbasesink_class; - GstBaseAudioSinkClass *gstbaseaudiosink_class; - GstAudioSinkClass *gstaudiosink_class; - - gobject_class = (GObjectClass *) klass; - gstbasesink_class = (GstBaseSinkClass *) klass; - gstbaseaudiosink_class = (GstBaseAudioSinkClass *) klass; - gstaudiosink_class = (GstAudioSinkClass *) klass; - - parent_class = g_type_class_peek_parent (klass); - - gobject_class->finalize = gst_sndiosink_finalize; - - gstbasesink_class->get_caps = GST_DEBUG_FUNCPTR (gst_sndiosink_getcaps); - - gstaudiosink_class->open = GST_DEBUG_FUNCPTR (gst_sndiosink_open); - gstaudiosink_class->close = GST_DEBUG_FUNCPTR (gst_sndiosink_close); - gstaudiosink_class->prepare = GST_DEBUG_FUNCPTR (gst_sndiosink_prepare); - gstaudiosink_class->unprepare = GST_DEBUG_FUNCPTR (gst_sndiosink_unprepare); - gstaudiosink_class->write = GST_DEBUG_FUNCPTR (gst_sndiosink_write); - gstaudiosink_class->delay = GST_DEBUG_FUNCPTR (gst_sndiosink_delay); - gstaudiosink_class->reset = GST_DEBUG_FUNCPTR (gst_sndiosink_reset); - - gobject_class->set_property = gst_sndiosink_set_property; - gobject_class->get_property = gst_sndiosink_get_property; - - /* default value is filled in the _init method */ - g_object_class_install_property (gobject_class, PROP_HOST, - g_param_spec_string ("host", "Host", - "Device or socket sndio will access", NULL, G_PARAM_READWRITE)); -} static void -gst_sndiosink_init (GstSndioSink * sndiosink, GstSndioSinkClass * klass) +gst_sndiosink_init (GstSndioSink * sink) { - sndiosink->hdl = NULL; - sndiosink->host = g_strdup (g_getenv ("AUDIODEVICE")); + gst_sndio_init (&sink->sndio, G_OBJECT(sink)); } static void gst_sndiosink_finalize (GObject * object) { - GstSndioSink *sndiosink = GST_SNDIOSINK (object); - - gst_caps_replace (&sndiosink->cur_caps, NULL); - g_free (sndiosink->host); + GstSndioSink *sink = GST_SNDIOSINK (object); + gst_sndio_finalize (&sink->sndio); G_OBJECT_CLASS (parent_class)->finalize (object); } static GstCaps * -gst_sndiosink_getcaps (GstBaseSink * bsink) +gst_sndiosink_getcaps (GstBaseSink * bsink, GstCaps * filter) { - GstSndioSink *sndiosink; - - sndiosink = GST_SNDIOSINK (bsink); - - /* no hdl, we're done with the template caps */ - if (sndiosink->cur_caps == NULL) { - GST_LOG_OBJECT (sndiosink, "getcaps called, returning template caps"); - return NULL; - } - - GST_LOG_OBJECT (sndiosink, "returning %" GST_PTR_FORMAT, sndiosink->cur_caps); + GstSndioSink *sink = GST_SNDIOSINK (bsink); - return gst_caps_ref (sndiosink->cur_caps); + return gst_sndio_getcaps (&sink->sndio, filter); } static gboolean gst_sndiosink_open (GstAudioSink * asink) { - GstPadTemplate *pad_template; - GstSndioSink *sndiosink; - struct sio_par par; - struct sio_cap cap; - GArray *rates, *chans; - GValue rates_v = { 0 }; - GValue chans_v = { 0 }; - GValue value = { 0 }; - struct sio_enc enc; - struct sio_conf conf; - int confs[SIO_NCONF]; - int rate, chan; - int i, j, k; - int nconfs; - - sndiosink = GST_SNDIOSINK (asink); - - GST_DEBUG_OBJECT (sndiosink, "open"); - - /* conect */ - sndiosink->hdl = sio_open (sndiosink->host, SIO_PLAY, 0); - - if (sndiosink->hdl == NULL) - goto couldnt_connect; - - /* Use sndio defaults as the only encodings, but get the supported - * sample rates and number of channels. - */ - - if (!sio_getpar(sndiosink->hdl, &par)) - goto no_server_info; - - if (!sio_getcap(sndiosink->hdl, &cap)) - goto no_server_info; - - rates = g_array_new(FALSE, FALSE, sizeof(int)); - chans = g_array_new(FALSE, FALSE, sizeof(int)); - - /* find confs that have the default encoding */ - nconfs = 0; - for (i = 0; i < cap.nconf; i++) { - for (j = 0; j < SIO_NENC; j++) { - if (cap.confs[i].enc & (1 << j)) { - enc = cap.enc[j]; - if (enc.bits == par.bits && enc.sig == par.sig && enc.le == par.le) { - confs[nconfs] = i; - nconfs++; - break; - } - } - } - } - - /* find the rates and channels of the confs that have the default encoding */ - for (i = 0; i < nconfs; i++) { - conf = cap.confs[confs[i]]; - /* rates */ - for (j = 0; j < SIO_NRATE; j++) { - if (conf.rate & (1 << j)) { - rate = cap.rate[j]; - for (k = 0; k < rates->len && rate; k++) { - if (rate == g_array_index(rates, int, k)) - rate = 0; - } - /* add in ascending order */ - if (rate) { - for (k = 0; k < rates->len; k++) { - if (rate < g_array_index(rates, int, k)) { - g_array_insert_val(rates, k, rate); - break; - } - } - if (k == rates->len) - g_array_append_val(rates, rate); - } - } - } - /* channels */ - for (j = 0; j < SIO_NCHAN; j++) { - if (conf.pchan & (1 << j)) { - chan = cap.pchan[j]; - for (k = 0; k < chans->len && chan; k++) { - if (chan == g_array_index(chans, int, k)) - chan = 0; - } - /* add in ascending order */ - if (chan) { - for (k = 0; k < chans->len; k++) { - if (chan < g_array_index(chans, int, k)) { - g_array_insert_val(chans, k, chan); - break; - } - } - if (k == chans->len) - g_array_append_val(chans, chan); - } - } - } - } - /* not sure how this can happen, but it might */ - if (cap.nconf == 0) { - g_array_append_val(rates, par.rate); - g_array_append_val(chans, par.pchan); - } + GstSndioSink *sink = GST_SNDIOSINK (asink); - g_value_init(&rates_v, GST_TYPE_LIST); - g_value_init(&chans_v, GST_TYPE_LIST); - g_value_init(&value, G_TYPE_INT); - - for (i = 0; i < rates->len; i++) { - g_value_set_int(&value, g_array_index(rates, int, i)); - gst_value_list_append_value(&rates_v, &value); - } - for (i = 0; i < chans->len; i++) { - g_value_set_int(&value, g_array_index(chans, int, i)); - gst_value_list_append_value(&chans_v, &value); - } - - g_array_free(rates, TRUE); - g_array_free(chans, TRUE); - - pad_template = gst_static_pad_template_get (&sndio_sink_factory); - sndiosink->cur_caps = gst_caps_copy (gst_pad_template_get_caps (pad_template)); - gst_object_unref (pad_template); - - for (i = 0; i < sndiosink->cur_caps->structs->len; i++) { - GstStructure *s; - - s = gst_caps_get_structure (sndiosink->cur_caps, i); - gst_structure_set (s, "endianness", G_TYPE_INT, par.le ? 1234 : 4321, NULL); - gst_structure_set (s, "signed", G_TYPE_BOOLEAN, par.sig ? TRUE : FALSE, NULL); - gst_structure_set (s, "width", G_TYPE_INT, par.bits, NULL); - // gst_structure_set (s, "depth", G_TYPE_INT, par.bps * 8, NULL); /* XXX */ - gst_structure_set_value (s, "rate", &rates_v); - gst_structure_set_value (s, "channels", &chans_v); - } - - return TRUE; - - /* ERRORS */ -couldnt_connect: - { - GST_ELEMENT_ERROR (sndiosink, RESOURCE, OPEN_WRITE, - (_("Could not establish connection to sndio")), - ("can't open connection to sndio")); - return FALSE; - } -no_server_info: - { - GST_ELEMENT_ERROR (sndiosink, RESOURCE, OPEN_WRITE, - (_("Failed to query sndio capabilities")), - ("couldn't get sndio info!")); - return FALSE; - } + return gst_sndio_open (&sink->sndio, SIO_PLAY); } static gboolean gst_sndiosink_close (GstAudioSink * asink) { - GstSndioSink *sndiosink = GST_SNDIOSINK (asink); - - GST_DEBUG_OBJECT (sndiosink, "close"); - - gst_caps_replace (&sndiosink->cur_caps, NULL); - sio_close (sndiosink->hdl); - sndiosink->hdl = NULL; - - return TRUE; -} - -static void -gst_sndiosink_cb(void *addr, int delta) -{ - GstSndioSink *sndiosink = GST_SNDIOSINK ((GstAudioSink *)addr); - - sndiosink->realpos += delta; + GstSndioSink *sink = GST_SNDIOSINK (asink); - if (sndiosink->realpos >= sndiosink->playpos) - sndiosink->latency = 0; - else - sndiosink->latency = sndiosink->playpos - sndiosink->realpos; + return gst_sndio_close (&sink->sndio); } static gboolean -gst_sndiosink_prepare (GstAudioSink * asink, GstRingBufferSpec * spec) +gst_sndiosink_prepare (GstAudioSink * asink, GstAudioRingBufferSpec * spec) { - GstSndioSink *sndiosink = GST_SNDIOSINK (asink); - struct sio_par par; - int spec_bpf; - - GST_DEBUG_OBJECT (sndiosink, "prepare"); - - sndiosink->playpos = sndiosink->realpos = sndiosink->latency = 0; - - sio_initpar(&par); - par.sig = spec->sign; - par.le = !spec->bigend; - par.bits = spec->width; - // par.bps = spec->depth / 8; /* XXX */ - par.rate = spec->rate; - par.pchan = spec->channels; - - spec_bpf = ((spec->width / 8) * spec->channels); - - par.appbufsz = (spec->segsize * spec->segtotal) / spec_bpf; - - if (!sio_setpar(sndiosink->hdl, &par)) - goto cannot_configure; - - sio_getpar(sndiosink->hdl, &par); - - spec->sign = par.sig; - spec->bigend = !par.le; - spec->width = par.bits; - // spec->depth = par.bps * 8; /* XXX */ - spec->rate = par.rate; - spec->channels = par.pchan; - - sndiosink->bpf = par.bps * par.pchan; - - spec->segsize = par.round * par.pchan * par.bps; - spec->segtotal = par.bufsz / par.round; - - /* FIXME: this is wrong for signed ints (and the - * audioringbuffers should do it for us anyway) */ - spec->silence_sample[0] = 0; - spec->silence_sample[1] = 0; - spec->silence_sample[2] = 0; - spec->silence_sample[3] = 0; - - sio_onmove(sndiosink->hdl, gst_sndiosink_cb, sndiosink); - - if (!sio_start(sndiosink->hdl)) - goto cannot_start; - - GST_INFO_OBJECT (sndiosink, "successfully opened connection to sndio"); - - return TRUE; + GstSndioSink *sink = GST_SNDIOSINK (asink); - /* ERRORS */ -cannot_configure: - { - GST_ELEMENT_ERROR (sndiosink, RESOURCE, OPEN_WRITE, - (_("Could not configure sndio")), - ("can't configure sndio")); - return FALSE; - } -cannot_start: - { - GST_ELEMENT_ERROR (sndiosink, RESOURCE, OPEN_WRITE, - (_("Could not start sndio")), - ("can't start sndio")); - return FALSE; - } + return gst_sndio_prepare (&sink->sndio, spec); } static gboolean gst_sndiosink_unprepare (GstAudioSink * asink) { - GstSndioSink *sndiosink = GST_SNDIOSINK (asink); - - if (sndiosink->hdl == NULL) - return TRUE; + GstSndioSink *sink = GST_SNDIOSINK (asink); - sio_stop(sndiosink->hdl); - - return TRUE; + return gst_sndio_unprepare (&sink->sndio); } -static guint +static gint gst_sndiosink_write (GstAudioSink * asink, gpointer data, guint length) { - GstSndioSink *sndiosink = GST_SNDIOSINK (asink); + GstSndioSink *sink = GST_SNDIOSINK (asink); guint done; - done = sio_write (sndiosink->hdl, data, length); - - if (done == 0) - goto write_error; - - sndiosink->playpos += (done / sndiosink->bpf); - - data = (char *) data + done; - - return done; - - /* ERRORS */ -write_error: - { - GST_ELEMENT_ERROR (sndiosink, RESOURCE, WRITE, - ("Failed to write data to sndio"), GST_ERROR_SYSTEM); + if (length == 0) return 0; + done = sio_write (sink->sndio.hdl, data, length); + if (done == 0) { + GST_ELEMENT_ERROR (sink, RESOURCE, WRITE, + ("Failed to write data to sndio"), (NULL)); + return 0; } + sink->sndio.delay += done; + return done; } static guint gst_sndiosink_delay (GstAudioSink * asink) { - GstSndioSink *sndiosink = GST_SNDIOSINK (asink); - - if (sndiosink->latency == (guint) - 1) { - GST_WARNING_OBJECT (asink, "couldn't get latency"); - return 0; - } + GstSndioSink *sink = GST_SNDIOSINK (asink); - GST_DEBUG_OBJECT (asink, "got latency: %u", sndiosink->latency); - - return sndiosink->latency; + return GST_SNDIO_DELAY(&sink->sndio); } static void gst_sndiosink_reset (GstAudioSink * asink) { - /* no way to flush the buffers with sndio ? */ - - GST_DEBUG_OBJECT (asink, "reset called"); } static void -gst_sndiosink_set_property (GObject * object, guint prop_id, const GValue * value, - GParamSpec * pspec) +gst_sndiosink_set_property (GObject * object, guint prop_id, + const GValue * value, GParamSpec * pspec) { - GstSndioSink *sndiosink = GST_SNDIOSINK (object); - - switch (prop_id) { - case PROP_HOST: - g_free (sndiosink->host); - sndiosink->host = g_value_dup_string (value); - break; - default: - break; - } + GstSndioSink *sink = GST_SNDIOSINK (object); + + gst_sndio_set_property (&sink->sndio, prop_id, value, pspec); } static void gst_sndiosink_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec) { - GstSndioSink *sndiosink = GST_SNDIOSINK (object); - - switch (prop_id) { - case PROP_HOST: - g_value_set_string (value, sndiosink->host); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } + GstSndioSink *sink = GST_SNDIOSINK (object); + + gst_sndio_get_property (&sink->sndio, prop_id, value, pspec); +} + +static void +gst_sndiosink_class_init (GstSndioSinkClass * klass) +{ + GObjectClass *gobject_class; + GstElementClass *gstelement_class; + GstBaseSinkClass *gstbasesink_class; + GstAudioBaseSinkClass *gstbaseaudiosink_class; + GstAudioSinkClass *gstaudiosink_class; + + gobject_class = (GObjectClass *) klass; + gstelement_class = (GstElementClass *) klass; + gstbasesink_class = (GstBaseSinkClass *) klass; + gstbaseaudiosink_class = (GstAudioBaseSinkClass *) klass; + gstaudiosink_class = (GstAudioSinkClass *) klass; + + parent_class = g_type_class_peek_parent (klass); + + gobject_class->finalize = gst_sndiosink_finalize; + gobject_class->get_property = gst_sndiosink_get_property; + gobject_class->set_property = gst_sndiosink_set_property; + + gst_element_class_set_static_metadata (gstelement_class, + "Audio sink (sndio)", "Sink/Audio", + "Output to a sound card via sndio", + "Jacob Meuser <jakemsr@sdf.lonestar.org>"); + + gst_element_class_add_pad_template (gstelement_class, + gst_static_pad_template_get (&sndiosink_factory)); + + gstbasesink_class->get_caps = GST_DEBUG_FUNCPTR (gst_sndiosink_getcaps); + gstaudiosink_class->open = GST_DEBUG_FUNCPTR (gst_sndiosink_open); + gstaudiosink_class->prepare = GST_DEBUG_FUNCPTR (gst_sndiosink_prepare); + gstaudiosink_class->unprepare = GST_DEBUG_FUNCPTR (gst_sndiosink_unprepare); + gstaudiosink_class->close = GST_DEBUG_FUNCPTR (gst_sndiosink_close); + gstaudiosink_class->write = GST_DEBUG_FUNCPTR (gst_sndiosink_write); + gstaudiosink_class->delay = GST_DEBUG_FUNCPTR (gst_sndiosink_delay); + gstaudiosink_class->reset = GST_DEBUG_FUNCPTR (gst_sndiosink_reset); + + g_object_class_install_property (gobject_class, PROP_DEVICE, + g_param_spec_string ("device", "Device", + "sndio device as defined in sndio(7)", + SIO_DEVANY, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (gobject_class, PROP_VOLUME, + g_param_spec_double ("volume", "Volume", + "Linear volume of this stream, 1.0=100%", 0.0, 1.0, + 1.0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + g_object_class_install_property (gobject_class, PROP_MUTE, + g_param_spec_boolean ("mute", "Mute", + "Mute state of this stream", FALSE, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); } diff --git a/java/openjfx8-devel/files/sndiosink.h b/java/openjfx8-devel/files/sndiosink.h index 25bb8799bd4d..314e62210c54 100644 --- a/java/openjfx8-devel/files/sndiosink.h +++ b/java/openjfx8-devel/files/sndiosink.h @@ -1,5 +1,6 @@ /* - * Copyright (C) <2008> Jacob Meuser <jakemsr@sdf.lonestar.org> + * Copyright (C) 2008 Jacob Meuser <jakemsr@sdf.lonestar.org> + * Copyright (C) 2012 Alexandre Ratchov <alex@caoua.org> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -22,6 +23,7 @@ #include <gst/gst.h> #include <gst/audio/gstaudiosink.h> +#include "gstsndio.h" G_BEGIN_DECLS @@ -40,20 +42,8 @@ typedef struct _GstSndioSink GstSndioSink; typedef struct _GstSndioSinkClass GstSndioSinkClass; struct _GstSndioSink { - GstAudioSink sink; - - struct sio_hdl *hdl; - gchar *host; - - /* bytes per frame */ - int bpf; - - /* frames counts */ - volatile long long realpos; - volatile long long playpos; - volatile guint latency; - - GstCaps *cur_caps; + GstAudioSink sink; + struct gstsndio sndio; }; struct _GstSndioSinkClass { diff --git a/java/openjfx8-devel/pkg-plist b/java/openjfx8-devel/pkg-plist index 4365ce044bd9..4ee0836a4d38 100644 --- a/java/openjfx8-devel/pkg-plist +++ b/java/openjfx8-devel/pkg-plist @@ -4,6 +4,8 @@ %%JAVA_HOME%%/jre/lib/%%ARCH%%/libdecora_sse.so %%MEDIA%%%%JAVA_HOME%%/jre/lib/%%ARCH%%/libfxplugins.so %%JAVA_HOME%%/jre/lib/%%ARCH%%/libglass.so +%%JAVA_HOME%%/jre/lib/%%ARCH%%/libglassgtk2.so +%%JAVA_HOME%%/jre/lib/%%ARCH%%/libglassgtk3.so %%MEDIA%%%%JAVA_HOME%%/jre/lib/%%ARCH%%/libgstreamer-lite.so %%JAVA_HOME%%/jre/lib/%%ARCH%%/libjavafx_font.so %%JAVA_HOME%%/jre/lib/%%ARCH%%/libjavafx_font_freetype.so |