From f06a83c0b2f7761510836194a6c9a8a72000937c Mon Sep 17 00:00:00 2001
From: Matthias Klose
Date: Sat, 4 Aug 2007 10:53:49 +0000
Subject: [PATCH] Import GNU Classpath (libgcj-import-20070727).
libjava/
2007-08-04 Matthias Klose
Import GNU Classpath (libgcj-import-20070727).
* Regenerate class and header files.
* Regenerate auto* files.
* include/jvm.h:
* jni-libjvm.cc (Jv_JNI_InvokeFunctions): Rename type.
* jni.cc (_Jv_JNIFunctions, _Jv_JNI_InvokeFunctions): Likewise.
* jni.cc (_Jv_JNI_CallAnyMethodA, _Jv_JNI_CallAnyVoidMethodA,
_Jv_JNI_CallMethodA, _Jv_JNI_CallVoidMethodA,
_Jv_JNI_CallStaticMethodA, _Jv_JNI_CallStaticVoidMethodA,
_Jv_JNI_NewObjectA, _Jv_JNI_SetPrimitiveArrayRegion): Constify
jvalue parameter.
* java/lang/reflect/natMethod.cc (_Jv_CallAnyMethodA): Likewise.
* java/lang/VMFloat.java (toString, parseFloat): New.
* gnu/awt/xlib/XToolkit.java (setAlwaysOnTop, isModalityTypeSupported,
isModalExclusionTypeSupported): New (stub only).
* gnu/awt/xlib/XCanvasPeer.java (requestFocus): Likewise.
* gnu/awt/xlib/XFramePeer.java (updateMinimumSize, updateIconImages,
updateFocusableWindowState, setModalBlocked, getBoundsPrivate,
setAlwaysOnTop): Likewise.
* gnu/awt/xlib/XFontPeer.java (canDisplay): Update signature.
* scripts/makemake.tcl: Ignore gnu/javax/sound/sampled/gstreamer,
ignore javax.sound.sampled.spi.MixerProvider, ignore .in files.
* HACKING: Mention --enable-gstreamer-peer, removal of generated files.
libjava/classpath/
2007-08-04 Matthias Klose
* java/util/EnumMap.java (clone): Add cast.
From-SVN: r127204
---
libjava/ChangeLog | 32 +
libjava/HACKING | 14 +-
libjava/Makefile.in | 49 +-
libjava/classpath/ChangeLog | 1297 +++++++++++++++--
libjava/classpath/ChangeLog.gcj | 4 +
libjava/classpath/INSTALL | 363 ++---
libjava/classpath/Makefile.am | 3 +-
libjava/classpath/Makefile.in | 29 +-
libjava/classpath/NEWS | 7 +
libjava/classpath/autogen.sh | 75 +-
libjava/classpath/configure | 863 ++++++++---
libjava/classpath/configure.ac | 75 +-
libjava/classpath/depcomp | 64 +-
libjava/classpath/doc/Makefile.in | 15 +-
libjava/classpath/doc/api/Makefile.in | 15 +-
libjava/classpath/doc/texinfo.tex | 582 ++------
libjava/classpath/examples/Makefile.in | 15 +-
.../classpath/examples/awt/HintingDemo.java | 89 +-
libjava/classpath/external/Makefile.in | 15 +-
libjava/classpath/external/jsr166/Makefile.in | 15 +-
.../external/relaxngDatatype/Makefile.in | 15 +-
libjava/classpath/external/sax/Makefile.in | 15 +-
.../classpath/external/w3c_dom/Makefile.in | 15 +-
.../processor/ArrayReferenceCommandSet.java | 2 +-
.../gnu/java/awt/font/FontDelegate.java | 12 +-
.../java/awt/font/opentype/OpenTypeFont.java | 12 +-
.../java/awt/java2d/AbstractGraphics2D.java | 172 +--
.../gnu/java/awt/java2d/Pixelizer.java | 56 +
.../java/awt/java2d/ScanlineConverter.java | 107 +-
.../gnu/java/awt/java2d/ScanlineCoverage.java | 630 ++++++++
.../gnu/java/awt/java2d/ShapeCache.java | 5 +
.../gnu/java/awt/peer/ClasspathFontPeer.java | 2 +-
.../gnu/java/awt/peer/GLightweightPeer.java | 9 +
.../java/awt/peer/gtk/CairoGraphics2D.java | 5 +-
.../java/awt/peer/gtk/ComponentGraphics.java | 2 +-
.../awt/peer/gtk/FreetypeGlyphVector.java | 60 +-
.../gnu/java/awt/peer/gtk/GdkFontPeer.java | 12 +-
.../awt/peer/gtk/GdkGraphicsEnvironment.java | 17 +-
.../java/awt/peer/gtk/GdkPixbufDecoder.java | 10 +
.../gnu/java/awt/peer/gtk/GdkRobotPeer.java | 5 +
.../awt/peer/gtk/GdkScreenGraphicsDevice.java | 18 +-
.../java/awt/peer/gtk/GtkComponentPeer.java | 23 +-
.../gnu/java/awt/peer/gtk/GtkFramePeer.java | 7 +
.../gnu/java/awt/peer/gtk/GtkGenericPeer.java | 36 +
.../gnu/java/awt/peer/gtk/GtkToolkit.java | 44 +-
.../gnu/java/awt/peer/gtk/GtkWindowPeer.java | 25 +
.../awt/peer/gtk/VolatileImageGraphics.java | 12 +-
.../awt/peer/headless/HeadlessToolkit.java | 14 +
.../gnu/java/awt/peer/qt/QtComponentPeer.java | 10 +
.../gnu/java/awt/peer/qt/QtFontMetrics.java | 2 +-
.../gnu/java/awt/peer/qt/QtFontPeer.java | 2 +-
.../gnu/java/awt/peer/qt/QtFramePeer.java | 6 +
.../gnu/java/awt/peer/qt/QtToolkit.java | 15 +
.../gnu/java/awt/peer/qt/QtWindowPeer.java | 25 +
.../java/awt/peer/swing/SwingButtonPeer.java | 33 +-
.../awt/peer/swing/SwingCheckboxPeer.java | 261 ++++
.../java/awt/peer/swing/SwingComponent.java | 10 +
.../awt/peer/swing/SwingComponentPeer.java | 118 +-
.../awt/peer/swing/SwingContainerPeer.java | 20 +-
.../java/awt/peer/swing/SwingLabelPeer.java | 14 +-
.../java/awt/peer/swing/SwingListPeer.java | 14 +-
.../java/awt/peer/swing/SwingPanelPeer.java | 4 +-
.../awt/peer/swing/SwingTextAreaPeer.java | 213 ++-
.../awt/peer/swing/SwingTextFieldPeer.java | 43 +-
.../gnu/java/awt/peer/swing/SwingToolkit.java | 16 +
.../java/awt/peer/swing/SwingWindowPeer.java | 25 +
.../gnu/java/awt/peer/x/KeyboardMapping.java | 4 +
.../java/awt/peer/x/PixmapVolatileImage.java | 185 +++
.../gnu/java/awt/peer/x/XEventPump.java | 60 +-
.../gnu/java/awt/peer/x/XFontPeer.java | 759 ----------
.../gnu/java/awt/peer/x/XFontPeer2.java | 179 ++-
.../gnu/java/awt/peer/x/XFramePeer.java | 6 +
.../gnu/java/awt/peer/x/XGraphics.java | 792 ----------
.../gnu/java/awt/peer/x/XGraphics2D.java | 202 +--
.../awt/peer/x/XGraphicsConfiguration.java | 65 +-
.../gnu/java/awt/peer/x/XGraphicsDevice.java | 69 +-
.../classpath/gnu/java/awt/peer/x/XImage.java | 2 +-
.../gnu/java/awt/peer/x/XToolkit.java | 28 +-
.../gnu/java/awt/peer/x/XWindowPeer.java | 23 +-
.../java/awt/peer/x/ZPixmapDataBuffer.java | 62 +
libjava/classpath/gnu/java/math/Fixed.java | 13 +
.../gnu/java/net/loader/URLLoader.java | 3 +-
.../gnu/java/nio/charset/ISO_8859_1.java | 8 +-
.../classpath/gnu/java/security/Engine.java | 4 +-
.../gnu/javax/sound/AudioSecurityManager.java | 41 +
.../sampled/gstreamer/GStreamerMixer.java | 270 ++++
.../gstreamer/GStreamerMixerProvider.java | 71 +
.../gstreamer/io/GstAudioFileReader.java | 139 ++
.../io/GstAudioFileReaderNativePeer.java | 276 ++++
.../gstreamer/io/GstAudioFileWriter.java} | 69 +-
.../sampled/gstreamer/lines/GstDataLine.java | 145 ++
.../gstreamer/lines/GstNativeDataLine.java} | 24 +-
.../sampled/gstreamer/lines/GstPipeline.java | 57 +
.../gstreamer/lines/GstSourceDataLine.java | 134 ++
.../classpath/gnu/xml/dom/DomDocument.java | 23 +-
libjava/classpath/gnu/xml/dom/DomElement.java | 2 +-
.../gnu/xml/dom/DomNamedNodeMap.java | 8 +-
libjava/classpath/gnu/xml/dom/DomNode.java | 45 +-
.../gnu/xml/dom/ls/SAXEventSink.java | 2 +
.../classpath/gnu/xml/stream/XMLParser.java | 22 +
.../gnu/xml/transform/WithParam.java | 4 +
libjava/classpath/include/Makefile.am | 231 ++-
libjava/classpath/include/Makefile.in | 246 +++-
libjava/classpath/include/config.h.in | 3 +
...t_dnd_peer_gtk_GtkDragSourceContextPeer.h} | 8 +-
.../gnu_java_awt_peer_gtk_CairoGraphics2D.h | 5 +-
.../gnu_java_awt_peer_gtk_ComponentGraphics.h | 4 +-
...java_awt_peer_gtk_GdkGraphicsEnvironment.h | 2 +-
...ava_awt_peer_gtk_GdkScreenGraphicsDevice.h | 2 +-
.../gnu_java_awt_peer_gtk_GtkGenericPeer.h | 1 +
.../gnu_java_awt_peer_gtk_GtkToolkit.h | 1 +
.../gnu_java_awt_peer_qt_QtContainerPeer.h | 18 -
.../gnu_java_awt_peer_qt_QtFontMetrics.h | 2 +-
...u_java_awt_peer_qt_QtGraphicsEnvironment.h | 18 -
...streamer_io_GstAudioFileReaderNativePeer.h | 20 +
...gnu_xml_libxmlj_dom_GnomeXPathNSResolver.h | 18 -
libjava/classpath/include/jni.h | 180 +--
libjava/classpath/include/jvmti.h | 2 +-
libjava/classpath/install-sh | 342 +----
libjava/classpath/java/awt/AWTKeyStroke.java | 2 +-
.../classpath/java/awt/AlphaComposite.java | 2 +-
libjava/classpath/java/awt/Dialog.java | 15 +
libjava/classpath/java/awt/Font.java | 43 +-
libjava/classpath/java/awt/Toolkit.java | 6 +
.../classpath/java/awt/event/MouseEvent.java | 95 ++
.../java/awt/peer/ComponentPeer.java | 13 +-
.../classpath/java/awt/peer/FramePeer.java | 3 +
.../classpath/java/awt/peer/RobotPeer.java | 2 +
.../classpath/java/awt/peer/WindowPeer.java | 9 +
.../classpath/java/io/ObjectStreamClass.java | 8 +
libjava/classpath/java/lang/Float.java | 10 +-
libjava/classpath/java/lang/Integer.java | 7 +-
.../classpath/java/lang/reflect/Array.java | 11 +-
.../classpath/java/net/URLClassLoader.java | 10 +-
libjava/classpath/java/nio/Buffer.java | 61 +
libjava/classpath/java/nio/CharBuffer.java | 15 +-
.../java/nio/CharSequenceBuffer.java | 208 +++
.../java/nio/CharViewBufferImpl.java | 2 +-
.../java/nio/DoubleViewBufferImpl.java | 2 +-
.../java/nio/FloatViewBufferImpl.java | 2 +-
.../classpath/java/nio/IntViewBufferImpl.java | 2 +-
.../java/nio/LongViewBufferImpl.java | 2 +-
.../java/nio/ShortViewBufferImpl.java | 2 +-
.../classpath/java/rmi/MarshalledObject.java | 8 +-
.../java/rmi/activation/Activatable.java | 6 +-
.../java/rmi/activation/ActivationDesc.java | 12 +-
.../java/rmi/activation/ActivationGroup.java | 3 +-
.../rmi/activation/ActivationGroupDesc.java | 6 +-
.../activation/ActivationInstantiator.java | 2 +-
.../rmi/activation/ActivationMonitor.java | 2 +-
.../java/rmi/activation/Activator.java | 2 +-
libjava/classpath/java/util/Arrays.java | 3 +-
libjava/classpath/java/util/Currency.java | 5 +
libjava/classpath/java/util/EnumMap.java | 19 +-
.../javax/management/ObjectName.java | 94 +-
.../javax/sound/sampled/AudioFormat.java | 33 +-
.../javax/sound/sampled/DataLine.java | 62 +-
.../sound/sampled/spi/MixerProvider.java | 4 +-
.../swing/plaf/basic/BasicProgressBarUI.java | 22 +-
.../swing/text/html/parser/AttributeList.java | 2 +-
libjava/classpath/lib/Makefile.am | 20 +-
libjava/classpath/lib/Makefile.in | 31 +-
.../lib/gnu/awt/xlib/XCanvasPeer$DoMap.class | Bin 611 -> 611 bytes
.../lib/gnu/awt/xlib/XCanvasPeer.class | Bin 12200 -> 12494 bytes
.../lib/gnu/awt/xlib/XFontPeer.class | Bin 3453 -> 3453 bytes
.../lib/gnu/awt/xlib/XFramePeer.class | Bin 5562 -> 6225 bytes
.../classpath/lib/gnu/awt/xlib/XToolkit.class | Bin 10972 -> 11617 bytes
.../lib/gnu/java/awt/font/FontDelegate.class | Bin 1086 -> 1117 bytes
.../java/awt/font/opentype/OpenTypeFont.class | Bin 8951 -> 9042 bytes
.../java/awt/java2d/AbstractGraphics2D.class | Bin 27288 -> 28258 bytes
.../lib/gnu/java/awt/java2d/Pixelizer.class | Bin 0 -> 189 bytes
.../java/awt/java2d/ScanlineConverter.class | Bin 5849 -> 6579 bytes
.../java2d/ScanlineCoverage$Coverage.class | Bin 0 -> 1396 bytes
.../java2d/ScanlineCoverage$Iterator.class | Bin 0 -> 1853 bytes
.../awt/java2d/ScanlineCoverage$Range.class | Bin 0 -> 1579 bytes
.../java/awt/java2d/ScanlineCoverage.class | Bin 0 -> 3439 bytes
.../lib/gnu/java/awt/java2d/ShapeCache.class | Bin 551 -> 600 bytes
.../gnu/java/awt/peer/ClasspathFontPeer.class | Bin 9119 -> 9119 bytes
.../gnu/java/awt/peer/GLightweightPeer.class | Bin 7541 -> 7902 bytes
.../java/awt/peer/gtk/CairoGraphics2D.class | Bin 39018 -> 39058 bytes
.../awt/peer/gtk/FreetypeGlyphVector.class | Bin 9244 -> 10110 bytes
.../gtk/GdkFontPeer$GdkFontLineMetrics.class | Bin 1705 -> 1705 bytes
.../peer/gtk/GdkFontPeer$GdkFontMetrics.class | Bin 2341 -> 2341 bytes
.../gnu/java/awt/peer/gtk/GdkFontPeer.class | Bin 9399 -> 9446 bytes
.../awt/peer/gtk/GdkGraphicsEnvironment.class | Bin 3341 -> 3454 bytes
.../GdkPixbufDecoder$GdkPixbufReader.class | Bin 5490 -> 5490 bytes
.../GdkPixbufDecoder$GdkPixbufReaderSpi.class | Bin 1851 -> 1851 bytes
.../GdkPixbufDecoder$GdkPixbufWriter.class | Bin 5314 -> 5314 bytes
.../GdkPixbufDecoder$GdkPixbufWriterSpi.class | Bin 1904 -> 1904 bytes
.../GdkPixbufDecoder$ImageFormatSpec.class | Bin 1075 -> 1075 bytes
.../java/awt/peer/gtk/GdkPixbufDecoder.class | Bin 7974 -> 8025 bytes
.../gnu/java/awt/peer/gtk/GdkRobotPeer.class | Bin 1566 -> 1633 bytes
...kScreenGraphicsDevice$X11DisplayMode.class | Bin 626 -> 626 bytes
.../peer/gtk/GdkScreenGraphicsDevice.class | Bin 5668 -> 5780 bytes
.../java/awt/peer/gtk/GtkComponentPeer.class | Bin 18274 -> 18688 bytes
.../gnu/java/awt/peer/gtk/GtkFramePeer.class | Bin 4696 -> 4870 bytes
.../java/awt/peer/gtk/GtkGenericPeer.class | Bin 1974 -> 2149 bytes
.../awt/peer/gtk/GtkToolkit$LRUCache.class | Bin 945 -> 945 bytes
.../gnu/java/awt/peer/gtk/GtkToolkit.class | Bin 18908 -> 19627 bytes
.../gnu/java/awt/peer/gtk/GtkWindowPeer.class | Bin 7737 -> 8207 bytes
.../awt/peer/gtk/VolatileImageGraphics.class | Bin 8035 -> 8381 bytes
.../awt/peer/headless/HeadlessToolkit.class | Bin 7617 -> 8167 bytes
.../java/awt/peer/qt/QtComponentPeer.class | Bin 16405 -> 16766 bytes
.../gnu/java/awt/peer/qt/QtFontMetrics.class | Bin 2250 -> 2250 bytes
.../lib/gnu/java/awt/peer/qt/QtFontPeer.class | Bin 4252 -> 4252 bytes
.../gnu/java/awt/peer/qt/QtFramePeer.class | Bin 2945 -> 3114 bytes
.../lib/gnu/java/awt/peer/qt/QtToolkit.class | Bin 12257 -> 12807 bytes
.../gnu/java/awt/peer/qt/QtWindowPeer.class | Bin 849 -> 1330 bytes
.../swing/SwingButtonPeer$SwingButton.class | Bin 2148 -> 2628 bytes
.../SwingButtonPeer$SwingButtonListener.class | Bin 1280 -> 1280 bytes
.../java/awt/peer/swing/SwingButtonPeer.class | Bin 1351 -> 1351 bytes
.../SwingCheckboxPeer$SwingCheckbox.class | Bin 0 -> 2656 bytes
...ngCheckboxPeer$SwingCheckboxListener.class | Bin 0 -> 1346 bytes
.../awt/peer/swing/SwingCheckboxPeer.class | Bin 0 -> 1713 bytes
.../java/awt/peer/swing/SwingComponent.class | Bin 335 -> 395 bytes
.../awt/peer/swing/SwingComponentPeer.class | Bin 12563 -> 13249 bytes
.../awt/peer/swing/SwingContainerPeer.class | Bin 5446 -> 5757 bytes
.../swing/SwingLabelPeer$SwingLabel.class | Bin 1996 -> 2184 bytes
.../java/awt/peer/swing/SwingLabelPeer.class | Bin 1575 -> 1575 bytes
.../peer/swing/SwingListPeer$SwingList.class | Bin 2229 -> 2417 bytes
.../java/awt/peer/swing/SwingListPeer.class | Bin 4649 -> 4649 bytes
.../awt/peer/swing/SwingTextAreaPeer$1.class | Bin 0 -> 829 bytes
.../SwingTextAreaPeer$SwingScrollPane.class | Bin 0 -> 3177 bytes
.../SwingTextAreaPeer$SwingTextArea.class | Bin 2265 -> 2626 bytes
.../awt/peer/swing/SwingTextAreaPeer.class | Bin 3822 -> 4808 bytes
.../SwingTextFieldPeer$SwingTextField.class | Bin 2190 -> 2670 bytes
.../awt/peer/swing/SwingTextFieldPeer.class | Bin 3242 -> 3242 bytes
.../java/awt/peer/swing/SwingToolkit.class | Bin 2296 -> 2846 bytes
.../java/awt/peer/swing/SwingWindowPeer.class | Bin 556 -> 1043 bytes
.../lib/gnu/java/locale/LocaleData.class | Bin 6225 -> 6225 bytes
.../classpath/lib/gnu/java/math/Fixed.class | Bin 1290 -> 1373 bytes
.../lib/gnu/java/net/loader/URLLoader.class | Bin 1795 -> 1795 bytes
.../java/nio/charset/ISO_8859_1$Decoder.class | Bin 1161 -> 1161 bytes
.../java/nio/charset/ISO_8859_1$Encoder.class | Bin 1632 -> 1632 bytes
.../lib/gnu/java/nio/charset/ISO_8859_1.class | Bin 1311 -> 1348 bytes
.../lib/gnu/java/security/Engine.class | Bin 5340 -> 5326 bytes
.../AudioSecurityManager$Permission.class | Bin 0 -> 1266 bytes
.../javax/sound/AudioSecurityManager.class | Bin 0 -> 1574 bytes
.../lib/gnu/xml/dom/DomDocument.class | Bin 23668 -> 23877 bytes
.../lib/gnu/xml/dom/DomElement.class | Bin 8105 -> 8155 bytes
.../lib/gnu/xml/dom/DomNamedNodeMap.class | Bin 5204 -> 5251 bytes
.../xml/dom/DomNode$DomEventException.class | Bin 459 -> 459 bytes
.../gnu/xml/dom/DomNode$ListenerRecord.class | Bin 1009 -> 1009 bytes
.../gnu/xml/dom/DomNode$LiveNodeList.class | Bin 3023 -> 3023 bytes
.../lib/gnu/xml/dom/DomNode$ShadowList.class | Bin 1048 -> 1048 bytes
.../classpath/lib/gnu/xml/dom/DomNode.class | Bin 22818 -> 23045 bytes
.../lib/gnu/xml/dom/ls/SAXEventSink.class | Bin 12933 -> 12990 bytes
.../stream/XMLParser$AnyContentModel.class | Bin 617 -> 617 bytes
.../gnu/xml/stream/XMLParser$Attribute.class | Bin 1805 -> 2414 bytes
.../xml/stream/XMLParser$AttributeDecl.class | Bin 897 -> 897 bytes
.../xml/stream/XMLParser$ContentModel.class | Bin 787 -> 787 bytes
.../stream/XMLParser$ContentParticle.class | Bin 595 -> 595 bytes
.../gnu/xml/stream/XMLParser$Doctype.class | Bin 5914 -> 5914 bytes
.../XMLParser$ElementContentModel.class | Bin 1059 -> 1059 bytes
.../stream/XMLParser$EmptyContentModel.class | Bin 623 -> 623 bytes
.../xml/stream/XMLParser$ExternalIds.class | Bin 556 -> 556 bytes
.../lib/gnu/xml/stream/XMLParser$Input.class | Bin 6256 -> 6256 bytes
.../stream/XMLParser$MixedContentModel.class | Bin 988 -> 988 bytes
.../lib/gnu/xml/transform/WithParam.class | Bin 2404 -> 2428 bytes
.../java/awt/Dialog$AccessibleAWTDialog.class | Bin 1355 -> 1355 bytes
.../java/awt/Dialog$ModalExclusionType.class | Bin 0 -> 1200 bytes
.../lib/java/awt/Dialog$ModalityType.class | Bin 0 -> 1213 bytes
libjava/classpath/lib/java/awt/Dialog.class | Bin 5452 -> 5578 bytes
libjava/classpath/lib/java/awt/Font.class | Bin 14900 -> 15412 bytes
.../classpath/lib/java/awt/Toolkit$2.class | Bin 3538 -> 3538 bytes
libjava/classpath/lib/java/awt/Toolkit.class | Bin 14598 -> 14897 bytes
.../lib/java/awt/event/MouseEvent.class | Bin 3968 -> 4819 bytes
.../lib/java/awt/peer/ComponentPeer.class | Bin 2235 -> 2386 bytes
.../lib/java/awt/peer/FramePeer.class | Bin 486 -> 538 bytes
.../lib/java/awt/peer/RobotPeer.class | Bin 333 -> 357 bytes
.../lib/java/awt/peer/WindowPeer.class | Bin 254 -> 428 bytes
.../lib/java/io/ObjectStreamClass$2.class | Bin 834 -> 834 bytes
...bjectStreamClass$InterfaceComparator.class | Bin 862 -> 862 bytes
.../ObjectStreamClass$MemberComparator.class | Bin 1121 -> 1121 bytes
.../lib/java/io/ObjectStreamClass.class | Bin 17956 -> 17983 bytes
libjava/classpath/lib/java/lang/Float.class | Bin 4642 -> 4520 bytes
libjava/classpath/lib/java/lang/Integer.class | Bin 6722 -> 6779 bytes
libjava/classpath/lib/java/lang/VMFloat.class | Bin 358 -> 719 bytes
.../lib/java/net/URLClassLoader$1.class | Bin 1197 -> 1197 bytes
.../lib/java/net/URLClassLoader$2.class | Bin 1099 -> 1099 bytes
.../lib/java/net/URLClassLoader.class | Bin 14666 -> 14644 bytes
.../classpath/lib/java/nio/CharBuffer.class | Bin 5915 -> 5855 bytes
.../lib/java/nio/CharSequenceBuffer.class | Bin 0 -> 2357 bytes
.../lib/java/nio/CharViewBufferImpl.class | Bin 3286 -> 3286 bytes
.../lib/java/nio/DoubleViewBufferImpl.class | Bin 2973 -> 2973 bytes
.../lib/java/nio/FloatViewBufferImpl.class | Bin 2961 -> 2961 bytes
.../lib/java/nio/IntViewBufferImpl.class | Bin 2931 -> 2931 bytes
.../lib/java/nio/LongViewBufferImpl.class | Bin 2953 -> 2953 bytes
.../lib/java/nio/ShortViewBufferImpl.class | Bin 2961 -> 2961 bytes
.../lib/java/rmi/MarshalledObject.class | Bin 1855 -> 2121 bytes
.../lib/java/rmi/activation/Activatable.class | Bin 8556 -> 9002 bytes
.../java/rmi/activation/ActivationDesc.class | Bin 2753 -> 3346 bytes
.../java/rmi/activation/ActivationGroup.class | Bin 5658 -> 5858 bytes
.../rmi/activation/ActivationGroupDesc.class | Bin 3895 -> 4196 bytes
.../activation/ActivationInstantiator.class | Bin 392 -> 534 bytes
.../rmi/activation/ActivationMonitor.class | Bin 557 -> 664 bytes
.../lib/java/rmi/activation/Activator.class | Bin 378 -> 485 bytes
libjava/classpath/lib/java/util/Arrays.class | Bin 32272 -> 32336 bytes
.../classpath/lib/java/util/EnumMap$1.class | Bin 1315 -> 1315 bytes
.../classpath/lib/java/util/EnumMap$2.class | Bin 1460 -> 1460 bytes
.../classpath/lib/java/util/EnumMap$3.class | Bin 1053 -> 1053 bytes
.../classpath/lib/java/util/EnumMap$4.class | Bin 1233 -> 1233 bytes
.../classpath/lib/java/util/EnumMap$5.class | Bin 1874 -> 1874 bytes
.../classpath/lib/java/util/EnumMap$6.class | Bin 1821 -> 1821 bytes
.../classpath/lib/java/util/EnumMap$7.class | Bin 1416 -> 1416 bytes
libjava/classpath/lib/java/util/EnumMap.class | Bin 5825 -> 5947 bytes
.../lib/javax/management/ObjectName.class | Bin 10625 -> 11159 bytes
.../lib/javax/sound/sampled/AudioFormat.class | Bin 3891 -> 3974 bytes
.../javax/sound/sampled/DataLine$Info.class | Bin 2934 -> 2934 bytes
.../swing/plaf/basic/BasicProgressBarUI.class | Bin 13071 -> 13194 bytes
.../text/html/parser/AttributeList.class | Bin 2576 -> 2587 bytes
.../lib/sun/awt/CausedFocusEvent$Cause.class | Bin 0 -> 1857 bytes
.../lib/sun/awt/CausedFocusEvent.class | Bin 0 -> 835 bytes
libjava/classpath/m4/acinclude.m4 | 21 +-
libjava/classpath/missing | 61 +-
libjava/classpath/native/Makefile.in | 15 +-
libjava/classpath/native/fdlibm/Makefile.in | 15 +-
libjava/classpath/native/jawt/Makefile.in | 15 +-
libjava/classpath/native/jni/Makefile.am | 10 +-
libjava/classpath/native/jni/Makefile.in | 22 +-
.../native/jni/classpath/Makefile.am | 3 +-
.../native/jni/classpath/Makefile.in | 21 +-
.../native/jni/classpath/native_state.c | 276 ----
.../native/jni/gconf-peer/Makefile.am | 3 +-
.../native/jni/gconf-peer/Makefile.in | 20 +-
.../jni/gstreamer-peer/GStreamerIOPeer.c | 772 ++++++++++
.../native/jni/gstreamer-peer/Makefile.am | 22 +
.../native/jni/gstreamer-peer/Makefile.in | 640 ++++++++
.../jni/gstreamer-peer/gstclasspathsrc.c | 332 +++++
.../jni/gstreamer-peer/gstclasspathsrc.h | 88 ++
.../jni/gstreamer-peer/gstinputstream.c | 494 +++++++
.../jni/gstreamer-peer/gstinputstream.h | 99 ++
.../jni/gtk-peer/GtkDragSourceContextPeer.c | 18 +-
.../classpath/native/jni/gtk-peer/Makefile.am | 4 +-
.../classpath/native/jni/gtk-peer/Makefile.in | 24 +-
.../native/jni/gtk-peer/cairographics2d.h | 1 -
.../native/jni/gtk-peer/gdkdisplay.h | 24 -
.../classpath/native/jni/gtk-peer/gdkfont.h | 42 -
.../gnu_java_awt_peer_gtk_CairoGraphics2D.c | 6 +-
.../gnu_java_awt_peer_gtk_ComponentGraphics.c | 15 +-
..._java_awt_peer_gtk_ComponentGraphicsCopy.c | 8 +-
...nu_java_awt_peer_gtk_FreetypeGlyphVector.c | 5 +-
.../gnu_java_awt_peer_gtk_GdkFontPeer.c | 27 +-
...java_awt_peer_gtk_GdkGraphicsEnvironment.c | 28 +-
.../gnu_java_awt_peer_gtk_GdkPixbufDecoder.c | 25 +-
...ava_awt_peer_gtk_GdkScreenGraphicsDevice.c | 27 +-
.../gnu_java_awt_peer_gtk_GtkButtonPeer.c | 43 +-
.../gnu_java_awt_peer_gtk_GtkCanvasPeer.c | 4 +-
...ava_awt_peer_gtk_GtkCheckboxMenuItemPeer.c | 6 +-
.../gnu_java_awt_peer_gtk_GtkCheckboxPeer.c | 28 +-
.../gnu_java_awt_peer_gtk_GtkChoicePeer.c | 24 +-
.../gnu_java_awt_peer_gtk_GtkClipboard.c | 7 +-
.../gnu_java_awt_peer_gtk_GtkComponentPeer.c | 74 +-
..._java_awt_peer_gtk_GtkEmbeddedWindowPeer.c | 6 +-
.../gnu_java_awt_peer_gtk_GtkFileDialogPeer.c | 26 +-
.../gnu_java_awt_peer_gtk_GtkFramePeer.c | 22 +-
.../gnu_java_awt_peer_gtk_GtkGenericPeer.c | 16 +-
.../gnu_java_awt_peer_gtk_GtkLabelPeer.c | 14 +-
.../gnu_java_awt_peer_gtk_GtkListPeer.c | 34 +-
.../gnu_java_awt_peer_gtk_GtkMenuBarPeer.c | 10 +-
...u_java_awt_peer_gtk_GtkMenuComponentPeer.c | 3 +-
.../gnu_java_awt_peer_gtk_GtkMenuItemPeer.c | 18 +-
.../gnu_java_awt_peer_gtk_GtkMenuPeer.c | 16 +-
.../gnu_java_awt_peer_gtk_GtkPanelPeer.c | 14 +-
.../gnu_java_awt_peer_gtk_GtkPopupMenuPeer.c | 6 +-
.../gnu_java_awt_peer_gtk_GtkScrollPanePeer.c | 16 +-
.../gnu_java_awt_peer_gtk_GtkScrollbarPeer.c | 18 +-
.../gnu_java_awt_peer_gtk_GtkSelection.c | 8 +
.../gnu_java_awt_peer_gtk_GtkTextAreaPeer.c | 38 +-
.../gnu_java_awt_peer_gtk_GtkTextFieldPeer.c | 38 +-
.../gnu_java_awt_peer_gtk_GtkToolkit.c | 14 +-
.../gnu_java_awt_peer_gtk_GtkVolatileImage.c | 2 +-
.../gnu_java_awt_peer_gtk_GtkWindowPeer.c | 60 +-
.../classpath/native/jni/gtk-peer/gtk_jawt.c | 8 +-
.../classpath/native/jni/gtk-peer/gtkpeer.c | 584 ++++++++
.../classpath/native/jni/gtk-peer/gtkpeer.h | 201 ++-
.../classpath/native/jni/java-io/Makefile.in | 15 +-
.../native/jni/java-lang/Makefile.in | 15 +-
.../classpath/native/jni/java-net/Makefile.in | 15 +-
.../java-net/gnu_java_net_VMPlainSocketImpl.c | 21 +-
.../jni/java-net/java_net_VMInetAddress.c | 82 +-
.../classpath/native/jni/java-net/javanet.c | 2 +
.../classpath/native/jni/java-nio/Makefile.in | 15 +-
.../jni/java-nio/gnu_java_nio_VMChannel.c | 78 +-
.../native/jni/java-util/Makefile.in | 15 +-
.../native/jni/midi-alsa/Makefile.in | 15 +-
.../native/jni/midi-dssi/Makefile.in | 15 +-
.../native/jni/native-lib/Makefile.in | 15 +-
.../classpath/native/jni/native-lib/cpio.c | 6 +-
.../classpath/native/jni/native-lib/cpnet.c | 9 +-
.../classpath/native/jni/native-lib/cpnet.h | 6 +
.../classpath/native/jni/qt-peer/Makefile.in | 15 +-
.../native/jni/qt-peer/qtfontmetrics.cpp | 4 +-
libjava/classpath/native/jni/xmlj/Makefile.in | 15 +-
.../classpath/native/jni/xmlj/xmlj_xpath.c | 1 -
libjava/classpath/native/plugin/Makefile.in | 15 +-
.../javax.sound.sampled.spi.AudioFileReader | 1 +
...javax.sound.sampled.spi.AudioFileReader.in | 3 +
.../javax.sound.sampled.spi.MixerProvider.in | 1 +
libjava/classpath/resource/Makefile.in | 15 +-
libjava/classpath/scripts/Makefile.in | 15 +-
.../classpath/sun/awt/CausedFocusEvent.java | 89 ++
libjava/classpath/tools/Makefile.am | 2 +
libjava/classpath/tools/Makefile.in | 17 +-
.../classes/com/sun/tools/javah/Main.class | Bin 0 -> 692 bytes
.../tools/com/sun/tools/javah/Main.java | 58 +
libjava/classpath/tools/gappletviewer.in | 1 +
libjava/classpath/tools/gjar.in | 1 +
libjava/classpath/tools/gjarsigner.in | 1 +
libjava/classpath/tools/gjavah.in | 1 +
libjava/classpath/tools/gkeytool.in | 1 +
libjava/classpath/tools/gnative2ascii.in | 1 +
libjava/classpath/tools/gorbd.in | 1 +
libjava/classpath/tools/grmic.in | 1 +
libjava/classpath/tools/grmid.in | 1 +
libjava/classpath/tools/grmiregistry.in | 1 +
libjava/classpath/tools/gserialver.in | 1 +
libjava/classpath/tools/gtnameserv.in | 1 +
.../reference/gnu/classpath/jdwp/VMFrame.java | 5 +-
.../gnu/classpath/jdwp/VMMethod.java | 13 +-
.../vm/reference/java/lang/VMFloat.java | 22 +
.../vm/reference/sun/misc/Unsafe.java | 2 +-
libjava/gnu/awt/xlib/XCanvasPeer.h | 8 +
libjava/gnu/awt/xlib/XCanvasPeer.java | 9 +
libjava/gnu/awt/xlib/XFontPeer.h | 2 +-
libjava/gnu/awt/xlib/XFontPeer.java | 2 +-
libjava/gnu/awt/xlib/XFramePeer.h | 7 +
libjava/gnu/awt/xlib/XFramePeer.java | 33 +
libjava/gnu/awt/xlib/XToolkit.h | 5 +
libjava/gnu/awt/xlib/XToolkit.java | 20 +-
libjava/gnu/java/awt/font/FontDelegate.h | 1 +
.../gnu/java/awt/font/opentype/OpenTypeFont.h | 1 +
.../gnu/java/awt/java2d/AbstractGraphics2D.h | 10 +-
libjava/gnu/java/awt/java2d/Pixelizer.h | 36 +
.../gnu/java/awt/java2d/ScanlineConverter.h | 13 +-
.../awt/java2d/ScanlineCoverage$Coverage.h | 46 +
.../awt/java2d/ScanlineCoverage$Iterator.h | 51 +
.../java/awt/java2d/ScanlineCoverage$Range.h | 55 +
.../gnu/java/awt/java2d/ScanlineCoverage.h | 67 +
libjava/gnu/java/awt/java2d/ShapeCache.h | 2 +
libjava/gnu/java/awt/peer/ClasspathFontPeer.h | 2 +-
.../gnu/java/awt/peer/EmbeddedWindowPeer.h | 15 +
libjava/gnu/java/awt/peer/GLightweightPeer.h | 8 +
.../java/awt/peer/gtk/FreetypeGlyphVector.h | 3 +
libjava/gnu/java/awt/peer/gtk/GdkFontPeer.h | 7 +-
.../awt/peer/gtk/GdkGraphicsEnvironment.h | 8 +-
.../gnu/java/awt/peer/gtk/GdkPixbufDecoder.h | 7 +
libjava/gnu/java/awt/peer/gtk/GdkRobotPeer.h | 1 +
.../awt/peer/gtk/GdkScreenGraphicsDevice.h | 8 +-
.../gnu/java/awt/peer/gtk/GtkComponentPeer.h | 8 +
libjava/gnu/java/awt/peer/gtk/GtkFramePeer.h | 1 +
.../gnu/java/awt/peer/gtk/GtkGenericPeer.h | 8 +
libjava/gnu/java/awt/peer/gtk/GtkToolkit.h | 9 +
libjava/gnu/java/awt/peer/gtk/GtkWindowPeer.h | 6 +
.../java/awt/peer/headless/HeadlessToolkit.h | 4 +
.../gnu/java/awt/peer/qt/QtComponentPeer.h | 8 +
libjava/gnu/java/awt/peer/qt/QtFontMetrics.h | 2 +-
libjava/gnu/java/awt/peer/qt/QtFontPeer.h | 2 +-
libjava/gnu/java/awt/peer/qt/QtFramePeer.h | 1 +
libjava/gnu/java/awt/peer/qt/QtToolkit.h | 4 +
libjava/gnu/java/awt/peer/qt/QtWindowPeer.h | 6 +
.../peer/swing/SwingButtonPeer$SwingButton.h | 4 +
.../swing/SwingCheckboxPeer$SwingCheckbox.h | 80 +
.../SwingCheckboxPeer$SwingCheckboxListener.h | 56 +
.../java/awt/peer/swing/SwingCheckboxPeer.h | 49 +
.../gnu/java/awt/peer/swing/SwingComponent.h | 2 +
.../java/awt/peer/swing/SwingComponentPeer.h | 10 +
.../java/awt/peer/swing/SwingContainerPeer.h | 5 +-
.../gnu/java/awt/peer/swing/SwingFramePeer.h | 1 +
.../peer/swing/SwingLabelPeer$SwingLabel.h | 2 +
.../awt/peer/swing/SwingListPeer$SwingList.h | 2 +
.../java/awt/peer/swing/SwingTextAreaPeer$1.h | 51 +
.../swing/SwingTextAreaPeer$SwingScrollPane.h | 81 +
.../swing/SwingTextAreaPeer$SwingTextArea.h | 50 +-
.../java/awt/peer/swing/SwingTextAreaPeer.h | 13 +-
.../swing/SwingTextFieldPeer$SwingTextField.h | 4 +
.../gnu/java/awt/peer/swing/SwingToolkit.h | 4 +
.../gnu/java/awt/peer/swing/SwingWindowPeer.h | 6 +
libjava/gnu/java/math/Fixed.h | 1 +
.../sound/AudioSecurityManager$Permission.h | 42 +
.../gnu/javax/sound/AudioSecurityManager.h | 42 +
libjava/gnu/xml/dom/DomDocument.h | 6 +-
libjava/gnu/xml/dom/DomNamedNodeMap.h | 2 +-
libjava/gnu/xml/dom/DomNode.h | 2 +
libjava/gnu/xml/stream/XMLParser$Attribute.h | 1 +
libjava/include/jvm.h | 2 +-
libjava/java/awt/Dialog$ModalExclusionType.h | 39 +
libjava/java/awt/Dialog$ModalityType.h | 40 +
libjava/java/awt/Font.h | 10 +
libjava/java/awt/Toolkit.h | 4 +
libjava/java/awt/event/MouseEvent.h | 6 +
libjava/java/awt/peer/ButtonPeer.h | 8 +
libjava/java/awt/peer/CanvasPeer.h | 8 +
libjava/java/awt/peer/CheckboxPeer.h | 8 +
libjava/java/awt/peer/ChoicePeer.h | 8 +
libjava/java/awt/peer/ComponentPeer.h | 8 +
libjava/java/awt/peer/ContainerPeer.h | 8 +
libjava/java/awt/peer/DialogPeer.h | 14 +
libjava/java/awt/peer/FileDialogPeer.h | 14 +
libjava/java/awt/peer/FramePeer.h | 15 +
libjava/java/awt/peer/LabelPeer.h | 8 +
libjava/java/awt/peer/LightweightPeer.h | 8 +
libjava/java/awt/peer/ListPeer.h | 8 +
libjava/java/awt/peer/PanelPeer.h | 8 +
libjava/java/awt/peer/RobotPeer.h | 1 +
libjava/java/awt/peer/ScrollPanePeer.h | 8 +
libjava/java/awt/peer/ScrollbarPeer.h | 8 +
libjava/java/awt/peer/TextAreaPeer.h | 8 +
libjava/java/awt/peer/TextComponentPeer.h | 8 +
libjava/java/awt/peer/TextFieldPeer.h | 8 +
libjava/java/awt/peer/WindowPeer.h | 14 +
libjava/java/lang/VMFloat.h | 2 +
libjava/java/lang/VMFloat.java | 22 +
libjava/java/lang/reflect/natMethod.cc | 2 +-
libjava/java/nio/CharSequenceBuffer.h | 48 +
libjava/javax/management/ObjectName.h | 6 +-
libjava/jni-libjvm.cc | 2 +-
libjava/jni.cc | 24 +-
libjava/scripts/makemake.tcl | 4 +
libjava/sources.am | 39 +-
libjava/sun/awt/CausedFocusEvent$Cause.h | 50 +
libjava/sun/awt/CausedFocusEvent.h | 41 +
522 files changed, 13385 insertions(+), 4867 deletions(-)
create mode 100644 libjava/classpath/gnu/java/awt/java2d/Pixelizer.java
create mode 100644 libjava/classpath/gnu/java/awt/java2d/ScanlineCoverage.java
create mode 100755 libjava/classpath/gnu/java/awt/peer/swing/SwingCheckboxPeer.java
create mode 100644 libjava/classpath/gnu/java/awt/peer/x/PixmapVolatileImage.java
delete mode 100644 libjava/classpath/gnu/java/awt/peer/x/XFontPeer.java
delete mode 100644 libjava/classpath/gnu/java/awt/peer/x/XGraphics.java
create mode 100644 libjava/classpath/gnu/java/awt/peer/x/ZPixmapDataBuffer.java
create mode 100644 libjava/classpath/gnu/javax/sound/AudioSecurityManager.java
create mode 100644 libjava/classpath/gnu/javax/sound/sampled/gstreamer/GStreamerMixer.java
create mode 100644 libjava/classpath/gnu/javax/sound/sampled/gstreamer/GStreamerMixerProvider.java
create mode 100644 libjava/classpath/gnu/javax/sound/sampled/gstreamer/io/GstAudioFileReader.java
create mode 100644 libjava/classpath/gnu/javax/sound/sampled/gstreamer/io/GstAudioFileReaderNativePeer.java
rename libjava/classpath/{native/jni/classpath/native_state.h => gnu/javax/sound/sampled/gstreamer/io/GstAudioFileWriter.java} (59%)
create mode 100644 libjava/classpath/gnu/javax/sound/sampled/gstreamer/lines/GstDataLine.java
rename libjava/classpath/gnu/{java/awt/peer/x/XLightweightPeer.java => javax/sound/sampled/gstreamer/lines/GstNativeDataLine.java} (80%)
create mode 100644 libjava/classpath/gnu/javax/sound/sampled/gstreamer/lines/GstPipeline.java
create mode 100644 libjava/classpath/gnu/javax/sound/sampled/gstreamer/lines/GstSourceDataLine.java
rename libjava/classpath/include/{GtkDragSourceContextPeer.h => gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer.h} (74%)
delete mode 100644 libjava/classpath/include/gnu_java_awt_peer_qt_QtContainerPeer.h
delete mode 100644 libjava/classpath/include/gnu_java_awt_peer_qt_QtGraphicsEnvironment.h
create mode 100644 libjava/classpath/include/gnu_javax_sound_sampled_gstreamer_io_GstAudioFileReaderNativePeer.h
delete mode 100644 libjava/classpath/include/gnu_xml_libxmlj_dom_GnomeXPathNSResolver.h
create mode 100644 libjava/classpath/java/nio/CharSequenceBuffer.java
create mode 100644 libjava/classpath/lib/gnu/java/awt/java2d/Pixelizer.class
create mode 100644 libjava/classpath/lib/gnu/java/awt/java2d/ScanlineCoverage$Coverage.class
create mode 100644 libjava/classpath/lib/gnu/java/awt/java2d/ScanlineCoverage$Iterator.class
create mode 100644 libjava/classpath/lib/gnu/java/awt/java2d/ScanlineCoverage$Range.class
create mode 100644 libjava/classpath/lib/gnu/java/awt/java2d/ScanlineCoverage.class
create mode 100644 libjava/classpath/lib/gnu/java/awt/peer/swing/SwingCheckboxPeer$SwingCheckbox.class
create mode 100644 libjava/classpath/lib/gnu/java/awt/peer/swing/SwingCheckboxPeer$SwingCheckboxListener.class
create mode 100644 libjava/classpath/lib/gnu/java/awt/peer/swing/SwingCheckboxPeer.class
create mode 100644 libjava/classpath/lib/gnu/java/awt/peer/swing/SwingTextAreaPeer$1.class
create mode 100644 libjava/classpath/lib/gnu/java/awt/peer/swing/SwingTextAreaPeer$SwingScrollPane.class
create mode 100644 libjava/classpath/lib/gnu/javax/sound/AudioSecurityManager$Permission.class
create mode 100644 libjava/classpath/lib/gnu/javax/sound/AudioSecurityManager.class
create mode 100644 libjava/classpath/lib/java/awt/Dialog$ModalExclusionType.class
create mode 100644 libjava/classpath/lib/java/awt/Dialog$ModalityType.class
create mode 100644 libjava/classpath/lib/java/nio/CharSequenceBuffer.class
create mode 100644 libjava/classpath/lib/sun/awt/CausedFocusEvent$Cause.class
create mode 100644 libjava/classpath/lib/sun/awt/CausedFocusEvent.class
delete mode 100644 libjava/classpath/native/jni/classpath/native_state.c
create mode 100644 libjava/classpath/native/jni/gstreamer-peer/GStreamerIOPeer.c
create mode 100644 libjava/classpath/native/jni/gstreamer-peer/Makefile.am
create mode 100644 libjava/classpath/native/jni/gstreamer-peer/Makefile.in
create mode 100644 libjava/classpath/native/jni/gstreamer-peer/gstclasspathsrc.c
create mode 100644 libjava/classpath/native/jni/gstreamer-peer/gstclasspathsrc.h
create mode 100644 libjava/classpath/native/jni/gstreamer-peer/gstinputstream.c
create mode 100644 libjava/classpath/native/jni/gstreamer-peer/gstinputstream.h
create mode 100644 libjava/classpath/native/jni/gtk-peer/gtkpeer.c
create mode 100644 libjava/classpath/resource/META-INF/services/javax.sound.sampled.spi.AudioFileReader.in
create mode 100644 libjava/classpath/resource/META-INF/services/javax.sound.sampled.spi.MixerProvider.in
create mode 100644 libjava/classpath/sun/awt/CausedFocusEvent.java
create mode 100644 libjava/classpath/tools/classes/com/sun/tools/javah/Main.class
create mode 100644 libjava/classpath/tools/com/sun/tools/javah/Main.java
create mode 100644 libjava/gnu/java/awt/java2d/Pixelizer.h
create mode 100644 libjava/gnu/java/awt/java2d/ScanlineCoverage$Coverage.h
create mode 100644 libjava/gnu/java/awt/java2d/ScanlineCoverage$Iterator.h
create mode 100644 libjava/gnu/java/awt/java2d/ScanlineCoverage$Range.h
create mode 100644 libjava/gnu/java/awt/java2d/ScanlineCoverage.h
create mode 100644 libjava/gnu/java/awt/peer/swing/SwingCheckboxPeer$SwingCheckbox.h
create mode 100644 libjava/gnu/java/awt/peer/swing/SwingCheckboxPeer$SwingCheckboxListener.h
create mode 100644 libjava/gnu/java/awt/peer/swing/SwingCheckboxPeer.h
create mode 100644 libjava/gnu/java/awt/peer/swing/SwingTextAreaPeer$1.h
create mode 100644 libjava/gnu/java/awt/peer/swing/SwingTextAreaPeer$SwingScrollPane.h
create mode 100644 libjava/gnu/javax/sound/AudioSecurityManager$Permission.h
create mode 100644 libjava/gnu/javax/sound/AudioSecurityManager.h
create mode 100644 libjava/java/awt/Dialog$ModalExclusionType.h
create mode 100644 libjava/java/awt/Dialog$ModalityType.h
create mode 100644 libjava/java/nio/CharSequenceBuffer.h
create mode 100644 libjava/sun/awt/CausedFocusEvent$Cause.h
create mode 100644 libjava/sun/awt/CausedFocusEvent.h
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 42a24a159fe..e28062ddb66 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,35 @@
+2007-08-04 Matthias Klose
+
+ Import GNU Classpath (libgcj-import-20070727).
+
+ * Regenerate class and header files.
+ * Regenerate auto* files.
+
+ * include/jvm.h:
+ * jni-libjvm.cc (Jv_JNI_InvokeFunctions): Rename type.
+ * jni.cc (_Jv_JNIFunctions, _Jv_JNI_InvokeFunctions): Likewise.
+ * jni.cc (_Jv_JNI_CallAnyMethodA, _Jv_JNI_CallAnyVoidMethodA,
+ _Jv_JNI_CallMethodA, _Jv_JNI_CallVoidMethodA,
+ _Jv_JNI_CallStaticMethodA, _Jv_JNI_CallStaticVoidMethodA,
+ _Jv_JNI_NewObjectA, _Jv_JNI_SetPrimitiveArrayRegion): Constify
+ jvalue parameter.
+ * java/lang/reflect/natMethod.cc (_Jv_CallAnyMethodA): Likewise.
+
+ * java/lang/VMFloat.java (toString, parseFloat): New.
+
+ * gnu/awt/xlib/XToolkit.java (setAlwaysOnTop, isModalityTypeSupported,
+ isModalExclusionTypeSupported): New (stub only).
+ * gnu/awt/xlib/XCanvasPeer.java (requestFocus): Likewise.
+ * gnu/awt/xlib/XFramePeer.java (updateMinimumSize, updateIconImages,
+ updateFocusableWindowState, setModalBlocked, getBoundsPrivate,
+ setAlwaysOnTop): Likewise.
+ * gnu/awt/xlib/XFontPeer.java (canDisplay): Update signature.
+
+ * scripts/makemake.tcl: Ignore gnu/javax/sound/sampled/gstreamer,
+ ignore javax.sound.sampled.spi.MixerProvider, ignore .in files.
+
+ * HACKING: Mention --enable-gstreamer-peer, removal of generated files.
+
2007-07-31 David Daney
* HACKING: Document regenerating configure and aclocal.m4.
diff --git a/libjava/HACKING b/libjava/HACKING
index a22f135afb0..560b0f7b8eb 100644
--- a/libjava/HACKING
+++ b/libjava/HACKING
@@ -104,17 +104,27 @@ To import a new release:
cd ..
scripts/makemake.tcl > sources.am
automake
+- Remove the generated class and header files:
+ find classpath -name '*.class' xargs -r rm -f
+ find gnu java javax org sun -name '*.h' \
+ | xargs -r grep -Fl 'DO NOT EDIT THIS FILE - it is machine generated' \
+ | xargs -r rm -f
- Build, fix, till everything works.
Be sure to build all peers (--enable-java-awt=gtk,xlib,qt
- --enable-gconf-peer)
+ --enable-gconf-peer --enable-gstreamer-peer)
Be sure to update gnu/classpath/Configuration.java to reflect
the new version
Possibly update the gcj/javaprims.h file with scripts/classes.pl
(See below, it can only be done after the first source->bytecode
pass has finished.)
- You will need to configure with --enable-maintainer-mode and you
+ You will need to configure with --enable-java-maintainer-mode and you
will need to update the .class files and generated CNI header files in
your working tree
+- Add/Remove newly generated files:
+ - svn status classpath | grep '^\!.*\.class$' | cut -c8- | xargs svn remove
+ - svn status classpath | grep '^\?' | cut -c8- | xargs svn add
+ - svn status gnu java javax org sun | grep '^\!.*\.h$' | cut -c8- | xargs svn remove
+ - svn status gnu java javax org sun | grep '^\?' | cut -c8- | xargs svn add
Over time we plan to remove as many of the remaining divergences as
possible.
diff --git a/libjava/Makefile.in b/libjava/Makefile.in
index b9cd3c02144..cb8b02476ea 100644
--- a/libjava/Makefile.in
+++ b/libjava/Makefile.in
@@ -223,10 +223,10 @@ am__DEPENDENCIES_2 = gnu/awt.lo gnu/awt/j2d.lo gnu/classpath.lo \
gnu/javax/print/ipp/attribute/printer.lo \
gnu/javax/print/ipp/attribute/supported.lo \
gnu/javax/security/auth.lo gnu/javax/security/auth/callback.lo \
- gnu/javax/security/auth/login.lo gnu/javax/sound/sampled/AU.lo \
- gnu/javax/sound/sampled/WAV.lo gnu/javax/swing/plaf/gnu.lo \
- gnu/javax/swing/plaf/metal.lo gnu/javax/swing/text/html.lo \
- gnu/javax/swing/text/html/css.lo \
+ gnu/javax/security/auth/login.lo gnu/javax/sound.lo \
+ gnu/javax/sound/sampled/AU.lo gnu/javax/sound/sampled/WAV.lo \
+ gnu/javax/swing/plaf/gnu.lo gnu/javax/swing/plaf/metal.lo \
+ gnu/javax/swing/text/html.lo gnu/javax/swing/text/html/css.lo \
gnu/javax/swing/text/html/parser/GnuParserDelegator.lo \
gnu/javax/swing/text/html/parser/HTML_401F.lo \
gnu/javax/swing/text/html/parser/SmallHtmlAttributeSet.lo \
@@ -278,9 +278,9 @@ am__DEPENDENCIES_2 = gnu/awt.lo gnu/awt/j2d.lo gnu/classpath.lo \
javax/swing/text/html.lo javax/swing/text/html/parser.lo \
javax/swing/text/rtf.lo javax/swing/tree.lo \
javax/swing/undo.lo javax/transaction.lo \
- javax/transaction/xa.lo org/ietf/jgss.lo sun/misc.lo \
- sun/reflect.lo sun/reflect/annotation.lo sun/reflect/misc.lo \
- $(am__DEPENDENCIES_1)
+ javax/transaction/xa.lo org/ietf/jgss.lo sun/awt.lo \
+ sun/misc.lo sun/reflect.lo sun/reflect/annotation.lo \
+ sun/reflect/misc.lo $(am__DEPENDENCIES_1)
am__DEPENDENCIES_3 = gnu-CORBA.lo gnu-java-awt-dnd-peer-gtk.lo \
gnu-java-awt-peer-gtk.lo gnu-java-awt-peer-swing.lo \
gnu-java-beans.lo gnu-java-lang-management.lo \
@@ -1524,12 +1524,14 @@ classpath/gnu/java/awt/java2d/AlphaCompositeContext.java \
classpath/gnu/java/awt/java2d/CubicSegment.java \
classpath/gnu/java/awt/java2d/ImagePaint.java \
classpath/gnu/java/awt/java2d/LineSegment.java \
+classpath/gnu/java/awt/java2d/Pixelizer.java \
classpath/gnu/java/awt/java2d/PolyEdge.java \
classpath/gnu/java/awt/java2d/PolyEdgeComparator.java \
classpath/gnu/java/awt/java2d/QuadSegment.java \
classpath/gnu/java/awt/java2d/RasterGraphics.java \
classpath/gnu/java/awt/java2d/Scanline.java \
classpath/gnu/java/awt/java2d/ScanlineConverter.java \
+classpath/gnu/java/awt/java2d/ScanlineCoverage.java \
classpath/gnu/java/awt/java2d/Segment.java \
classpath/gnu/java/awt/java2d/ShapeCache.java \
classpath/gnu/java/awt/java2d/TexturePaintContext.java
@@ -1650,6 +1652,7 @@ classpath/gnu/java/awt/peer/qt/QtWindowPeer.java
gnu_java_awt_peer_swing_source_files = \
classpath/gnu/java/awt/peer/swing/SwingButtonPeer.java \
classpath/gnu/java/awt/peer/swing/SwingCanvasPeer.java \
+classpath/gnu/java/awt/peer/swing/SwingCheckboxPeer.java \
classpath/gnu/java/awt/peer/swing/SwingComponent.java \
classpath/gnu/java/awt/peer/swing/SwingComponentPeer.java \
classpath/gnu/java/awt/peer/swing/SwingContainerPeer.java \
@@ -1669,20 +1672,19 @@ gnu_java_awt_peer_x_source_files = \
classpath/gnu/java/awt/peer/x/GLGraphics.java \
classpath/gnu/java/awt/peer/x/ImageConverter.java \
classpath/gnu/java/awt/peer/x/KeyboardMapping.java \
+classpath/gnu/java/awt/peer/x/PixmapVolatileImage.java \
classpath/gnu/java/awt/peer/x/XDialogPeer.java \
classpath/gnu/java/awt/peer/x/XEventPump.java \
-classpath/gnu/java/awt/peer/x/XFontPeer.java \
classpath/gnu/java/awt/peer/x/XFontPeer2.java \
classpath/gnu/java/awt/peer/x/XFramePeer.java \
-classpath/gnu/java/awt/peer/x/XGraphics.java \
classpath/gnu/java/awt/peer/x/XGraphics2D.java \
classpath/gnu/java/awt/peer/x/XGraphicsConfiguration.java \
classpath/gnu/java/awt/peer/x/XGraphicsDevice.java \
classpath/gnu/java/awt/peer/x/XGraphicsEnvironment.java \
classpath/gnu/java/awt/peer/x/XImage.java \
-classpath/gnu/java/awt/peer/x/XLightweightPeer.java \
classpath/gnu/java/awt/peer/x/XToolkit.java \
-classpath/gnu/java/awt/peer/x/XWindowPeer.java
+classpath/gnu/java/awt/peer/x/XWindowPeer.java \
+classpath/gnu/java/awt/peer/x/ZPixmapDataBuffer.java
gnu_java_awt_print_source_files = \
classpath/gnu/java/awt/print/JavaPrinterGraphics.java \
@@ -3221,6 +3223,10 @@ classpath/gnu/javax/security/auth/login/ConfigFileTokenizer.java \
classpath/gnu/javax/security/auth/login/GnuConfiguration.java
gnu_javax_security_auth_login_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_security_auth_login_source_files)))
+gnu_javax_sound_source_files = \
+classpath/gnu/javax/sound/AudioSecurityManager.java
+
+gnu_javax_sound_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_javax_sound_source_files)))
gnu_javax_sound_midi_source_files = \
classpath/gnu/javax/sound/midi/alsa/AlsaInputPortDevice.java \
classpath/gnu/javax/sound/midi/alsa/AlsaMidiDeviceProvider.java \
@@ -4523,6 +4529,7 @@ classpath/java/nio/ByteBufferImpl.java \
classpath/java/nio/ByteOrder.java \
classpath/java/nio/CharBuffer.java \
classpath/java/nio/CharBufferImpl.java \
+classpath/java/nio/CharSequenceBuffer.java \
classpath/java/nio/CharViewBufferImpl.java \
java/nio/DirectByteBufferImpl.java \
classpath/java/nio/DoubleBuffer.java \
@@ -7295,6 +7302,10 @@ classpath/external/sax/org/xml/sax/helpers/XMLFilterImpl.java \
classpath/external/sax/org/xml/sax/helpers/XMLReaderAdapter.java \
classpath/external/sax/org/xml/sax/helpers/XMLReaderFactory.java
+sun_awt_source_files = \
+classpath/sun/awt/CausedFocusEvent.java
+
+sun_awt_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(sun_awt_source_files)))
sun_misc_source_files = \
classpath/sun/misc/Service.java \
classpath/sun/misc/ServiceConfigurationError.java \
@@ -7460,6 +7471,7 @@ all_packages_source_files = \
gnu/javax/security/auth.list \
gnu/javax/security/auth/callback.list \
gnu/javax/security/auth/login.list \
+ gnu/javax/sound.list \
gnu/javax/sound/sampled/AU.list \
gnu/javax/sound/sampled/WAV.list \
gnu/javax/swing/plaf/gnu.list \
@@ -7581,6 +7593,7 @@ all_packages_source_files = \
javax/transaction.list \
javax/transaction/xa.list \
org/ietf/jgss.list \
+ sun/awt.list \
sun/misc.list \
sun/reflect.list \
sun/reflect/annotation.list \
@@ -7706,6 +7719,7 @@ ordinary_header_files = \
$(gnu_javax_security_auth_header_files) \
$(gnu_javax_security_auth_callback_header_files) \
$(gnu_javax_security_auth_login_header_files) \
+ $(gnu_javax_sound_header_files) \
$(gnu_javax_sound_sampled_AU_header_files) \
$(gnu_javax_sound_sampled_WAV_header_files) \
$(gnu_javax_swing_plaf_gnu_header_files) \
@@ -7822,6 +7836,7 @@ ordinary_header_files = \
$(javax_transaction_header_files) \
$(javax_transaction_xa_header_files) \
$(org_ietf_jgss_header_files) \
+ $(sun_awt_header_files) \
$(sun_misc_header_files) \
$(sun_reflect_header_files) \
$(sun_reflect_annotation_header_files) \
@@ -10966,6 +10981,12 @@ gnu/javax/security/auth/login.list: $(gnu_javax_security_auth_login_source_files
-include gnu/javax/security/auth/login.deps
+gnu/javax/sound.list: $(gnu_javax_sound_source_files)
+ @$(mkinstalldirs) $(dir $@)
+ echo $(srcdir)/classpath/lib/gnu/javax/sound/*.class > gnu/javax/sound.list
+
+-include gnu/javax/sound.deps
+
gnu-javax-sound-midi.lo: $(gnu_javax_sound_midi_source_files)
@find $(srcdir)/classpath/lib/gnu/javax/sound/midi -name '*.class' > gnu-javax-sound-midi.list
$(LTGCJCOMPILE) -fsource-filename=$(here)/classpath/lib/classes -fjni -findirect-dispatch -fno-indirect-classes -c -o gnu-javax-sound-midi.lo @gnu-javax-sound-midi.list
@@ -11782,6 +11803,12 @@ org-xml.lo: $(org_xml_source_files)
$(LTGCJCOMPILE) -fsource-filename=$(here)/classpath/lib/classes -fjni -findirect-dispatch -fno-indirect-classes -c -o org-xml.lo @org-xml.list
@rm -f org-xml.list
+sun/awt.list: $(sun_awt_source_files)
+ @$(mkinstalldirs) $(dir $@)
+ echo $(srcdir)/classpath/lib/sun/awt/*.class > sun/awt.list
+
+-include sun/awt.deps
+
sun/misc.list: $(sun_misc_source_files)
@$(mkinstalldirs) $(dir $@)
echo $(srcdir)/classpath/lib/sun/misc/*.class > sun/misc.list
diff --git a/libjava/classpath/ChangeLog b/libjava/classpath/ChangeLog
index 9f136e094d2..33455acf899 100644
--- a/libjava/classpath/ChangeLog
+++ b/libjava/classpath/ChangeLog
@@ -1,16 +1,411 @@
-2007-07-20 Keith Seitz
+2007-07-28 Matthias Klose
- * gnu/classpath/jdwp/value/StringValue.java
+ * include/jvmti.h(jniNativeInterface): Rename type.
+
+2007-07-24 Tom Tromey
+
+ PR java/32862:
+ * java/util/EnumMap.java (get): Special case emptySlot.
+ (clone): Rewrote.
+
+2007-07-23 Christian Thalinger
+
+ * gnu/java/nio/charset/ISO_8859_1.java: Added ISO8859-1 to
+ aliases.
+
+2007-07-23 Christian Thalinger
+
+ * vm/reference/sun/misc/Unsafe.java (unpark): Changed signature to
+ be compatible with OpenJDK.
+
+2007-07-13 Roman Kennke
+
+ * gnu/java/awt/java2d/AbstractGraphics2D.java
+ (clip(Shape)): Call setClip when the clip changes.
+ (drawImage): Add translation.
+ (drawLine): Add translation.
+ * gnu/java/awt/peer/x/PixmapVolatileImage.java
+ (getPixmap): New method.
+ * gnu/java/awt/peer/x/XEventPump.java
+ (XEventPump): Name thread. Start as daemon thread.
+ * gnu/java/awt/peer/x/XGraphics2D.java
+ (rawDrawImage): Special handling for PixmapVolatileImage.
+ (rawDrawLine): Don't add translation here. This is done in
+ the superclass.
+ (rawFillRect): Don't add translation here. This is done in
+ the superclass.
+ (renderScanline): Added null check.
+
+2007-07-13 Roman Kennke
+
+ * gnu/java/awt/peer/x/PixmapVolatileImage.java: New class.
+ * gnu/java/awt/peer/x/XGraphicsConfiguration.java
+ (createCompatibleImage(int,int)): Delegate to the 3-int overload.
+ (createCompatibleImage(int,int,int)): Implemented. Using
+ the ZPixmapDataBuffer for OPAQUE images.
+ (createCompatibleVolatileImage(int,int)): Delegate to the 3-int
+ overload.
+ (createCompatibleVolatileImage(int,int,int)): Implemented. Using
+ PixmapVolatileImage.
+ * gnu/java/awt/peer/x/XWindowPeer.java
+ (createImage): Return a PixmapVolatileImage (for now).
+ (createVolatileImage): Implemented, using PixmapVolatileImage.
+ * gnu/java/awt/peer/x/ZPixmapDataBuffer.java
+ New class.
+
+2007-07-10 Roman Kennke
+
+ PR 32645
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphicsCopy.c
+ (copyPixbuf): Swap asserts.
+
+2007-07-09 Chris Burdess
+
+ Fixes #32672
+ * gnu/xml/dom/DomElement.java,
+ * gnu/xml/dom/DomNamedNodeMap.java: don't check owner in
+ setNamedNode when cloning.
+
+2007-07-08 Mario Torre
+
+ * gnu/javax/sound/sampled/gstreamer: new package hierarchy.
+ * gnu/javax/sound/sampled/gstreamer/io/GstAudioFileReader.java: new file.
+ * gnu/javax/sound/sampled/gstreamer/io/GstAudioFileReaderNativePeer.java:
+ likewise.
+ * gnu/javax/sound/sampled/gstreamer/lines/GstDataLine.java: likewise.
+ * gnu/javax/sound/sampled/gstreamer/GStreamerMixer.java: likewise.
+ * gnu/javax/sound/sampled/gstreamer/GStreamerMixerProvider.java: likewise.
+ * gnu/javax/sound/AudioSecurityManager.java: likewise.
+ * gnu/javax/sound/sampled/gstreamer/lines/GstNativeDataLine.java: likewise.
+ * gnu/javax/sound/sampled/gstreamer/lines/GstSourceDataLine.java: likewise.
+ * gnu/javax/sound/sampled/gstreamer/lines/GstPipeline.java: likewise.
+ * gnu/javax/sound/sampled/gstreamer/io/GstAudioFileWriter.java: likewise.
+ * resource/META-INF/services/javax.sound.sampled.spi.AudioFileReader.in:
+ likewise.
+ * resource/META-INF/services/javax.sound.sampled.spi.MixerProvider.in:
+ likewise.
+ * resource/META-INF/services/javax.sound.sampled.spi.MixerProvider:
+ likewise.
+ * native/jni/gstreamer-peer/gstclasspathsrc.c: likewise.
+ * native/jni/gstreamer-peer/gstclasspathsrc.h: likewise.
+ * native/jni/gstreamer-peer/gstinputstream.c: likewise.
+ * native/jni/gstreamer-peer/gstinputstream.h: likewise.
+ * native/jni/gstreamer-peer/GStreamerIOPeer.c: likewise.
+ * native/jni/gstreamer-peer/Makefile.am: likewise.
+ * native/jni/gstreamer-peer/.cvsignore: likewise.
+ * include/gnu_javax_sound_sampled_gstreamer_io_GstAudioFileReaderNativePeer.h:
+ likewise.
+ * include/Makefile.am: add gstreamer generated headers.
+ * configure.ac: add gstreamer sound backend configuration.
+ The backend is currently disabled by default.
+ * native/jni/Makefile.am: code to allow compilation of the gstreamer
+ sound backend.
+ * javax/sound/sampled/spi/MixerProvider.java (isMixerSupported):
+ indentation fixes.
+ * javax/sound/sampled/AudioFormat.java (toString): fix method to display
+ informations only when available.
+ * javax/sound/sampled/DataLine.java:
+ (Info.isFormatSupported): indentation fixes.
+ (Info): indentation fixes.
+ (Info.toString): indentation fixes.
+ (Info.matches): indentation fixes.
+
+2007-07-03 Tania Bento
+
+ * java/lang/Integer.java:
+ (parseInt(String,int,boolean)): Throw NumberFormatException if
+ String is just "+".
+
+2007-07-01 Chris Burdess
+
+ * gnu/xml/transform/WithParam.java: Handle case where content is
+ empty.
+
+2007-06-28 Tom Tromey
+
+ * include/jni.h: Fixed local variables.
+
+2007-06-26 Ito Kazumitsu
+
+ * ChangeLog: Correction of a bug fix number.
+
+2007-06-25 Roman Kennke
+
+ * gnu/java/awt/peer/ClasspathFontPeer.java
+ (canDisplay): Take character as integer codepoint.
+ * gnu/java/awt/peer/gtk/GdkFontPeer.java
+ (canDisplay): Take character as integer codepoint.
+ * gnu/java/awt/peer/gtk/GtkComponentPeer.java
+ (postMouseEvent): Use MouseEvent constructor with absolute coordinates
+ to avoid deadlock (over getLocationOnScreen()).
+ * gnu/java/awt/peer/gtk/VolatileImageGraphics.java
+ (getDeviceConfiguration): Fall back to the default configuration
+ if the component is not set.
+ * gnu/java/awt/peer/qt/QtFontMetrics.java
+ (canDisplay): Take character as integer codepoint.
+ * gnu/java/awt/peer/qt/QtFontPeer.java
+ (canDisplay): Take character as integer codepoint.
+ * gnu/java/awt/peer/x/XFontPeer2.java
+ (canDisplay): Take character as integer codepoint.
+ * include/gnu_java_awt_peer_qt_QtFontMetrics.h
+ (canDisplay): Take character as integer codepoint.
+ * java/awt/Font.java
+ (DIALOG): New constant.
+ (DIALOG_INPUT): New constant.
+ (MONOSPACED): New constant.
+ (SANS_SERIF): New constant.
+ (SERIF): New constant.
+ (Font(Font)): New constructor.
+ (canDisplay(char)): Use new canDisplay(int) method.
+ (canDisplay(int)): New method.
+ (hasLayoutAttributes): New method.
+ * java/awt/event/MouseEvent.java
+ (absX,absY): New fields.
+ (MouseEvent): New constructor with absolute coordinates.
+ (getLocationOnScreen): New method.
+ (getXOnScreen): New method.
+ (getYOnScreen): New method.
+ * native/jni/qt-peer/qtfontmetrics.cpp
+ (canDisplay): Take character as integer codepoint.
+
+2007-06-25 Mark Wielaard
+
+ * native/jni/native-lib/cpnet.c
+ (cpnet_aton) Moved variable declaration of inet6_addr so it is
+ actually in the scope of its use.
+
+2007-06-25 Dalibor Topic
+
+ * native/jni/java-net/gnu_java_net_VMPlainSocketImpl.c
+ (THROW_NO_IPV6): New macro.
+ (Java_gnu_java_net_VMPlainSocketImpl_bind6) Conditionally
+ build code if IPv6 facilities are available, otherwise
+ throw an error.
+ (Java_gnu_java_net_VMPlainSocketImpl_setMulticastInterface6,
+ Java_gnu_java_net_VMPlainSocketImpl_join6,
+ Java_gnu_java_net_VMPlainSocketImpl_leave6,
+ Java_gnu_java_net_VMPlainSocketImpl_joinGroup6,
+ Java_gnu_java_net_VMPlainSocketImpl_leaveGroup6)
+ Use THROW_NO_IPV6.
+
+ * native/jni/java-net/java_net_VMInetAddress.c
+ (Java_java_net_VMInetAddress_getHostByAddr,
+ Java_java_net_VMInetAddress_getHostByName,
+ Java_java_net_VMInetAddress_aton) Build IPv6 dependant
+ code conditionally on IPv6 facilities being available.
+ Switched if-else blocks where necessary to allow that.
+
+ * native/jni/java-net/javanet.c
+ (_javanet_get_ip_netaddr) Build IPv6 dependant code conditionally
+ on IPv6 facilities being available.
+
+ * native/jni/native-lib/cpnet.c
+ (cpnet_getHostByName, cpnet_getHostByAddr) Build IPv6 dependant
+ code conditionally on IPv6 facilities being available.
+ (cpnet_aton) Moved variable declaration of inet6_addr to the scope
+ of its use. Build IPv6 dependant code conditionally
+ on IPv6 facilities being available.
+
+ * native/jni/native-lib/cpnet.h (cpnet_newIPV6Address,
+ cpnet_isIPV6Address, cpnet_IPV6AddressToBytes,
+ cpnet_bytesToIPV6Address): Make IPv6 dependant utility functions
+ available conditionally on IPv6 facilities being available.
+
+2007-06-25 Dalibor Topic
+
+ * m4/acinclude.m4 (CLASSPATH_CHECK_JAVAC): If the user passes an
+ explicit argument to configure, just use it, and don't attempt to
+ run AC_CHECK_PROG. This makes --with-javac="javac -J-Xmx512M" work.
+
+2007-06-25 Dalibor Topic
+
+ * configure.ac: Check for MSG_WAITALL, since it does not exist on
+ Cygwin.
+
+ * native/jni/java-nio/gnu_java_nio_VMChannel.c
+ (Java_gnu_java_nio_VMChannel_receive): Define MSG_WAITALL as 0 if
+ it does not exist.
+
+2007-06-24 Ito Kazumitsu
+
+ Fixes bug #31927
+ * native/jni/java-nio/gnu_java_nio_VMChannel.c
+ (Java_gnu_java_nio_VMChannel_available): Retry using fstat if ioctl
+ fails with ENOTTY.
+
+2007-06-22 Tania Bento
+
+ * java/util/Currency.java:
+ (getInstance (Locale)): Check that the country of the
+ locale given is valid. If it is not, throw an
+ IllegalArgumentException.
+
+2007-06-22 Roman Kennke
+
+ * gnu/java/awt/peer/GLightweightPeer.java
+ * gnu/java/awt/peer/gtk/GdkRobotPeer.java
+ * gnu/java/awt/peer/gtk/GtkCompoonentPeer.java
+ * gnu/java/awt/peer/gtk/GtkFramePeer.java
+ * gnu/java/awt/peer/gtk/GtkWindowPeer.java
+ * gnu/java/awt/peer/qt/QtComponentPeer.java
+ * gnu/java/awt/peer/qt/QtFramePeer.java
+ * gnu/java/awt/peer/qt/QtWindowPeer.java
+ * gnu/java/awt/peer/swing/SwingComponentPeer.java
+ * gnu/java/awt/peer/swing/SwingWindowPeer.java
+ * gnu/java/awt/peer/x/XFramePeer.java:
+ Removed @Override annotations from some interface implementation
+ methods to ensure 1.5 compatibility.
+
+2007-06-22 Christian Thalinger
+
+ * include/jni.h (JNINativeInterface): Renamed to
+ JNINativeInterface_, added const to arguments where necessary.
+ (JNIInvokeInterface): Renamed to JNIInvokeInterface_.
+
+2007-06-22 Roman Kennke
+
+ * sun/awt/CausedFocusEvent.java: New class. Needed for compatibility
+ in java.awt.peer.
+ * java/awt/Dialog.java
+ (ModalExclusionType): New enum.
+ (ModalityType): New enum.
+ * java/awt/Toolkit.java
+ (isModalExclusionTypeSupported): New abstract method.
+ (isModalityTypeSupported): New abstract method.
+ * java/awt/peer/ComponentPeer.java
+ (requestFocus): New method.
+ * java/awt/peer/FramePeer.java
+ (getBoundsPrivate): New method.
+ * java/awt/peer/RobotPeer.java
+ (dispose): New method.
+ * java/awt/peer/WindowPeer.java
+ (setAlwaysOnTop): New method.
+ (updateFocusableWindowState): New method.
+ (setModalBlocked): New method.
+ (updateMinimumSize): New method.
+ (updateIconImages): New method.
+ * gnu/java/awt/peer/GLightweightPeer.java
+ (requestFocus): New method.
+ * gnu/java/awt/peer/gtk/GdkRobotPeer.java
+ (dispose): New method.
+ * gnu/java/awt/peer/gtk/GtkComponentPeer.java
+ (requestFocus): New method.
+ * gnu/java/awt/peer/gtk/GtkFramePeer.java
+ (getBoundsPrivate): New method.
+ * gnu/java/awt/peer/gtk/GtkToolkit.java
+ (isModalExclusionTypeSupported): New method.
+ (isModalityTypeSupported): New method.
+ * gnu/java/awt/peer/gtk/GtkWindowPeer.java
+ (updateIconImages): New method.
+ (updateMinimumSize): New method.
+ (setModalBlocked): New method.
+ (updateFocusableWindowState): New method.
+ (setAlwaysOnTop): New method.
+ * gnu/java/awt/peer/headless/HeadlessToolkit.java
+ (isModalExclusionTypeSupported): New method.
+ (isModalityTypeSupported): New method.
+ * gnu/java/awt/peer/qt/QtComponentPeer.java
+ (requestFocus): New method.
+ * gnu/java/awt/peer/qt/QtFramePeer.java
+ (getBoundsPrivate): New method.
+ * gnu/java/awt/peer/qt/QtToolkit.java
+ (isModalExclusionTypeSupported): New method.
+ (isModalityTypeSupported): New method.
+ * gnu/java/awt/peer/qt/QtWindowPeer.java
+ (updateIconImages): New method.
+ (updateMinimumSize): New method.
+ (setModalBlocked): New method.
+ (updateFocusableWindowState): New method.
+ (setAlwaysOnTop): New method.
+ * gnu/java/awt/peer/swing/SwingComponentPeer.java
+ (requestFocus): New method.
+ * gnu/java/awt/peer/swing/SwingToolkit.java
+ (isModalExclusionTypeSupported): New method.
+ (isModalityTypeSupported): New method.
+ * gnu/java/awt/peer/swing/SwingWindowPeer.java
+ (updateIconImages): New method.
+ (updateMinimumSize): New method.
+ (setModalBlocked): New method.
+ (updateFocusableWindowState): New method.
+ (setAlwaysOnTop): New method.
+ * gnu/java/awt/peer/x/XFramePeer.java
+ (getBoundsPrivate): New method.
+ * gnu/java/awt/peer/x/XToolkit.java
+ (isModalExclusionTypeSupported): New method.
+ (isModalityTypeSupported): New method.
+
+2007-06-21 Andrew John Hughes
+
+ * tools/Makefile.am:
+ Compile in com.sun.tools.javah
+ * tools/com/sun/tools/javah/Main.java:
+ Javah Sun-->Classpath wrapper.
+
+2007-06-21 Christian Thalinger
+
+ * javax/swing/text/html/parser/AttributeList.java (getValues):
+ Check if values is null.
+
+2007-06-21 Roman Kennke
+
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphicsCopy.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFileDialogPeer.c:
+ Fix some type signatures.
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.c:
+ Fix intendation.
+
+2007-06-21 Jeroen Frijters
+
+ * java/io/ObjectStreamClass.java (getClassUID): Return 0L for
+ enums and proxies.
+
+2007-06-21 Jeroen Frijters
+
+ * java/net/URLClassLoader.java
+ (URLClassLoader(URL[],ClassLoader,URLStreamHandlerFactory):
+ Add factory to cache before calling addURLS.
+ (run): Don't call initCause() on ClassNotFoundException.
+
+2007-06-21 Jeroen Frijters
+
+ Fixes #32356
+ * java/lang/reflect/Array.java
+ (newInstance(Class,int[])): Call createMultiArray correctly.
+ (createMultiArray): Fixed dimensions processing order.
+
+2007-06-21 Jeroen Frijters
+
+ * gnu/java/net/loader/URLLoader.java
+ (URLLoader(URLClassLoader,URLStreamHandlerCache,
+ URLStreamHandlerFactory,URL,URL)): Disabiguate CodeSource constructor
+ invocation.
+ * java/awt/AWTKeyStroke.java
+ (LinkedHashMap.removeEldestEntry): Use Map.Entry to fix compile
+ error when compiled against OpenJDK java.util package.
+ * java/awt/AlphaComposite.java
+ (LinkedHashMap.removeEldestEntry): Use Map.Entry to fix compile
+ error when compiled against OpenJDK java.util package.
+
+2007-06-21 Jeroen Frijters
+
+ * gnu/java/security/Engine.java
+ (getInstance(String,String,Provider,Object[]): Use correctly cased
+ property name.
+
+2007-07-19 Keith Seitz
+
+ * classpath/gnu/classpath/jdwp/value/StringValue.java
(StringValue): Tag of StringValue is STRING not OBJECT.
(write): String values are written to the wire as tag byte
and object ID, not JdwpString.
-2007-07-20 Keith Seitz
+2007-07-19 Keith Seitz
* gnu/classpath/jdwp/processor/ClassTypeCommandSet.java
(executeInvokeMethod): No need to use ValueFactory any more;
MethodResult.getReturnedValue now returns a Value.
- (executeNewInstance): Double-check that return result is
+ (executeNewInstance): Double-check that return result is
an ObjectValue; throw JdwpInternalErrorException if it is not.
(invokeMethod): Method IDs come from VMMethod, not VMIdManager.
Arguments are Values not Objects.
@@ -36,21 +431,295 @@
(SetThrownException): Remove.
(getResultType): Remove.
(setResultType): Remove.
- * gnu/classpath/jdwp/value/ObjectValue.java (getValue):
+ * gnu/classpath/jdwp/value/ObjectValue.java (getValue):
New method.
* vm/reference/gnu/classpath/jdwp/VMVirtualMachine.java
(executeMethod): Replace "nonVirtual" parameter with more
generic "options" parameter.
Replace java.lang.reflect.Method parameter with VMMethod.
- Replace Object[] parameter with Value[] parameter.
+ Replace Objet[] parameter with Value[] parameter.
+
+2007-07-10 Dalibor Topic
+
+ * configure.ac (FOUND_CACAO): Removed.
+
+2007-06-01 Robin Garner
+
+ Fixes #32162
+ * gnu/xml/dom/DomNode.java: Correct concurrency problem when deep
+ cloning nodes.
+
+2007-05-30 Mark Wielaard
+
+ Fixes bug #32030 reported by Steve.Blackburn@anu.edu.au
+ * native/jni/java-nio/gnu_java_nio_VMChannel.c
+ (Java_gnu_java_nio_VMChannel_open): Only set O_TRUNC when
+ CPNIO_APPEND is not, but O_WRONLY is set.
+
+2007-05-25 Robert Schuster
+
+ * gnu/java/awt/peer/x/XGraphics2D.java:
+ (rawDrawLine): Added addition of translation.
+ (rawFillRect): Dito.
+
+2007-05-25 Robert Schuster
+
+ * gnu/java/awt/font/opentype/OpenTypeFont.java:
+ (getGlyphIndex): Call getGlyphCharMap() instead of
+ accessing cmap field directly.
+
+2007-05-24 Ito Kazumitsu
+
+ * native/jni/java-nio/gnu_java_nio_VMChannel.c
+ (Java_gnu_java_nio_VMChannel_available): Use fstat or select as an
+ alternative to ioctl.
+ * native/jni/native-lib/cpio.c(cpio_availableBytes): Corrected typo.
+
+2007-05-24 Roman Kennke
+
+ * gnu/java/math/Fixed.java
+ (trunc): New method.
+
+2007-05-24 Roman Kennke
+
+ * gnu/java/awt/java2d/AbstractGraphics2D.java
+ (fillShape): Pass rendering hints to scanline converter.
+ * gnu/java/awt/java2d/ScanlineConverter.java
+ (ONE): New constant for the number 1 as fixed point number.
+ (Y_RESOLUTION): New constant for the Y resolution.
+ (doScanline): Handle the Y resolution.
+ (renderShape): Accept rendering hints.
+ (setResolution): Adjust maximum resolution with Y resolution.
+ * gnu/java/awt/java2d/ScanlineCoverage.java
+ (Iterator.handledPixelCoverage): New field.
+ (Iterator.next): Handle single pixel coverage.
+ (Iterator.hasNext): Handle single pixel coverage.
+ (Iterator.reset): Reset single pixel coverage.
+ (Range.toString): New method.
+ (Coverage.pixelCoverage): New field.
+ (add): Include Y (pixel) coverage.
+ (findOrInsert): Reset Y coverage in reused entries.
+
+2007-05-24 Roman Kennke
+
+ * gnu/java/awt/java2d/ScanlineCoverage.java
+ (Iterator): New class.
+ (Range): New class.
+ (Coverage.covDelta): Made field package private.
+ (Coverage.xPos): Made field package private.
+ (iterator): New field. Stores the iterator that is reused.
+ (ScanlineCoverage): Initialize iterator.
+ (assertion): Removed.
+ (isEmpty): Refined conditions.
+ (iterate): Return Iterator instance.
+ (next): Removed. This is done by the Iterator class now.
+ (test): Removed.
+ * gnu/java/awt/java2d/ScanlineConverter.java
+ (main): Removed.
+ * gnu/java/awt/peer/x/XGraphics2D.java
+ (renderScanline): Adjust to new coverage iterator stuff.
+ * gnu/java/awt/java2d/AbstractGraphics2D.java
+ (renderScanline): Adjust to new coverage iterator stuff.
+
+2007-05-23 Jeroen Frijters
+
+ * java/util/Arrays.java
+ (copyOfRange(T,int,int)): Fixed to instantiate right array type.
+
+2007-05-22 Robert Schuster
+
+ * gnu/java/awt/peer/x/XEventQueue.java:
+ (handleEvent): Calculate modifier value for mouse presse
+ and release events, clip button values.
+ (buttonToModifier): New method.
+ * gnu/java/awt/peer/x/KeyboardMapping.java:
+ (mapModifiers): Added cases for alt gr and the meta key.
+
+2007-05-22 Robert Schuster
+
+ * gnu/java/awt/peer/x/XEventQueue.java:
+ (handleEvent): Use Input.event_window_id for
+ key presses/releases.
+
+2007-05-22 Robert Schuster
+
+ * gnu/java/awt/peer/x/XEventQueue.java:
+ (handleEvent): Use Input.event_window_id instead of
+ Input.child_window_id for mouse presses/releases &
+ movement.
+
+2007-05-22 Roman Kennke
+
+ * gnu/java/awt/peer/x/XFontPeer2.java
+ (XFontMetrics.charWidth): Use cached Point2D instance.
+ * gnu/java/awt/peer/x/XGraphics2D.java
+ (renderScanline): New method. Renders a scanline according to
+ the coverage information.
+ (setPaint): Call super, so that the state is updated correctly.
2007-05-19 Andreas Tobler
PR libgcj/31659
* m4/ax_create_stdint_h.m4: Apply patch from PR31659.
- * configure: Regenerate.
-2007-05-07 Keith Seitz
+2007-05-18 Andreas Tobler
+
+ * autogen.sh (have_libtool): Update comments for Darwin.
+
+2007-05-18 Roman Kennke
+
+ * gnu/java/awt/java2d/AbstractGraphics2D.java
+ (fillScanlineAA): Removed. Replaced by renderScanline().
+ (fillScanline): Dito.
+ (renderScanline): New method. Renders a scanline according to
+ the coverage information from the scanline converter.
+ * gnu/java/awt/java2d/Pixelizer.java: New interface. Describes
+ the targets of the rasterizer.
+ * gnu/java/awt/java2d/ScanlineConverter.java
+ (alphaRes): Removed.
+ (ONE): Removed.
+ (scanlineCoverage): New field. Manages the coverage information.
+ (scanlinesPerPixel): Removed.
+ (scanlineXCov): Removed.
+ (scanlineYCov): Removed.
+ (slPix0): Removed.
+ (ScanlineConverter): Initialize scanline coverage data structure.
+ (clear): Also clear the scanline coverage.
+ (doScanline): Work with Pixelizer objects.
+ Use the ScanlineCoverage datastructure.
+ (main): New method. Performs some tests.
+ (renderShape): Work with pixelizer objects rather than directly
+ on AbstractGraphic2D. Adjust to use ScanlineCoverage datastructure.
+ (setResolution): Set resolution on ScanlineCoverage data too.
+ * gnu/java/awt/java2d/ScanlineCoverage.java: New class. Stores
+ and manages scanline coverage information.
+
+2007-05-14 Andrew John Hughes
+
+ * java/rmi/MarshelledObject.java,
+ * java/rmi/activation/Activatable.java,
+ * java/rmi/activation/ActivationDesc.java,
+ * java/rmi/activation/ActivationGroup.java,
+ * java/rmi/activation/ActivationGroupDesc.java,
+ * java/rmi/activation/ActivationInstantiator.java,
+ * java/rmi/activation/ActivationMonitor.java,
+ * java/rmi/activation/Activator.java:
+ Genericized.
+
+2007-05-13 Andrew John Hughes
+
+ * configure.ac:
+ Check if nsl library is needed for inet_pton.
+ * tools/gappletviewer.in,
+ * tools/gjar.in,
+ * tools/gjarsigner.in,
+ * tools/gjavah.in,
+ * tools/gkeytool.in,
+ * tools/gnative2ascii.in,
+ * tools/gorbd.in,
+ * tools/grmic.in,
+ * tools/grmid.in,
+ * tools/grmiregistry.in,
+ * tools/gserialver.in,
+ * tools/gtnameserv.in:
+ Remove spaces around '=' in setting of datarootdir.
+
+2007-05-11 Kyle Galloway
+
+ * gnu/classpath/jdwp/processor/ReferenceTypeCommandSet.java
+ (executeMethods): Remove cast to ClassReferenceTypeId.
+
+2007-05-11 Jeroen Frijters
+
+ * java/lang/Float.java
+ (toString(float)): Call VMFloat instead of VMDouble.
+ (parseFloat): Call VMFloat. Fixed comment.
+ * vm/reference/java/lang/VMFloat.java
+ (toString, parseFloat): New methods.
+ NEWS: added note about these changes.
+
+2007-05-08 Kyle Galloway
+
+ * vm/reference/VMFrame.java (): Add a parameter for the "this"
+ pointer of the frame.
+
+2007-05-08 Roman Kennke
+
+ * gnu/java/awt/peer/x/XFontPeer.java: Removed.
+ * gnu/java/awt/peer/x/XGraphics.java: Removed
+ * gnu/java/awt/peer/x/XFontPeer2.java
+ (XLineMetrics.getDescent): Use cached idendity transform.
+ (XFontMetrics.cachedPoint): New field. Caches a Point2D instance
+ for reuse.
+ (XFontMetrics.getAscent): Use cached idendity transform.
+ (XFontMetrics.getDescent): Use cached idendity transform.
+ (XFontMetrics.getHeight): Use cached idendity transform.
+ (XFontMetrics.charWidth): Map character to glyph index first.
+ (XFontMetrics.stringWidth): Use cached idendity transform.
+ (IDENDITY): New static field. A reused AffineTransform instance.
+
+2007-05-08 Roman Kennke
+
+ * gnu/java/awt/font/FontDelegate.java
+ (getGlyphIndex): New method. Maps characters to their
+ glyph index in the font.
+ M gnu/java/awt/font/opentype/OpenTypeFont.java
+ (getGlyphIndex): New method. Maps characters to their
+ glyph index in the font.
+
+2007-05-08 Roman Kennke
+
+ * gnu/java/awt/java2d/AbstractGraphics2D.java
+ (AA_SAMPLING): Removed.
+ (alpha): Removed field.
+ (edgeTable): Removed field.
+ (fillScanlineAA): Removed obsolete method.
+ (drawPolyline): Implemented by using a GeneralPath.
+ (drawPolygon): Reset the cached polygon.
+ (fillPolygon): Reset the cached polygon.
+ (fillShape): Default to antialias on for text.
+ (rawDrawLine): Use ShapeCache.
+ (rawDrawRect): Use ShapeCache.
+ (rawFillRect): Use ShapeCache.
+ (fillScanlineAA): New method for antialiased rendering.
+ * gnu/java/awt/java2d/ScanlineConverter.java
+ (scanlinesPerPixel): New field.
+ (minX,maxX): New fields.
+ (scanlineYCov,scanlineXCov): New fields.
+ (slPix0): New field.
+ (alphaRes): New field.
+ (renderShape): Add antialiasing functionality.
+ (doScanline): Add antialiasing functionality.
+ (setResolution): Add antialiasing functionality.
+ (addShape): Determine span in X direction.
+ (fit): Fix thinko.
+ * gnu/java/awt/java2d/ShapeCache.java
+ (polyline): New field for caching polylines.
+
+2007-05-08 Roman Kennke
+
+ * examples/gnu/classpath/examples/awt/HintingDemo.java
+ Add support for showing the original vs the hinted glyphs plus
+ a grid.
+
+2007-05-08 Andrew John Hughes
+
+ * lib/Makefile.am: Print property files as well.
+
+2007-05-08 Andrew John Hughes
+
+ * native/jni/gtk-peer/gtkpeer.c:
+ Added support for 64-bit architectures.
+
+2007-05-04 Chris Burdess
+
+ Fixes PR #31814
+ * gnu/xml/dom/DomDocument.java,
+ gnu/xml/dom/ls/SAXEventSink.java: Don't default attribute when mode is
+ #IMPLIED and value is not specified.
+ * gnu/xml/stream/XMLParser.java: Add debugging info.
+
+2007-05-03 Keith Seitz
* gnu/classpath/jdwp/Jdwp.java (notify): Rewrite to call
new array-based method.
@@ -68,6 +737,15 @@
Change parameters to use arrays for events and requests.
Add suspendPolicy parameter.
+2007-05-03 Thomas Fitzsimmons
+
+ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=237304
+ * javax/swing/text/html/HTMLEditorKit.java
+ (getStyleSheet): Throw RuntimeException when style loading fails.
+ * lib/Makefile.am: Treat css files as a property files.
+ * javax/swing/text/html/default.css: Move to...
+ * resource/javax/swing/text/html/default.css: New file.
+
2007-05-03 Andrew Haley
* gnu/javax/management/Server.java (Server): Record the delegate.
@@ -75,9 +753,188 @@
(unregisterMBean): Likewise.
(notify): New method.
+2007-04-30 Roman Kennke
+
+ * gnu/java/awt/peer/x/XLightweightPeer.java: Removed.
+ * gnu/java/awt/peer/x/XEventPump.java
+ (handleEvent): Improved handling of event ids to window mapping.
+ * gnu/java/awt/peer/x/XFontPeer2.java:
+ Load font.properties at startup.
+ (XLineMetrics.glyphVector): New field.
+ (XLineMetrics.XLineMetrics): Get glyphVector from font delegate.
+ (XLineMetrics.getHeight): Implemented using glyph vector.
+ (XLineMetrics.getLeading): Implemented.
+ (XFontPeer2): Change hardwired font to something more common.
+ (encodeFont): New methods, encodes a font to the font.properties
+ format.
+ (validName): New method. Checks and returns a valid font name.
+ * gnu/java/awt/peer/x/XGraphics2D.java
+ (foreground): New field.
+ (rawSetPixel): Removed.
+ (rawDrawLine): Draw a segment.
+ (rawSetForeground): Removed.
+ (fillScanline): New method.
+ (fillScanlineAA): New method.
+ (setPaint): Set the foreground color.
+ (fillShape): Synchronize super behaviour.
+ (rawDrawImage): Optimize XImage.
+ * gnu/java/awt/peer/x/XGraphicsDevice.java
+ (getDisplay): Improve creation of socket.
+ (createLocalSocket): New helper method to create a local socket.
+ * gnu/java/awt/peer/x/XImage.java
+ (getGraphics): Return an XGraphics2D.
+ * gnu/java/awt/peer/x/XToolkit.java
+ (getClasspathFontPeer): Use XFontPeer2.
+ (createComponent): Removed.
+ * gnu/java/awt/peer/x/XWindowPeer.java
+ (getGraphics): Return an XGraphics2D.
+ (show): Clear the window.
+ (getFontMetrics): Use XFontPeer2.
+
+2007-04-30 Roman Kennke
+
+ * gnu/java/awt/peer/swing/SwingButtonPeer.java
+ (SwingButton.handleFocusEvent): New method. Handles focus events.
+ (SwingButton.requestFocus): Overridden to avoid loop into peer
+ and back.
+ (SwingButton.requestFocus(boolean)): Overridden to avoid loop
+ into peer and back.
+ * gnu/java/awt/peer/swing/SwingCheckboxPeer.java: New class.
+ Implements CheckboxPeer for Swing toolkit.
+ * gnu/java/awt/peer/swing/SwingComponent.java
+ (handleFocusEvent): New method. Handles focus events.
+ * gnu/java/awt/peer/swing/SwingComponentPeer.java
+ (getMinimumSize): Delegate to minimumSize().
+ (getPreferredSize): Delegate to preferredSize().
+ (handleEvent): Only paint when component is showing. Coalesce
+ paint event in any case. Reformat. Handle focus events.
+ (requestFocus): Post FOCUS_GAINED event.
+ (handleFocusEvent): New method. Delegate to SwingComponent
+ object.
+ * gnu/java/awt/peer/swing/SwingContainerPeer.java
+ (addHeavyweightDescendent): Make this protected.
+ (removeHeavyweightDescendent): Make this protected.
+ (getHeavyweightDescendents): New method. Returns all registered
+ heavyweights.
+ (handleKeyEvent): Delegate to peer's handleEvent() method.
+ * gnu/java/awt/peer/swing/SwingLabelPeer.java
+ (SwingLabel.handleFocusEvent): New method.
+ * gnu/java/awt/peer/swing/SwingListPeer.java
+ (SwingList.handleFocusEvent): New method.
+ * gnu/java/awt/peer/swing/SwingPanelPeer.java
+ Fix typo and import.
+ * gnu/java/awt/peer/swing/SwingTextAreaPeer.java
+ Wrap up text area in viewport.
+ * gnu/java/awt/peer/swing/SwingTextFieldPeer.java
+ (SwingTextField.handleFocusEvent): New method.
+ (SwingTextField.requestFocus): New method.
+ (SwingTextField.requestFocus(boolean)): New method.
+
+2007-04-27 Keith Seitz
+
+ * gnu/classpath/jdwp/event/EventManager.java
+ (getEventRequest): Rename to...
+ (getEventRequests): ...this.
+ Change return type to array of requests.
+ Construct a list of all matching events and return
+ them all.
+ * gnu/classpath/jdwp/Jdwp.java (notify): Use getEventRequests
+ and send event notifications for all matching requests.
+
+2007-04-27 Keith Seitz
+
+ * gnu/classpath/jdwp/event/filters/LocationOnlyFilter.java
+ (matches): Use Location.equals to determine equality.
+ * vm/reference/gnu/classpath/jdwp/VMMethod.java (equals):
+ New method.
+ * gnu/classpath/jdwp/util/Location.java (equals):
+ New method.
+
+2007-04-27 Roman Kennke
+
+ * java/nio/CharViewBufferImpl.java
+ (slice): Fixed offset for slice buffer.
+ * java/nio/DoubleViewBufferImpl.java
+ (slice): Fixed offset for slice buffer.
+ * java/nio/FloatViewBufferImpl.java
+ (slice): Fixed offset for slice buffer.
+ * java/nio/IntViewBufferImpl.java
+ (slice): Fixed offset for slice buffer.
+ * java/nio/LongViewBufferImpl.java
+ (slice): Fixed offset for slice buffer.
+ * java/nio/ShortViewBufferImpl.java
+ (slice): Fixed offset for slice buffer.
+
+2007-04-25 Roman Kennke
+
+ * gnu/java/awt/peer/gtk/GdkFontPeer.java,
+ * gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java,
+ * gnu/java/awt/peer/gtk/GdkPixbufDecoder.java,
+ * gnu/java/awt/peer/gtk/GdkScreenGraphicsDevice.java,
+ * gnu/java/awt/peer/gtk/GtkGenericPeer.java,
+ * gnu/java/awt/peer/gtk/GtkToolkit.java:
+ Added fields to hold the native state. Added class initialization
+ things to fetch the JNI field IDs.
+ * include/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.h,
+ * include/gnu_java_awt_peer_gtk_GdkScreenGraphicsDevice.h,
+ * include/gnu_java_awt_peer_gtk_GtkGenericPeer.h,
+ * include/gnu_java_awt_peer_gtk_GtkToolkit.h:
+ Added / changed class init methods for field ID initialization.
+ * native/jni/classpath/Makefile.am: Removed native_state stuff.
+ * native/jni/classpath/native_state.c,
+ * native/jni/classpath/native_state.h: Removed.
+ * native/jni/gconf-peer/Makefile.am: Removed native_state stuff.
+ * native/jni/gtk-peer/Makefile.am: Removed native_state stuff.
+ * native/jni/gtk-peer/cairographics2d.h,
+ * native/jni/gtk-peer/gdkdisplay.h,
+ * native/jni/gtk-peer/gdkfont.h,
+ * native/jni/gtk-peer/GtkDragSourceContextPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphicsCopy.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkPixbufDecoder.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkScreenGraphicsDevice.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCanvasPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCheckboxPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkChoicePeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEmbeddedWindowPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFileDialogPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkFramePeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkGenericPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkLabelPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkListPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMenuBarPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMenuComponentPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMenuItemPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkMenuPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkPanelPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkPopupMenuPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkScrollPanePeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkScrollbarPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextAreaPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkTextFieldPeer.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkToolkit.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkVolatileImage.c,
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c,
+ * native/jni/gtk-peer/gtk_jawt.c:
+ Removed native state stuff and replaced that with an approach
+ to store the native state of an object directly in that object.
+ * native/jni/gtk-peer/gtkpeer.c: New file. Implements the new native
+ state management.
+ * native/jni/gtk-peer/gtkpeer.h: Remove NSA stuff and added
+ prototypes for new native state handling.
+
2007-04-23 Mark Wielaard
- * configure.ac (VERSION): Set to 0.95.
+ * doc/www.gnu.org/newsitems.txt: Add 0.95.
+ * doc/www.gnu.org/downloads/downloads.wml: Likewise.
+ * doc/www.gnu.org/announce/20070423.wml: New file.
2007-04-23 Mark Wielaard
@@ -88,10 +945,15 @@
PR classpath/31646:
* java/util/Arrays.java (qsort): Corrected initial median calculation.
-2007-04-19 Andrew John Hughes
+2007-04-22 Dalibor Topic
- * m4/acinclude.m4
- (CLASSPATH_FIND_JAVAC): Allow detected JAVAC.
+ * Makefile.am (ACLOCAL_AMFLAGS): Add contents of env var
+ LOCAL_AUTORECONF_AMFLAGS to allow for systems where the user
+ has a mix of system & hacked-up autotools.
+
+2007-04-22 Dalibor Topic
+
+ * autogen.sh: Removed unnecessary -I m4 flag.
2007-04-19 Casey Marshall
@@ -99,6 +961,127 @@
* gnu/javax/net/ssl/provider/SSLSocketFactoryImpl.java
(createSocket): New method.
+2007-04-19 Dalibor Topic
+
+ * tools/gappletviewer.in,
+ tools/gjar.in,
+ tools/gjarsigner.in,
+ tools/gjavah.in,
+ tools/gkeytool.in,
+ tools/gnative2ascii.in,
+ tools/gorbd.in,
+ tools/grmic.in,
+ tools/grmid.in,
+ tools/grmiregistry.in,
+ tools/gserialver.in,
+ tools/gtnameserv.in: Set datarootdir to fix a warning from
+ configure.
+
+2007-04-19 Dalibor Topic
+
+ * INSTALL: Removed file generated by autogen.sh.
+
+ * .cvsignore: Added INSTALL.
+
+2007-04-19 Dalibor Topic
+
+ * INSTALL: Replaced by generic install file.
+
+ * autogen.sh: Removed redundant and no longer necessary
+ sections. Use autoreconf.
+
+2007-04-19 Andrew John Hughes
+
+ * m4/acinclude.m4
+ (CLASSPATH_FIND_JAVAC): Allow detected JAVAC.
+
+2007-04-19 Dalibor Topic
+
+ * lib/Makefile.am (propertyfiles, cssfiles, metafiles,
+ iconfiles) Removed variables, inlined them into resource
+ target to avoid use of shell construct and fix portability
+ warning from automake 1.10.
+
+2007-04-18 Tom Tromey
+
+ * tools/gnu/classpath/tools/javah/MethodHelper.java (print):
+ Changed arguments. Directly print method name.
+ * tools/gnu/classpath/tools/javah/ClassWrapper.java
+ (methodNameMap): New field.
+ (makeVtable): Initialize it.
+ (printMethods): Compute name for bridge targets.
+
+2007-04-18 Andrew Haley
+
+ * gnu/java/rmi/server/UnicastConnectionManager.java
+ (UnicastConnectionManager(int port, RMIServerSocketFactory)):
+ Listen on "localhost", not localhost.
+
+2007-04-18 Dalibor Topic
+
+ * include/GtkDragSourceContextPeer.h: Removed, renamed to ..
+
+ * include/gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer.h:
+ New file.
+
+ * native/jni/gtk-peer/GtkDragSourceContextPeer.c: Include
+ gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer.h.
+
+ * include/Makefile.am (GTKPEER_H_FILES): Renamed
+ GtkDragSourceContextPeer.h to
+ gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer.h
+ per current convention. Use portable construct to create
+ gtk and libxmlj peer headers. Depend on the java source code,
+ rather then the class files in order to avoid spurious
+ regeneration.
+
+2007-04-18 Dalibor Topic
+
+ * include/Makefile.am: Use portable construct to create
+ qt peer headers. Depend on the java source code,
+ rather then the class files in order to avoid spurious
+ regeneration.
+
+2007-04-18 Dalibor Topic
+
+ * include/Makefile.am: Use portable construct to create
+ alsa and dssi peer headers. Depend on the java source code,
+ rather then the class files in order to avoid spurious
+ regeneration.
+
+2007-04-18 Dalibor Topic
+
+ * include/Makefile.am: Use portable construct to create
+ gconf peer header. Depend on the java source code, rather
+ the class file to avoid spurious regeneration.
+
+2007-04-18 Dalibor Topic
+
+ * include/gnu_java_awt_peer_qt_QtGraphicsEnvironment.h:
+ Removed empty header file.
+
+ * include/Makefile.am (QTPEER_H_FILES):
+ Removed gnu_java_awt_peer_qt_QtGraphicsEnvironment.h.
+
+2007-04-18 Dalibor Topic
+
+ * native/jni/xmlj/xmlj_xpath.c: Don't include
+ gnu_xml_libxmlj_dom_GnomeXPathNSResolver.h.
+
+ * include/gnu_xml_libxmlj_dom_GnomeXPathNSResolver.h:
+ Removed empty header file.
+
+ * include/Makefile.am (XMLJ_H_FILES): Removed
+ gnu_xml_libxmlj_dom_GnomeXPathNSResolver.h.
+
+2007-04-18 Dalibor Topic
+
+ * include/gnu_java_awt_peer_qt_QtContainerPeer.h: Removed
+ empty header file.
+
+ * include/Makefile.am (QTPEER_H_FILES): Removed
+ gnu_java_awt_peer_qt_QtContainerPeer.h.
+
2007-04-17 Andrew John Hughes
* native/jni/java-net/local.c:
@@ -106,68 +1089,25 @@
* native/jni/java-nio/gnu_java_nio_VMChannel.c,
* native/jni/native-lib/cpnet.c:
Likewise.
+
+2007-04-17 Dalibor Topic
-2007-04-16 Dalibor Topic
+ * m4/acinclude.m4 (CLASSPATH_CHECK_JAVAH):
+ Use AC_CHECK_PROGS and AC_MSG_ERROR. Check for
+ gjavah, gcjh-wrapper-4.1 and gcjh-4.1. Error out
+ when no javah implementation can be found.
- * configure.ac (AM_PROG_CC_C_O): Added to fix automake 1.10
- warning.
+2007-04-17 Dalibor Topic
-2007-04-16 Dalibor Topic
+ * configure.ac (CLASSPATH_WITH_JAVAH): Only check if
+ the JNI headers need to be regenerated.
- * native/plugin/Makefile.am (libgcjwebplugin_la_LDFLAGS):
- Added AM_LDFLAGS for automake 1.10.
+ * m4/acinclude.m4 (USER_SPECIFIED_JAVAH): Removed unused
+ conditional.
-2007-04-15 Dalibor Topic
+2007-04-17 Dalibor Topic
- * depcomp, install-sh, missing, mkinstalldirs,
- doc/texinfo.tex: Removed files generated by autogen.sh.
-
- * .cvsignore: Ignore generated files depcomp, install-sh,
- missing, mkinstalldirs.
-
- * doc/.cvsignore: Ignore generated file doc/texinfo.tex.
-
-2007-04-15 Dalibor Topic
-
- * native/jni/java-lang/Makefile.am (libjavalang_la_LIBADD):
- Fix portability warnings from automake 1.10.
-
-2007-04-15 Dalibor Topic
-
- * Makefile.am (EXTRA_DIST): Add ChangeLog-2006.
-
-2007-04-15 Dalibor Topic
-
- * native/target/.cvsignore: Removed.
-
-2007-04-15 Roman Kennke
-
- * native/target/Linux/.cvsignore,
- * native/target/generic/.cvsignore: Removed.
-
-2007-04-15 Dalibor Topic
-
- * doc/Makefile.am: Fix portability warnings from
- automake 1.10.
-
-2007-04-15 Dalibor Topic
-
- * doc/cp-hacking.texinfo: Updated with information from
- INSTALL file. Removed duplicate and outdated information.
- Updated compiler information. Fixed versioning information
- where entries diverged. Turned command, option, file and
- URL strings into proper texinfo elements.
-
-2007-04-15 Dalibor Topic
-
- * configure.ac: Added support for Iceape libraries as
- a substitute for Mozilla for Debian.
-
-2007-04-17 Tom Tromey
-
- https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=236614
- * gnu/javax/net/ssl/provider/SSLSocketFactoryImpl.java
- (createSocket): Change order of delegation.
+ * lib/Makefile.am (JAVAH): Removed unused variable.
2007-04-17 Casey Marshall
@@ -185,19 +1125,149 @@
isInputShutdown, isOutputShutdown): Always use
'underlyingSocket'.
+2007-04-16 Dalibor Topic
+
+ * configure.ac (AM_PROG_CC_C_O): Added to fix automake 1.10
+ warning.
+
+2007-04-16 Dalibor Topic
+
+ * native/plugin/Makefile.am (libgcjwebplugin_la_LDFLAGS):
+ Added AM_LDFLAGS for automake 1.10.
+
+2007-04-16 Tom Tromey
+
+ https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=236614
+ * gnu/javax/net/ssl/provider/SSLSocketFactoryImpl.java
+ (createSocket): Change order of delegation.
+
+2007-04-16 Andrew Haley
+
+ * java/io/ObjectInputStream.java: (parseContent): Call (String,
+ Object) version of dumpElementln.
+ (dumpElementln(String, Object)): New method.
+ * java/io/ObjectOutputStream.java (writeObject): Call (String,
+ Object) version of dumpElementln.
+ (dumpElementln(String, Object)): New method.
+
2007-04-16 Mark Wielaard
Fixes bug #31590
* java/net/URI.java (parseServerAuthority): Allow empty portStr.
+2007-04-16 Andrew Haley
+
+ * org/omg/IOP/TaggedComponentHelper.java (read): Use
+ read_octet_array(), not read().
+ (write): Use write_octet_array(), not write().
+
+ * org/omg/PortableServer/Servant.java (_get_delegate): Throw if no
+ delegate has been set.
+
2007-04-16 Chris Burdess
- * gnu/xml/stream/XMLParser.java: Work around a problem with
- incorrectly formatted file URLs.
+ * gnu/xml/stream/XMLParser.java: Work around a problem with incorrectly
+ formatted file URLs.
-2007-04-11 Christian Thalinger
+2007-04-15 Dalibor Topic
- * configure.ac: Added AC_C_INLINE.
+ * native/jni/java-lang/Makefile.am (libjavalang_la_LIBADD):
+ Fix portability warnings from automake 1.10.
+
+2007-04-15 Dalibor Topic
+
+ * Makefile.am (EXTRA_DIST): Add ChangeLog-2006.
+
+2007-04-15 Dalibor Topic
+
+ * native/target/.cvsignore: Removed.
+
+2007-04-15 Dalibor Topic
+
+ * doc/Makefile.am: Fix portability warnings from
+ automake 1.10.
+
+2007-04-15 Roman Kennke
+
+ * native/target/Linux/.cvsignore,
+ * native/target/generic/.cvsignore: Removed.
+
+2007-04-15 Dalibor Topic
+
+ * depcomp, install-sh, missing, mkinstalldirs,
+ doc/texinfo.tex: Removed files generated by autogen.sh.
+
+ * .cvsignore: Ignore generated files depcomp, install-sh,
+ missing, mkinstalldirs.
+
+ * doc/.cvsignore: Ignore generated file doc/texinfo.tex.
+
+2007-04-15 Dalibor Topic
+
+ * doc/cp-hacking.texinfo: Updated with information from
+ INSTALL file. Removed duplicate and outdated information.
+ Updated compiler information. Fixed versioning information
+ where entries diverged. Turned command, option, file and
+ URL strings into proper texinfo elements.
+
+2007-04-15 Dalibor Topic
+
+ * configure.ac: Added support for Iceape libraries as
+ a substitute for Mozilla for Debian.
+
+2007-04-12 Roman Kennke
+
+ * java/nio/Buffer.java
+ (array): New abstract method.
+ (hasArray): New abstract method.
+ (arrayOffset): New abstract method.
+ (isDirect): New abstract method.
+
+2007-04-12 Roman Kennke
+
+ * java/nio/CharBuffer.java
+ (wrap(CharSequence,int,int)): Reimplemented using specialized
+ subclass.
+ * java/nio/CharSequenceBuffer.java: New class. Implements char
+ buffers that wrap CharSequences.
+
+2007-04-12 Francis Kung
+
+ PR 23887
+ * gnu/java/awt/peer/gtk/CairoGraphics2D.java
+ (drawGlyphVector): Check for transforms before using optimized path.
+ * gnu/java/awt/peer/gtk/FreetypeGlyphVector.java
+ (FreetypeGlyphVector(FreetypeGlyphVector)): Initialize glyphTransforms array
+ to null and check for nulls in copied array.
+ (hasTransforms): New method.
+ (performDefaultLayout): Check for identity transform.
+ (setGlyphTransform): Check for equality before making changes.
+
+2007-04-12 Francis Kung
+
+ PR 23887
+ * gnu/java/awt/peer/gtk/FreetypeGlyphVector.java
+ (getGlyphLogicalBounds): Fix number of coordinates in transform call.
+ (performDefaultLayout): Respect transformation in font attributes.
+ * javax/swing/plaf/basic/BasicProgressBarUI.java
+ (getStringPlacement): Handle vertical orientations.
+ (paintString): Space vertical text properly.
+
+2007-04-12 Francis Kung
+
+ PR 31539
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c
+ (ft2_map): New static variable.
+ (Java_gnu_java_awt_peer_gtk_GdkFontPeer_initStaticState): Set up ft2_map.
+ (Java_gnu_java_awt_peer_gtk_GdkFontPeer_setFont): Use cached ft2_map.
+
+2007-04-12 Christian Thalinger
+
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkClipboard.c
+ (clipboard_get_func): Call DeleteLocalRef.
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkSelection.c
+ (clipboard_targets_received): Likewise.
+ (clipboard_uris_received): Likewise.
2007-04-12 Christian Thalinger
@@ -207,26 +1277,6 @@
* native/jni/native-lib/cpnet.c (cpnet_getHostByName): Check for
different number of arguments of gethostbyname_r.
-2007-04-11 Francis Kung
-
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c
- (Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getGlyphs): Avoid
- unneeded object reference.
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c
- (Java_gnu_java_awt_peer_gtk_GdkFontPeer_getFontMetrics): Unlock font.
- (Java_gnu_java_awt_peer_gtk_GdkFontPeer_setFont): Remove redundant
- checks.
-
-2007-04-11 Christian Thalinger
-
- * native/jni/native-lib/cpproc.c (cpproc_forkAndExec): Fixed
- warning on some compilers, e.g. MIPSpro.
-
-2007-04-11 Christian Thalinger
-
- * native/jni/java-nio/javanio.c: Include fcntl.h instead of
- sys/fcntl.h.
-
2007-04-12 Mark Wielaard
* gnu/java/awt/peer/ClasspathFontPeer.java (LRUCache): New static
@@ -239,6 +1289,35 @@
* configure.ac (COMPILE_GTK_PEER): Add check for cairo >= 1.1.8.
+2007-04-11 Christian Thalinger
+
+ * native/jni/java-nio/javanio.c: Include fcntl.h instead of
+ sys/fcntl.h.
+
+2007-04-11 Christian Thalinger
+
+ * native/jni/native-lib/cpproc.c (cpproc_forkAndExec): Fixed
+ warning on some compilers, e.g. MIPSpro.
+
+2007-04-11 Francis Kung
+
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c
+ (Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getGlyphs): Avoid unneeded
+ object reference.
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c
+ (Java_gnu_java_awt_peer_gtk_GdkFontPeer_getFontMetrics): Unlock font.
+ (Java_gnu_java_awt_peer_gtk_GdkFontPeer_setFont): Remove redundant checks.
+
+2007-04-11 Christian Thalinger
+
+ * configure.ac: Added AC_C_INLINE.
+
+2007-04-10 Mark Wielaard
+
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c
+ (Java_gnu_java_awt_peer_gtk_ComponentGraphics_initFromVolatile):
+ Destroy surface after it is used to create a cairo context.
+
2007-04-09 Andrew John Hughes
* javax/management/ObjectName.java:
@@ -250,12 +1329,6 @@
(quote(String)): Handle newlines and quotes
correctly.
-2007-04-10 Mark Wielaard
-
- * native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c
- (Java_gnu_java_awt_peer_gtk_ComponentGraphics_initFromVolatile):
- Destroy surface after it is used to create a cairo context.
-
2007-04-09 Francis Kung
PR 31311
@@ -265,16 +1338,26 @@
* gnu_java_awt_peer_gtk_ComponentGraphics.h: Regenerated.
* native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c
(Java_gnu_java_awt_peer_gtk_ComponentGraphics_disposeSurface): Removed.
- (Java_gnu_java_awt_peer_gtk_ComponentGraphics_initState): Destroy surfac
-e
+ (Java_gnu_java_awt_peer_gtk_ComponentGraphics_initState): Destroy surface
after it is used to create a cairo context.
-
2007-04-07 Andrew John Hughes
* javax/management/ObjectName.java:
- (parse(String)): Fix result of getKeyPropertyListString().
+ (propertyValuePattern): New cache variable.
+ (parse(String)): Record in propertyListPattern
+ not propertyPattern and set propertyValuePattern.
+ (isPropertyPattern()): Semantics altered to be the
+ OR of isPropertyListPattern() and isPropertyValuePattern().
+ (isPropertyListPattern()): Implemented.
+ (isPropertyValuePattern()): Implemented.
+ (isPropertyValuePattern(String)): Implemented.
+
+2007-04-07 Andrew John Hughes
+ * javax/management/ObjectName.java:
+ (parse(String)): Fix result of getKeyPropertyListString().
+
2007-04-07 Mark Wielaard
* resource/META-INF/services/javax.xml.parsers.DocumentBuilderFactor,
@@ -284,15 +1367,21 @@ e
resource/META-INF/services/org.w3c.dom.DOMImplementationSourceList,
resource/META-INF/services/org.xml.sax.driver: Removed.
+2007-04-07 Andrew John Hughes
+
+ * javax/management/ObjectName.java:
+ (checkComponents()): Separate value and
+ key illegal characters to allow value wildcards.
+
2007-04-07 Andrew John Hughes
* javax/management/ObjectName.java
(parse(String)): Fix parsing where the wildcard
is juxtaposed between other pairs.
-
+
2007-04-06 Mark Wielaard
- * configure.ac (VERSION): Set to 0.95-rc.
+ * configure.ac (VERSION): Set to 0.96-pre.
2007-04-06 Andrew John Hughes
diff --git a/libjava/classpath/ChangeLog.gcj b/libjava/classpath/ChangeLog.gcj
index 8bb18fc8e53..ff019d02368 100644
--- a/libjava/classpath/ChangeLog.gcj
+++ b/libjava/classpath/ChangeLog.gcj
@@ -1,3 +1,7 @@
+2007-08-04 Matthias Klose
+
+ * java/util/EnumMap.java (clone): Add cast.
+
2007-07-12 Matthias Klose
* lib/jazzlib, tools/gnu/classpath/tools/rmi: Remove empty directories.
diff --git a/libjava/classpath/INSTALL b/libjava/classpath/INSTALL
index 86ce66c64e4..23e5f25d0e5 100644
--- a/libjava/classpath/INSTALL
+++ b/libjava/classpath/INSTALL
@@ -1,225 +1,236 @@
-Installing GNU Classpath - Last updated: June 19, 2006
+Installation Instructions
+*************************
-First, this is a development release only! Unless you are interested in
-active development and debugging, or just like running random alpha code,
-this release is probably not for you. Please see the README file for a
-list of VMs that work with GNU Classpath.
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
+Software Foundation, Inc.
-Note that if you are building from a non-released (CVS) version of GNU
-classpath, installation instructions are found in the doc/hacking.texi
-file. Or at http://www.gnu.org/software/classpath/docs/hacking.html
+This file is free documentation; the Free Software Foundation gives
+unlimited permission to copy, distribute and modify it.
-------------------------------------------------------------------
-Suggested Software
-------------------------------------------------------------------
- GNU make ("gmake") is required for building Classpath.
+Basic Installation
+==================
- For any build environment involving native libraries, these
- new versions of autoconf, automake, and libtool are required
- if changes are made that require rebuilding configure, Makefile.in,
- aclocal.m4, or config.h.in.
+These are generic installation instructions.
- - GNU autoconf 2.59+
- - GNU automake 1.9+
- - GNU libtool 1.5+
+ The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation. It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions. Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
- When working from CVS you can run the above tools by executing
- ./autogen.sh in the source directory.
+ It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring. (Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.)
- For building the Java bytecode (.class files), one of these
- compilers are required. You can select which compiler using
- --with-jikes, --with-gcj, --with-ecj or --with-kjc as argument to
- configure; the present default is gcj.
+ If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release. If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
- - GCJ 4.0+ (part of the GNU GCC package).
- - IBM jikes 1.19+.
- - Eclipse Compiler for Java 3.1+
- - The kjc compiler is supported with configure but we have
- been unable to successfully compile with it.
+ The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'. You only need
+`configure.ac' if you want to change it or regenerate `configure' using
+a newer version of `autoconf'.
- IMPORTANT: Versions of GCJ which are earlier than 4.0 contain
- bugs which make it impossible to compile the class library and
- are *not* supported any more. If you are stuck on a system where
- GCC 3.x is the system compiler we recommend using Jikes.
+The simplest way to compile this package is:
- For building the gtk+ AWT peer JNI native libraries, the following
- are required unless --disable-gtk-peer is used as an argument to
- configure.
+ 1. `cd' to the directory containing the package's source code and type
+ `./configure' to configure the package for your system. If you're
+ using `csh' on an old version of System V, you might need to type
+ `sh ./configure' instead to prevent `csh' from trying to execute
+ `configure' itself.
- - GTK+ 2.8.x (or higher)
- - gdk-pixbuf
+ Running `configure' takes awhile. While running, it prints some
+ messages telling which features it is checking for.
- - XTest Extension (libXtst) for GdkRobot support in java.awt.
-
- - There is a bug in earlier versions of at-spi, atk, and gail, which are
- used for GNOME accessibility. Prior to version 1.18.0 of these packages,
- gtk graphical applications should be run without accessibility (clear the
- GTK_MODULES environment variable).
+ 2. Type `make' to compile the package.
- For building gcjwebplugin you'll need the Mozilla plugin
- support headers and libraries.
+ 3. Optionally, type `make check' to run any self-tests that come with
+ the package.
- The GConf-based backend for java.util.prefs needs the following
- library headers:
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
- - gconf 2.11.2 (or higher)
+ 5. You can remove the program binaries and object files from the
+ source code directory by typing `make clean'. To also remove the
+ files that `configure' created (so you can compile the package for
+ a different kind of computer), type `make distclean'. There is
+ also a `make maintainer-clean' target, but that is intended mainly
+ for the package's developers. If you use it, you may have to get
+ all sorts of other programs in order to regenerate files that came
+ with the distribution.
- For building the Qt AWT peer JNI native libraries you have to
- specify --enable-qt-peer and need the following library:
+Compilers and Options
+=====================
- - Qt 4.0.1
+Some systems require unusual options for compilation or linking that the
+`configure' script does not know about. Run `./configure --help' for
+details on some of the pertinent environment variables.
- For building the X AWT peers see information below
- (Building and running with the X AWT peers). You will need
- the Escher 0.2.3 library:
- http://escher.sourceforge.net
+ You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment. Here
+is an example:
- Please note that at the moment most operating systems do not
- ship Qt4 by default. We recommend using GNU Classpath' Qt4
- support only for its developers and bug reporters. See
- http://developer.classpath.org/mediation/ClasspathShowcase
- for details on how to get it to work.
+ ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
- For building the xmlj JAXP implementation (disabled by default, use
- configure --enable-xmlj) you need the following installed:
- - The XML C library for Gnome (libxml2)
- http://www.xmlsoft.org/
- Minimum version of libxml2 required: 2.6.8
+ *Note Defining Variables::, for more details.
- - The XSLT C library for Gnome (libxslt)
- http://www.xmlsoft.org/XSLT/
- Minimum version of libxslt required: 1.1.11
+Compiling For Multiple Architectures
+====================================
- For building the documentation you will need
+You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory. To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'. `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script. `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
- - texinfo 4.2 or higher.
+ If you have to use a `make' that does not support the `VPATH'
+variable, you have to compile the package for one architecture at a
+time in the source code directory. After you have installed the
+package for one architecture, use `make distclean' before reconfiguring
+for another architecture.
- For building the ALSA midi provider code you will need
- ALSA. http://www.alsa-project.org.
+Installation Names
+==================
- For building the DSSI midi synthesizer provider code you will
- need DSSI from http://dssi.sourceforge.net. This, in turn,
- introduces many dependencies, including:
+By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc. You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX'.
- - liblo: the Lightweight OSC implementation
- http://plugin.org.uk/liblo/
+ You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files. If you
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
- - LADSPA: Linux Audio Developer's Simple Plugin API
- http://www.ladspa.org
+ In addition, if you use an unusual directory layout you can give
+options like `--bindir=DIR' to specify different values for particular
+kinds of files. Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
- - the JACK Audio Connection Kit: A low latency audio server
- http://jackit.sourceforge.net
+ If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
- - libsndfile: an audio file I/O library
- http://www.mega-nerd.com/libsndfile/
+Optional Features
+=================
- - fluidsynth: a real-time SoundFont 2 based soft-synth
- http://www.fluidsynth.org/
+Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System). The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
- For enabling the com.sun.tools.javac support in tools.zip you
- will a need jar file containing the Eclipse Java Compiler.
- Otherwise com.sun.tools.javac will not be included in tools.zip.
+ For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
-This package was designed to use the GNU standard for configuration
-and makefiles. To build and install do the following:
+Specifying the System Type
+==========================
-1). Run the "configure" script to configure the package. There are
-various options you might want to pass to configure to control how the
-package is built. Consider the following options, "configure --help"
-gives a complete list.
+There may be some features `configure' cannot figure out automatically,
+but needs to determine by the type of machine the package will run on.
+Usually, assuming the package is built to be run on the _same_
+architectures, `configure' can figure that out, but if it prints a
+message saying it cannot guess the machine type, give it the
+`--build=TYPE' option. TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
- --enable-java compile Java source default=yes
- --enable-jni compile JNI source default=yes
- --enable-gtk-peer compile GTK native peers default=yes
- --enable-qt-peer compile Qt4 native peers default=no
- --enable-default-toolkit
- fully qualified class name of default AWT toolkit
- default=no
- --enable-xmlj compile native libxml/xslt library default=no
- --enable-load-library enable to use JNI native methods default=yes
- --enable-local-sockets enable build of local Unix sockets
- --with-jikes to compile the class library using jikes
- the default is to use gcj
- --with-glibj define what to install (zip|flat|both|none)
- default=zip
- --with-escher=/path/to/escher
- enable build of the X/Escher peers, with
- the escher library at /path/to/escher, either
- in the form of a JAR file, or a directory
- containing the .class files of Escher.
- --enable-Werror whether to compile C code with -Werror which turns
- any compiler warning into a compilation failure
- default=no
- --with-gjdoc generate documentation using gjdoc default=no
- --with-jay Regenerate the parsers with jay must be given the
- path to the jay executable
- --with-glibj-zip=ABS.PATH
- use prebuilt glibj.zip class library
- --with-ecj-jar=ABS.PATH specify jar file containing the Eclipse Java
- Compiler
+ CPU-COMPANY-SYSTEM
-For more flags run configure --help.
+where SYSTEM can have one of these forms:
-2). Type "gmake" to build the package. There is no longer a
-dependency problem and we aim to keep it that way.
+ OS KERNEL-OS
-3). Type "gmake install" to install everything. This may require
-being the superuser. The default install path is /usr/local/classpath
-you may change it by giving configure the --prefix= option.
+ See the file `config.sub' for the possible values of each field. If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
-Report bugs to classpath@gnu.org or much better via Savannah at this
-URL: http://savannah.gnu.org/support/?func=addsupport&group=classpath
+ If you are _building_ compiler tools for cross-compiling, you should
+use the option `--target=TYPE' to select the type of system they will
+produce code for.
-Happy Hacking!
+ If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
-Once installed, GNU Classpath is ready to be used by any VM that supports
-using the official version of GNU Classpath. Simply ensure that
-/usr/local/classpath/share/classpath is in your $CLASSPATH environment
-variable. You'll also have to set your LD_LIBRARY_PATH
-variable (or similar system configuration) to include the Classpath
-native libraries in /usr/local/classpath/lib/classpath.
+Sharing Defaults
+================
-*NOTE* All example paths assume the default prefix is used with configure.
-If you don't know what this means then the examples are correct.
+If you want to set default values for `configure' scripts to share, you
+can create a site shell script called `config.site' that gives default
+values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists. Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
-LD_LIBRARY_PATH=/usr/local/classpath/lib/classpath
-CLASSPATH=/usr/local/classpath/share/classpath/glibj.zip:.
-export LD_LIBRARY_PATH CLASSPATH
+Defining Variables
+==================
-More information about the VMs that use GNU Classpath can be found in the
-README file.
+Variables not defined in a site shell script can be set in the
+environment passed to `configure'. However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost. In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'. For example:
-------------------------------------------------------------------
-Building and running with the X AWT peers
-------------------------------------------------------------------
+ ./configure CC=/usr/local2/bin/gcc
-In order build the X peers you need the Escher library version 0.2.3
-from http://escher.sourceforge.net . Unpack (and optionally build) the
-Escher library following the instructions in the downloaded
-package. Enable the build of the X peers by passing
---with-escher=/path/to/escher to ./configure where /path/to/escher
-either points to a directory structure or JAR file containing the
-Escher classes. For Unix systems it is preferable to also build local
-socket support by passing --enable-local-sockets, which accelerates
-the network communication to the X server significantly.
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script). Here is a another example:
-In this release you have to enable the X peers at runtime by
-setting the system property awt.toolkit=gnu.java.awt.peer.x.XToolkit
-by passing -Dawt.toolkit=gnu.java.awt.peer.x.XToolkit to the java
-command when running an application.
+ /bin/bash ./configure CONFIG_SHELL=/bin/bash
-------------------------------------------------------------------
-Misc. Notes
-------------------------------------------------------------------
-Compilation is accomplished using a compiler's @file syntax. For our
-part, we avoid placing make style dependencies as rules upon the
-compilation of a particular class file and leave this up to the Java
-compiler instead.
+Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
+configuration-related scripts to be executed by `/bin/bash'.
-The --enable-maintainer-mode option to configure currently does very
-little and shouldn't be used by ordinary developers or users anyway.
+`configure' Invocation
+======================
+
+`configure' recognizes the following options to control how it operates.
+
+`--help'
+`-h'
+ Print a summary of the options to `configure', and exit.
+
+`--version'
+`-V'
+ Print the version of Autoconf used to generate the `configure'
+ script, and exit.
+
+`--cache-file=FILE'
+ Enable the cache: use and save the results of the tests in FILE,
+ traditionally `config.cache'. FILE defaults to `/dev/null' to
+ disable caching.
+
+`--config-cache'
+`-C'
+ Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+ Do not print messages saying which checks are being made. To
+ suppress all normal output, redirect it to `/dev/null' (any error
+ messages will still be shown).
+
+`--srcdir=DIR'
+ Look for the package's source code in directory DIR. Usually
+ `configure' can determine that directory automatically.
+
+`configure' also accepts some other, not widely useful, options. Run
+`configure --help' for more details.
-On Windows machines, the native libraries do not currently build, but
-the Java bytecode library will. Gcj trunk is beginning to work under
-Cygwin. The mingw32 version of jikes cannot follow symbolic links, you
-must use a cygwin build of jikes to access this limited functionality.
diff --git a/libjava/classpath/Makefile.am b/libjava/classpath/Makefile.am
index 59cc3c0733b..4434026c331 100644
--- a/libjava/classpath/Makefile.am
+++ b/libjava/classpath/Makefile.am
@@ -4,8 +4,9 @@
SUBDIRS = lib doc external include native resource scripts tools $(EXAMPLESDIR)
DIST_SUBDIRS = lib doc external include native resource scripts tools examples
+# Allow users to pass site-specific flags to autoreconf via an env var.
## GCJ LOCAL: we need an extra -I here.
-ACLOCAL_AMFLAGS = -I m4 -I ../.. -I ../../config
+ACLOCAL_AMFLAGS = -I m4 -I ../.. -I ../../config ${LOCAL_AUTORECONF_FLAGS}
native: lib
diff --git a/libjava/classpath/Makefile.in b/libjava/classpath/Makefile.in
index cbec75149dd..3f1ba4820e8 100644
--- a/libjava/classpath/Makefile.in
+++ b/libjava/classpath/Makefile.in
@@ -45,6 +45,8 @@ DIST_COMMON = README $(am__configure_deps) \
$(top_srcdir)/gnu/classpath/Configuration.java.in \
$(top_srcdir)/gnu/java/security/Configuration.java.in \
$(top_srcdir)/resource/META-INF/services/java.util.prefs.PreferencesFactory.in \
+ $(top_srcdir)/resource/META-INF/services/javax.sound.sampled.spi.AudioFileReader.in \
+ $(top_srcdir)/resource/META-INF/services/javax.sound.sampled.spi.MixerProvider.in \
../../ABOUT-NLS ../../COPYING ../../COPYING.LIB \
../../ChangeLog ../../README ../../compile ../../config.guess \
../../config.rpath ../../config.sub ../../depcomp \
@@ -79,7 +81,9 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/../../mkinstalldirs
CONFIG_HEADER = $(top_builddir)/include/config.h
CONFIG_CLEAN_FILES = gnu/classpath/Configuration.java \
gnu/java/security/Configuration.java \
- resource/META-INF/services/java.util.prefs.PreferencesFactory
+ resource/META-INF/services/java.util.prefs.PreferencesFactory \
+ resource/META-INF/services/javax.sound.sampled.spi.AudioFileReader \
+ resource/META-INF/services/javax.sound.sampled.spi.MixerProvider
SOURCES =
DIST_SOURCES =
MULTISRCTOP =
@@ -142,6 +146,8 @@ CREATE_DSSI_LIBRARIES_FALSE = @CREATE_DSSI_LIBRARIES_FALSE@
CREATE_DSSI_LIBRARIES_TRUE = @CREATE_DSSI_LIBRARIES_TRUE@
CREATE_GCONF_PEER_LIBRARIES_FALSE = @CREATE_GCONF_PEER_LIBRARIES_FALSE@
CREATE_GCONF_PEER_LIBRARIES_TRUE = @CREATE_GCONF_PEER_LIBRARIES_TRUE@
+CREATE_GSTREAMER_PEER_LIBRARIES_FALSE = @CREATE_GSTREAMER_PEER_LIBRARIES_FALSE@
+CREATE_GSTREAMER_PEER_LIBRARIES_TRUE = @CREATE_GSTREAMER_PEER_LIBRARIES_TRUE@
CREATE_GTK_PEER_LIBRARIES_FALSE = @CREATE_GTK_PEER_LIBRARIES_FALSE@
CREATE_GTK_PEER_LIBRARIES_TRUE = @CREATE_GTK_PEER_LIBRARIES_TRUE@
CREATE_JNI_HEADERS_FALSE = @CREATE_JNI_HEADERS_FALSE@
@@ -180,8 +186,6 @@ EXEEXT = @EXEEXT@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_CACAO_FALSE = @FOUND_CACAO_FALSE@
-FOUND_CACAO_TRUE = @FOUND_CACAO_TRUE@
FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
@@ -205,6 +209,15 @@ GJDOC = @GJDOC@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_LIBS = @GLIB_LIBS@
GREP = @GREP@
+GSTREAMER_BASE_CFLAGS = @GSTREAMER_BASE_CFLAGS@
+GSTREAMER_BASE_LIBS = @GSTREAMER_BASE_LIBS@
+GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
+GSTREAMER_FILE_READER = @GSTREAMER_FILE_READER@
+GSTREAMER_LIBS = @GSTREAMER_LIBS@
+GSTREAMER_MIXER_PROVIDER = @GSTREAMER_MIXER_PROVIDER@
+GSTREAMER_PLUGINS_BASE_CFLAGS = @GSTREAMER_PLUGINS_BASE_CFLAGS@
+GSTREAMER_PLUGINS_BASE_LIBS = @GSTREAMER_PLUGINS_BASE_LIBS@
+GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
GTK_CFLAGS = @GTK_CFLAGS@
GTK_LIBS = @GTK_LIBS@
INIT_LOAD_LIBRARY = @INIT_LOAD_LIBRARY@
@@ -277,8 +290,6 @@ USER_CLASSLIB = @USER_CLASSLIB@
USER_JAVAH = @USER_JAVAH@
USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
-USER_SPECIFIED_JAVAH_FALSE = @USER_SPECIFIED_JAVAH_FALSE@
-USER_SPECIFIED_JAVAH_TRUE = @USER_SPECIFIED_JAVAH_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
@@ -354,7 +365,9 @@ vm_classes = @vm_classes@
# lib first, to compile .class files before native code, last examples
SUBDIRS = lib doc external include native resource scripts tools $(EXAMPLESDIR)
DIST_SUBDIRS = lib doc external include native resource scripts tools examples
-ACLOCAL_AMFLAGS = -I m4 -I ../.. -I ../../config
+
+# Allow users to pass site-specific flags to autoreconf via an env var.
+ACLOCAL_AMFLAGS = -I m4 -I ../.. -I ../../config ${LOCAL_AUTORECONF_FLAGS}
EXTRA_DIST = HACKING BUGS THANKYOU mauve-classpath LICENSE \
ChangeLog-2003 ChangeLog-2004 ChangeLog-2005 ChangeLog-2006 \
ChangeLog.gnujaxp.1 ChangeLog.gnujaxp.2 ChangeLog.libxmlj \
@@ -402,6 +415,10 @@ gnu/java/security/Configuration.java: $(top_builddir)/config.status $(top_srcdir
cd $(top_builddir) && $(SHELL) ./config.status $@
resource/META-INF/services/java.util.prefs.PreferencesFactory: $(top_builddir)/config.status $(top_srcdir)/resource/META-INF/services/java.util.prefs.PreferencesFactory.in
cd $(top_builddir) && $(SHELL) ./config.status $@
+resource/META-INF/services/javax.sound.sampled.spi.AudioFileReader: $(top_builddir)/config.status $(top_srcdir)/resource/META-INF/services/javax.sound.sampled.spi.AudioFileReader.in
+ cd $(top_builddir) && $(SHELL) ./config.status $@
+resource/META-INF/services/javax.sound.sampled.spi.MixerProvider: $(top_builddir)/config.status $(top_srcdir)/resource/META-INF/services/javax.sound.sampled.spi.MixerProvider.in
+ cd $(top_builddir) && $(SHELL) ./config.status $@
mostlyclean-libtool:
-rm -f *.lo
diff --git a/libjava/classpath/NEWS b/libjava/classpath/NEWS
index 85630ffab3c..c46be603589 100644
--- a/libjava/classpath/NEWS
+++ b/libjava/classpath/NEWS
@@ -1,3 +1,10 @@
+New in release 0.96
+
+Runtime interface changes:
+
+* Add VMFloat.toString(float) and VMFloat.parseFloat(String). Default
+ implementations are the same as previous behavior.
+
New in release 0.95 (Apr 23, 2007)
* Full merge of 1.5 generics work.
diff --git a/libjava/classpath/autogen.sh b/libjava/classpath/autogen.sh
index eb94e2258b3..3e46cff1d9c 100755
--- a/libjava/classpath/autogen.sh
+++ b/libjava/classpath/autogen.sh
@@ -28,50 +28,9 @@ if $have_libtool ; then : ; else
echo "You must have libtool 1.5 installed to compile $PROJECT."
echo "Install the appropriate package for your distribution,"
echo "or get the source tarball at http://ftp.gnu.org/gnu/libtool/"
- echo "For Darwin you need the latest stable (1.5.18) to support"
- echo "Frameworks linking. Also, you have to point ACLOCAL_FLAGS"
- echo "to this libtool/share/aclocal."
- DIE=1
-fi
-
-have_autoconf=false
-if autoconf --version < /dev/null > /dev/null 2>&1 ; then
- autoconf_version=`autoconf --version | sed 's/^[^0-9]*\([0-9.][0-9.]*\).*/\1/'`
- case $autoconf_version in
- 2.59* | 2.6[0-9]* )
- have_autoconf=true
- ;;
- esac
-fi
-if $have_autoconf ; then : ; else
- echo
- echo "You must have autoconf 2.59 or later installed for $PROJECT."
- echo "Install the appropriate package for your distribution,"
- echo "or get the source tarball at http://ftp.gnu.org/gnu/autoconf/"
- DIE=1
-fi
-
-have_automake=false
-# We know each 1.9.x version works
-if automake-1.9 --version < /dev/null > /dev/null 2>&1 ; then
- AUTOMAKE=automake-1.9
- ACLOCAL=aclocal-1.9
- have_automake=true
-elif automake --version < /dev/null > /dev/null 2>&1 ; then
- AUTOMAKE=automake
- ACLOCAL=aclocal
- automake_version=`automake --version | sed 's/^[^0-9]*\([0-9.][0-9.]*\).*/\1/'`
- case $automake_version in
- 1.9* | 1.10*)
- have_automake=true
- ;;
- esac
-fi
-if $have_automake ; then : ; else
- echo
- echo "You must have automake 1.9 or 1.10 installed to compile $PROJECT."
- echo "Install the appropriate package for your distribution,"
- echo "or get the source tarball at http://ftp.gnu.org/gnu/automake/"
+ echo "For Darwin you need the latest stable (1.5.22) to support"
+ echo "Frameworks linking. Also, you have to point"
+ echo "LOCAL_AUTORECONF_FLAGS to this libtool/share/aclocal."
DIE=1
fi
@@ -91,34 +50,8 @@ if test "x$AUTOGEN_SUBDIR_MODE" = "xyes"; then
fi
fi
-if test -z "$ACLOCAL_FLAGS"; then
+autoreconf --force --install --warnings=no-portability || exit $?
- acdir=`$ACLOCAL --print-ac-dir`
- m4list="glib-2.0.m4 glib-gettext.m4"
-
- for file in $m4list
- do
- if [ ! -f "$acdir/$file" ]; then
- echo "WARNING: aclocal's directory is $acdir, but..."
- echo " no file $acdir/$file"
- echo " You may see fatal macro warnings below."
- echo " If these files are installed in /some/dir, set the ACLOCAL_FLAGS "
- echo " environment variable to \"-I /some/dir\", or install"
- echo " $acdir/$file."
- echo ""
- fi
- done
-fi
-
-# Use the "-I m4 flag in order to include pkg.m4 and other .m4 files.
-$ACLOCAL -I m4 $ACLOCAL_FLAGS || exit $?
-
-${LIBTOOLIZE} --force || exit $?
-
-autoheader || exit $?
-
-$AUTOMAKE --add-missing || exit $?
-autoconf || exit $?
cd $ORIGDIR || exit $?
if test "x$AUTOGEN_SUBDIR_MODE" = "xyes"; then
diff --git a/libjava/classpath/configure b/libjava/classpath/configure
index cdc6bf4d3e1..3e8b19dda8d 100755
--- a/libjava/classpath/configure
+++ b/libjava/classpath/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.59 for GNU Classpath 0.95.
+# Generated by GNU Autoconf 2.59 for GNU Classpath 0.96-pre.
#
# Report bugs to .
#
@@ -418,8 +418,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package.
PACKAGE_NAME='GNU Classpath'
PACKAGE_TARNAME='classpath'
-PACKAGE_VERSION='0.95'
-PACKAGE_STRING='GNU Classpath 0.95'
+PACKAGE_VERSION='0.96-pre'
+PACKAGE_STRING='GNU Classpath 0.96-pre'
PACKAGE_BUGREPORT='classpath@gnu.org'
ac_unique_file="java/lang/System.java"
@@ -461,7 +461,7 @@ ac_includes_default="\
# include
#endif"
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os JAVA_MAINTAINER_MODE_TRUE JAVA_MAINTAINER_MODE_FALSE GENINSRC_TRUE GENINSRC_FALSE multi_basedir LIBVERSION CLASSPATH_MODULE CLASSPATH_CONVENIENCE INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CREATE_COLLECTIONS_TRUE CREATE_COLLECTIONS_FALSE CREATE_JNI_LIBRARIES_TRUE CREATE_JNI_LIBRARIES_FALSE CREATE_CORE_JNI_LIBRARIES_TRUE CREATE_CORE_JNI_LIBRARIES_FALSE CREATE_GCONF_PEER_LIBRARIES_TRUE CREATE_GCONF_PEER_LIBRARIES_FALSE default_toolkit CREATE_XMLJ_LIBRARY_TRUE CREATE_XMLJ_LIBRARY_FALSE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP EGREP CREATE_ALSA_LIBRARIES_TRUE CREATE_ALSA_LIBRARIES_FALSE CREATE_DSSI_LIBRARIES_TRUE CREATE_DSSI_LIBRARIES_FALSE CREATE_GTK_PEER_LIBRARIES_TRUE CREATE_GTK_PEER_LIBRARIES_FALSE CREATE_QT_PEER_LIBRARIES_TRUE CREATE_QT_PEER_LIBRARIES_FALSE CREATE_PLUGIN_TRUE CREATE_PLUGIN_FALSE toolexeclibdir nativeexeclibdir glibjdir VM_BINARY FOUND_CACAO_TRUE FOUND_CACAO_FALSE CREATE_JNI_HEADERS_TRUE CREATE_JNI_HEADERS_FALSE CREATE_WRAPPERS_TRUE CREATE_WRAPPERS_FALSE LN_S LIBTOOL SED FGREP GREP LD DUMPBIN ac_ct_DUMPBIN NM AR ac_ct_AR RANLIB ac_ct_RANLIB lt_ECHO CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP PERL COLLECTIONS_PREFIX LIBMAGIC LIBICONV LTLIBICONV WARNING_CFLAGS STRICT_WARNING_CFLAGS ERROR_CFLAGS PKG_CONFIG XML_CFLAGS XML_LIBS XSLT_CFLAGS XSLT_LIBS X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS GTK_CFLAGS GTK_LIBS FREETYPE2_CFLAGS FREETYPE2_LIBS PANGOFT2_CFLAGS PANGOFT2_LIBS CAIRO_CFLAGS CAIRO_LIBS XTEST_LIBS GCONF_CFLAGS GCONF_LIBS GDK_CFLAGS GDK_LIBS QT_CFLAGS QT_LIBS MOC MOZILLA_CFLAGS MOZILLA_LIBS GLIB_CFLAGS GLIB_LIBS PLUGIN_DIR USER_JAVAH USER_SPECIFIED_JAVAH_TRUE USER_SPECIFIED_JAVAH_FALSE CLASSPATH_INCLUDES GCJ JIKES JIKESENCODING JIKESWARNINGS KJC ECJ JAVAC FOUND_GCJ_TRUE FOUND_GCJ_FALSE FOUND_JIKES_TRUE FOUND_JIKES_FALSE FOUND_ECJ_TRUE FOUND_ECJ_FALSE FOUND_JAVAC_TRUE FOUND_JAVAC_FALSE FOUND_KJC_TRUE FOUND_KJC_FALSE USER_CLASSLIB USER_SPECIFIED_CLASSLIB_TRUE USER_SPECIFIED_CLASSLIB_FALSE vm_classes MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT LIBDEBUG INIT_LOAD_LIBRARY ECJ_JAR JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION REMOVE MKDIR CP DATE FIND ZIP FASTJAR INSTALL_GLIBJ_ZIP_TRUE INSTALL_GLIBJ_ZIP_FALSE INSTALL_CLASS_FILES_TRUE INSTALL_CLASS_FILES_FALSE BUILD_CLASS_FILES_TRUE BUILD_CLASS_FILES_FALSE EXAMPLESDIR GJDOC CREATE_API_DOCS_TRUE CREATE_API_DOCS_FALSE JAY JAY_SKELETON REGEN_PARSERS_TRUE REGEN_PARSERS_FALSE USE_PREBUILT_GLIBJ_ZIP_TRUE USE_PREBUILT_GLIBJ_ZIP_FALSE PATH_TO_GLIBJ_ZIP USE_ESCHER_TRUE USE_ESCHER_FALSE PATH_TO_ESCHER ENABLE_LOCAL_SOCKETS_TRUE ENABLE_LOCAL_SOCKETS_FALSE DEFAULT_PREFS_PEER LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os JAVA_MAINTAINER_MODE_TRUE JAVA_MAINTAINER_MODE_FALSE GENINSRC_TRUE GENINSRC_FALSE multi_basedir LIBVERSION CLASSPATH_MODULE CLASSPATH_CONVENIENCE INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CREATE_COLLECTIONS_TRUE CREATE_COLLECTIONS_FALSE CREATE_JNI_LIBRARIES_TRUE CREATE_JNI_LIBRARIES_FALSE CREATE_CORE_JNI_LIBRARIES_TRUE CREATE_CORE_JNI_LIBRARIES_FALSE CREATE_GCONF_PEER_LIBRARIES_TRUE CREATE_GCONF_PEER_LIBRARIES_FALSE CREATE_GSTREAMER_PEER_LIBRARIES_TRUE CREATE_GSTREAMER_PEER_LIBRARIES_FALSE default_toolkit CREATE_XMLJ_LIBRARY_TRUE CREATE_XMLJ_LIBRARY_FALSE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP EGREP CREATE_ALSA_LIBRARIES_TRUE CREATE_ALSA_LIBRARIES_FALSE CREATE_DSSI_LIBRARIES_TRUE CREATE_DSSI_LIBRARIES_FALSE CREATE_GTK_PEER_LIBRARIES_TRUE CREATE_GTK_PEER_LIBRARIES_FALSE CREATE_QT_PEER_LIBRARIES_TRUE CREATE_QT_PEER_LIBRARIES_FALSE CREATE_PLUGIN_TRUE CREATE_PLUGIN_FALSE toolexeclibdir nativeexeclibdir glibjdir VM_BINARY CREATE_JNI_HEADERS_TRUE CREATE_JNI_HEADERS_FALSE CREATE_WRAPPERS_TRUE CREATE_WRAPPERS_FALSE LN_S LIBTOOL SED FGREP GREP LD DUMPBIN ac_ct_DUMPBIN NM AR ac_ct_AR RANLIB ac_ct_RANLIB lt_ECHO CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP PERL COLLECTIONS_PREFIX LIBMAGIC LIBICONV LTLIBICONV WARNING_CFLAGS STRICT_WARNING_CFLAGS ERROR_CFLAGS PKG_CONFIG XML_CFLAGS XML_LIBS XSLT_CFLAGS XSLT_LIBS X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS GTK_CFLAGS GTK_LIBS FREETYPE2_CFLAGS FREETYPE2_LIBS PANGOFT2_CFLAGS PANGOFT2_LIBS CAIRO_CFLAGS CAIRO_LIBS XTEST_LIBS GCONF_CFLAGS GCONF_LIBS GDK_CFLAGS GDK_LIBS GSTREAMER_CFLAGS GSTREAMER_LIBS GSTREAMER_BASE_CFLAGS GSTREAMER_BASE_LIBS GSTREAMER_PLUGINS_BASE_CFLAGS GSTREAMER_PLUGINS_BASE_LIBS GST_PLUGIN_LDFLAGS GSTREAMER_FILE_READER GSTREAMER_MIXER_PROVIDER QT_CFLAGS QT_LIBS MOC MOZILLA_CFLAGS MOZILLA_LIBS GLIB_CFLAGS GLIB_LIBS PLUGIN_DIR USER_JAVAH CLASSPATH_INCLUDES GCJ JIKES JIKESENCODING JIKESWARNINGS KJC ECJ JAVAC FOUND_GCJ_TRUE FOUND_GCJ_FALSE FOUND_JIKES_TRUE FOUND_JIKES_FALSE FOUND_ECJ_TRUE FOUND_ECJ_FALSE FOUND_JAVAC_TRUE FOUND_JAVAC_FALSE FOUND_KJC_TRUE FOUND_KJC_FALSE USER_CLASSLIB USER_SPECIFIED_CLASSLIB_TRUE USER_SPECIFIED_CLASSLIB_FALSE vm_classes MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT LIBDEBUG INIT_LOAD_LIBRARY ECJ_JAR JAVA_LANG_SYSTEM_EXPLICIT_INITIALIZATION REMOVE MKDIR CP DATE FIND ZIP FASTJAR INSTALL_GLIBJ_ZIP_TRUE INSTALL_GLIBJ_ZIP_FALSE INSTALL_CLASS_FILES_TRUE INSTALL_CLASS_FILES_FALSE BUILD_CLASS_FILES_TRUE BUILD_CLASS_FILES_FALSE EXAMPLESDIR GJDOC CREATE_API_DOCS_TRUE CREATE_API_DOCS_FALSE JAY JAY_SKELETON REGEN_PARSERS_TRUE REGEN_PARSERS_FALSE USE_PREBUILT_GLIBJ_ZIP_TRUE USE_PREBUILT_GLIBJ_ZIP_FALSE PATH_TO_GLIBJ_ZIP USE_ESCHER_TRUE USE_ESCHER_FALSE PATH_TO_ESCHER ENABLE_LOCAL_SOCKETS_TRUE ENABLE_LOCAL_SOCKETS_FALSE DEFAULT_PREFS_PEER LIBOBJS LTLIBOBJS'
ac_subst_files=''
# Initialize some variables set by options.
@@ -942,7 +942,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures GNU Classpath 0.95 to adapt to many kinds of systems.
+\`configure' configures GNU Classpath 0.96-pre to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1013,7 +1013,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of GNU Classpath 0.95:";;
+ short | recursive ) echo "Configuration of GNU Classpath 0.96-pre:";;
esac
cat <<\_ACEOF
@@ -1038,6 +1038,8 @@ Optional Features:
--disable-gconf-peer compile GConf native peers (disabled by
--disable-jni) default=yes
+ --enable-gstreamer-peer compile GStreamer native peers (disabled by
+ --disable-jni) default=no
--enable-Werror whether to compile C code with -Werror which turns
any compiler warning into a compilation failure
default=no
@@ -1227,7 +1229,7 @@ fi
test -n "$ac_init_help" && exit 0
if $ac_init_version; then
cat <<\_ACEOF
-GNU Classpath configure 0.95
+GNU Classpath configure 0.96-pre
generated by GNU Autoconf 2.59
Copyright (C) 2003 Free Software Foundation, Inc.
@@ -1241,7 +1243,7 @@ cat >&5 <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by GNU Classpath $as_me 0.95, which was
+It was created by GNU Classpath $as_me 0.96-pre, which was
generated by GNU Autoconf 2.59. Invocation command line was
$ $0 $@
@@ -2076,7 +2078,7 @@ fi
# Define the identity of the package.
PACKAGE='classpath'
- VERSION='0.95'
+ VERSION='0.96-pre'
cat >>confdefs.h <<_ACEOF
@@ -2406,6 +2408,36 @@ echo "$as_me: error: No --enable-gconf-peers (or --disable-gconf-peers) option;
{ (exit 1); exit 1; }; }
fi;
+# Check whether --enable-gstreamer-peer or --disable-gstreamer-peer was given.
+if test "${enable_gstreamer_peer+set}" = set; then
+ enableval="$enable_gstreamer_peer"
+ case "${enableval}" in
+ yes) COMPILE_GSTREAMER_PEER=yes ;;
+ no) COMPILE_GSTREAMER_PEER=no ;;
+ *) COMPILE_GSTREAMER_PEER=default ;;
+ esac
+else
+ COMPILE_GSTREAMER_PEER=default
+fi;
+
+
+if test "x${COMPILE_GSTREAMER_PEER}" = xyes; then
+ CREATE_GSTREAMER_PEER_LIBRARIES_TRUE=
+ CREATE_GSTREAMER_PEER_LIBRARIES_FALSE='#'
+else
+ CREATE_GSTREAMER_PEER_LIBRARIES_TRUE='#'
+ CREATE_GSTREAMER_PEER_LIBRARIES_FALSE=
+fi
+
+
+# Check whether --enable-gstreamer-peers or --disable-gstreamer-peers was given.
+if test "${enable_gstreamer_peers+set}" = set; then
+ enableval="$enable_gstreamer_peers"
+ { { echo "$as_me:$LINENO: error: No --enable-gstreamer-peers (or --disable-gstreamer-peers) option; you want --enable-gstreamer-peer" >&5
+echo "$as_me: error: No --enable-gstreamer-peers (or --disable-gstreamer-peers) option; you want --enable-gstreamer-peer" >&2;}
+ { (exit 1); exit 1; }; }
+fi;
+
# Check whether --enable-Werror or --disable-Werror was given.
if test "${enable_Werror+set}" = set; then
enableval="$enable_Werror"
@@ -4775,16 +4807,6 @@ fi;
-
-if test "x`basename $VM_BINARY`" = xcacao; then
- FOUND_CACAO_TRUE=
- FOUND_CACAO_FALSE='#'
-else
- FOUND_CACAO_TRUE='#'
- FOUND_CACAO_FALSE=
-fi
-
-
# Check whether --enable-regen-headers or --disable-regen-headers was given.
if test "${enable_regen_headers+set}" = set; then
enableval="$enable_regen_headers"
@@ -5680,13 +5702,13 @@ if test "${lt_cv_nm_interface+set}" = set; then
else
lt_cv_nm_interface="BSD nm"
echo "int some_variable = 0;" > conftest.$ac_ext
- (eval echo "\"\$as_me:5683: $ac_compile\"" >&5)
+ (eval echo "\"\$as_me:5705: $ac_compile\"" >&5)
(eval "$ac_compile" 2>conftest.err)
cat conftest.err >&5
- (eval echo "\"\$as_me:5686: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+ (eval echo "\"\$as_me:5708: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
(eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
cat conftest.err >&5
- (eval echo "\"\$as_me:5689: output\"" >&5)
+ (eval echo "\"\$as_me:5711: output\"" >&5)
cat conftest.out >&5
if $GREP 'External.*some_variable' conftest.out > /dev/null; then
lt_cv_nm_interface="MS dumpbin"
@@ -6730,7 +6752,7 @@ ia64-*-hpux*)
;;
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 6733 "configure"' > conftest.$ac_ext
+ echo '#line 6755 "configure"' > conftest.$ac_ext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
@@ -7362,11 +7384,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:7365: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:7387: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:7369: \$? = $ac_status" >&5
+ echo "$as_me:7391: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -7684,11 +7706,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:7687: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:7709: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:7691: \$? = $ac_status" >&5
+ echo "$as_me:7713: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -7789,11 +7811,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:7792: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:7814: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:7796: \$? = $ac_status" >&5
+ echo "$as_me:7818: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -7844,11 +7866,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:7847: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:7869: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:7851: \$? = $ac_status" >&5
+ echo "$as_me:7873: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -10696,7 +10718,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 10699 "configure"
+#line 10721 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -10796,7 +10818,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 10799 "configure"
+#line 10821 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -15193,11 +15215,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:15196: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:15218: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:15200: \$? = $ac_status" >&5
+ echo "$as_me:15222: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -15292,11 +15314,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:15295: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:15317: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:15299: \$? = $ac_status" >&5
+ echo "$as_me:15321: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -15344,11 +15366,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:15347: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:15369: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:15351: \$? = $ac_status" >&5
+ echo "$as_me:15373: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -17225,6 +17247,142 @@ fi
rm -f conftest*
+ echo "$as_me:$LINENO: checking for library containing inet_pton" >&5
+echo $ECHO_N "checking for library containing inet_pton... $ECHO_C" >&6
+if test "${ac_cv_search_inet_pton+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+ac_cv_search_inet_pton=no
+if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char inet_pton ();
+int
+main ()
+{
+inet_pton ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_search_inet_pton="none required"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+if test "$ac_cv_search_inet_pton" = no; then
+ for ac_lib in nsl; do
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ if test x$gcc_no_link = xyes; then
+ { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
+echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char inet_pton ();
+int
+main ()
+{
+inet_pton ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_search_inet_pton="-l$ac_lib"
+break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ done
+fi
+LIBS=$ac_func_search_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_search_inet_pton" >&5
+echo "${ECHO_T}$ac_cv_search_inet_pton" >&6
+if test "$ac_cv_search_inet_pton" != no; then
+ test "$ac_cv_search_inet_pton" = "none required" || LIBS="$ac_cv_search_inet_pton $LIBS"
+
+fi
+
@@ -21911,6 +22069,322 @@ echo "$as_me: error: Library requirements (gdk-2.0 >= 2.8) not met; consider adj
fi
fi
+ if test "x${COMPILE_GSTREAMER_PEER}" = xyes; then
+ GST_MAJORMINOR=0.10
+ GST_REQUIRED=0.10.10
+
+
+ succeeded=no
+
+ if test -z "$PKG_CONFIG"; then
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $PKG_CONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+ ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+
+if test -n "$PKG_CONFIG"; then
+ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+echo "${ECHO_T}$PKG_CONFIG" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ fi
+
+ if test "$PKG_CONFIG" = "no" ; then
+ echo "*** The pkg-config script could not be found. Make sure it is"
+ echo "*** in your path, or set the PKG_CONFIG environment variable"
+ echo "*** to the full path to pkg-config."
+ echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config."
+ else
+ PKG_CONFIG_MIN_VERSION=0.9.0
+ if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
+ echo "$as_me:$LINENO: checking for gstreamer-$GST_MAJORMINOR >= $GST_REQUIRED" >&5
+echo $ECHO_N "checking for gstreamer-$GST_MAJORMINOR >= $GST_REQUIRED... $ECHO_C" >&6
+
+ if $PKG_CONFIG --exists "gstreamer-$GST_MAJORMINOR >= $GST_REQUIRED" ; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ succeeded=yes
+
+ echo "$as_me:$LINENO: checking GSTREAMER_CFLAGS" >&5
+echo $ECHO_N "checking GSTREAMER_CFLAGS... $ECHO_C" >&6
+ GSTREAMER_CFLAGS=`$PKG_CONFIG --cflags "gstreamer-$GST_MAJORMINOR >= $GST_REQUIRED"`
+ echo "$as_me:$LINENO: result: $GSTREAMER_CFLAGS" >&5
+echo "${ECHO_T}$GSTREAMER_CFLAGS" >&6
+
+ echo "$as_me:$LINENO: checking GSTREAMER_LIBS" >&5
+echo $ECHO_N "checking GSTREAMER_LIBS... $ECHO_C" >&6
+ GSTREAMER_LIBS=`$PKG_CONFIG --libs "gstreamer-$GST_MAJORMINOR >= $GST_REQUIRED"`
+ echo "$as_me:$LINENO: result: $GSTREAMER_LIBS" >&5
+echo "${ECHO_T}$GSTREAMER_LIBS" >&6
+ else
+ GSTREAMER_CFLAGS=""
+ GSTREAMER_LIBS=""
+ ## If we have a custom action on failure, don't print errors, but
+ ## do set a variable so people can do so.
+ GSTREAMER_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gstreamer-$GST_MAJORMINOR >= $GST_REQUIRED"`
+ echo $GSTREAMER_PKG_ERRORS
+ fi
+
+
+
+ else
+ echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
+ echo "*** See http://www.freedesktop.org/software/pkgconfig"
+ fi
+ fi
+
+ if test $succeeded = yes; then
+ :
+ else
+ { { echo "$as_me:$LINENO: error: Library requirements (gstreamer-$GST_MAJORMINOR >= $GST_REQUIRED) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them." >&5
+echo "$as_me: error: Library requirements (gstreamer-$GST_MAJORMINOR >= $GST_REQUIRED) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them." >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+
+
+
+
+ succeeded=no
+
+ if test -z "$PKG_CONFIG"; then
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $PKG_CONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+ ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+
+if test -n "$PKG_CONFIG"; then
+ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+echo "${ECHO_T}$PKG_CONFIG" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ fi
+
+ if test "$PKG_CONFIG" = "no" ; then
+ echo "*** The pkg-config script could not be found. Make sure it is"
+ echo "*** in your path, or set the PKG_CONFIG environment variable"
+ echo "*** to the full path to pkg-config."
+ echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config."
+ else
+ PKG_CONFIG_MIN_VERSION=0.9.0
+ if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
+ echo "$as_me:$LINENO: checking for gstreamer-base-$GST_MAJORMINOR >= $GST_REQUIRED" >&5
+echo $ECHO_N "checking for gstreamer-base-$GST_MAJORMINOR >= $GST_REQUIRED... $ECHO_C" >&6
+
+ if $PKG_CONFIG --exists "gstreamer-base-$GST_MAJORMINOR >= $GST_REQUIRED" ; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ succeeded=yes
+
+ echo "$as_me:$LINENO: checking GSTREAMER_BASE_CFLAGS" >&5
+echo $ECHO_N "checking GSTREAMER_BASE_CFLAGS... $ECHO_C" >&6
+ GSTREAMER_BASE_CFLAGS=`$PKG_CONFIG --cflags "gstreamer-base-$GST_MAJORMINOR >= $GST_REQUIRED"`
+ echo "$as_me:$LINENO: result: $GSTREAMER_BASE_CFLAGS" >&5
+echo "${ECHO_T}$GSTREAMER_BASE_CFLAGS" >&6
+
+ echo "$as_me:$LINENO: checking GSTREAMER_BASE_LIBS" >&5
+echo $ECHO_N "checking GSTREAMER_BASE_LIBS... $ECHO_C" >&6
+ GSTREAMER_BASE_LIBS=`$PKG_CONFIG --libs "gstreamer-base-$GST_MAJORMINOR >= $GST_REQUIRED"`
+ echo "$as_me:$LINENO: result: $GSTREAMER_BASE_LIBS" >&5
+echo "${ECHO_T}$GSTREAMER_BASE_LIBS" >&6
+ else
+ GSTREAMER_BASE_CFLAGS=""
+ GSTREAMER_BASE_LIBS=""
+ ## If we have a custom action on failure, don't print errors, but
+ ## do set a variable so people can do so.
+ GSTREAMER_BASE_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gstreamer-base-$GST_MAJORMINOR >= $GST_REQUIRED"`
+ echo $GSTREAMER_BASE_PKG_ERRORS
+ fi
+
+
+
+ else
+ echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
+ echo "*** See http://www.freedesktop.org/software/pkgconfig"
+ fi
+ fi
+
+ if test $succeeded = yes; then
+ :
+ else
+ { { echo "$as_me:$LINENO: error: Library requirements (gstreamer-base-$GST_MAJORMINOR >= $GST_REQUIRED) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them." >&5
+echo "$as_me: error: Library requirements (gstreamer-base-$GST_MAJORMINOR >= $GST_REQUIRED) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them." >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+
+
+
+
+ succeeded=no
+
+ if test -z "$PKG_CONFIG"; then
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $PKG_CONFIG in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+ ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+
+if test -n "$PKG_CONFIG"; then
+ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+echo "${ECHO_T}$PKG_CONFIG" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ fi
+
+ if test "$PKG_CONFIG" = "no" ; then
+ echo "*** The pkg-config script could not be found. Make sure it is"
+ echo "*** in your path, or set the PKG_CONFIG environment variable"
+ echo "*** to the full path to pkg-config."
+ echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config."
+ else
+ PKG_CONFIG_MIN_VERSION=0.9.0
+ if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
+ echo "$as_me:$LINENO: checking for gstreamer-plugins-base-$GST_MAJORMINOR >= $GST_REQUIRED" >&5
+echo $ECHO_N "checking for gstreamer-plugins-base-$GST_MAJORMINOR >= $GST_REQUIRED... $ECHO_C" >&6
+
+ if $PKG_CONFIG --exists "gstreamer-plugins-base-$GST_MAJORMINOR >= $GST_REQUIRED" ; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ succeeded=yes
+
+ echo "$as_me:$LINENO: checking GSTREAMER_PLUGINS_BASE_CFLAGS" >&5
+echo $ECHO_N "checking GSTREAMER_PLUGINS_BASE_CFLAGS... $ECHO_C" >&6
+ GSTREAMER_PLUGINS_BASE_CFLAGS=`$PKG_CONFIG --cflags "gstreamer-plugins-base-$GST_MAJORMINOR >= $GST_REQUIRED"`
+ echo "$as_me:$LINENO: result: $GSTREAMER_PLUGINS_BASE_CFLAGS" >&5
+echo "${ECHO_T}$GSTREAMER_PLUGINS_BASE_CFLAGS" >&6
+
+ echo "$as_me:$LINENO: checking GSTREAMER_PLUGINS_BASE_LIBS" >&5
+echo $ECHO_N "checking GSTREAMER_PLUGINS_BASE_LIBS... $ECHO_C" >&6
+ GSTREAMER_PLUGINS_BASE_LIBS=`$PKG_CONFIG --libs "gstreamer-plugins-base-$GST_MAJORMINOR >= $GST_REQUIRED"`
+ echo "$as_me:$LINENO: result: $GSTREAMER_PLUGINS_BASE_LIBS" >&5
+echo "${ECHO_T}$GSTREAMER_PLUGINS_BASE_LIBS" >&6
+ else
+ GSTREAMER_PLUGINS_BASE_CFLAGS=""
+ GSTREAMER_PLUGINS_BASE_LIBS=""
+ ## If we have a custom action on failure, don't print errors, but
+ ## do set a variable so people can do so.
+ GSTREAMER_PLUGINS_BASE_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gstreamer-plugins-base-$GST_MAJORMINOR >= $GST_REQUIRED"`
+ echo $GSTREAMER_PLUGINS_BASE_PKG_ERRORS
+ fi
+
+
+
+ else
+ echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
+ echo "*** See http://www.freedesktop.org/software/pkgconfig"
+ fi
+ fi
+
+ if test $succeeded = yes; then
+ :
+ else
+ { { echo "$as_me:$LINENO: error: Library requirements (gstreamer-plugins-base-$GST_MAJORMINOR >= $GST_REQUIRED) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them." >&5
+echo "$as_me: error: Library requirements (gstreamer-plugins-base-$GST_MAJORMINOR >= $GST_REQUIRED) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them." >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+
+
+
+ GST_PLUGIN_LDFLAGS='-module -avoid-version -Wno-unused-parameter -no-undefined'
+
+
+ GSTREAMER_FILE_READER=gnu.javax.sound.sampled.gstreamer.io.GstAudioFileReader
+ GSTREAMER_MIXER_PROVIDER=gnu.javax.sound.sampled.gstreamer.GStreamerMixerProvider
+ fi
+
+
+
if test "x${COMPILE_QT_PEER}" = xyes; then
succeeded=no
@@ -22317,6 +22791,61 @@ sed 's/^/| /' conftest.$ac_ext >&5
echo "$as_me:$LINENO: result: no" >&5
echo "${ECHO_T}no" >&6
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ echo "$as_me:$LINENO: checking for MSG_WAITALL" >&5
+echo $ECHO_N "checking for MSG_WAITALL... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include
+int
+main ()
+{
+ int f = MSG_WAITALL;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_MSG_WAITALL 1
+_ACEOF
+
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+
fi
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
@@ -23122,6 +23651,7 @@ echo "$as_me: error: Library requirements (gtk+-2.0 >= 2.8 gthread-2.0 >= 2.2 gd
fi
fi
+if test "x${REGENERATE_JNI_HEADERS}" = xyes; then
# Check whether --with-javah or --without-javah was given.
@@ -23175,9 +23705,10 @@ fi
fi
else
- for javah_name in gcjh javah; do
- # Extract the first word of ""$javah_name"", so it can be a program name with args.
-set dummy "$javah_name"; ac_word=$2
+ for ac_prog in gjavah gcjh-wrapper-4.1 gcjh-4.1 gcjh javah
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
echo "$as_me:$LINENO: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_path_USER_JAVAH+set}" = set; then
@@ -23215,16 +23746,16 @@ else
echo "${ECHO_T}no" >&6
fi
- if test "x${USER_JAVAH}" != x; then
- break
- fi
- done
+ test -n "$USER_JAVAH" && break
+done
+
fi
-# if test "x${USER_JAVAH}" = x; then
-# echo "configure: cannot find javah" 1>&2
-# exit 1
-# fi
+ if test "x${USER_JAVAH}" = x; then
+ { { echo "$as_me:$LINENO: error: can not find javah" >&5
+echo "$as_me: error: can not find javah" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
else
@@ -23273,9 +23804,10 @@ fi
fi
else
- for javah_name in gcjh javah; do
- # Extract the first word of ""$javah_name"", so it can be a program name with args.
-set dummy "$javah_name"; ac_word=$2
+ for ac_prog in gjavah gcjh-wrapper-4.1 gcjh-4.1 gcjh javah
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
echo "$as_me:$LINENO: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_path_USER_JAVAH+set}" = set; then
@@ -23313,16 +23845,16 @@ else
echo "${ECHO_T}no" >&6
fi
- if test "x${USER_JAVAH}" != x; then
- break
- fi
- done
+ test -n "$USER_JAVAH" && break
+done
+
fi
-# if test "x${USER_JAVAH}" = x; then
-# echo "configure: cannot find javah" 1>&2
-# exit 1
-# fi
+ if test "x${USER_JAVAH}" = x; then
+ { { echo "$as_me:$LINENO: error: can not find javah" >&5
+echo "$as_me: error: can not find javah" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
fi
@@ -23374,9 +23906,10 @@ fi
fi
else
- for javah_name in gcjh javah; do
- # Extract the first word of ""$javah_name"", so it can be a program name with args.
-set dummy "$javah_name"; ac_word=$2
+ for ac_prog in gjavah gcjh-wrapper-4.1 gcjh-4.1 gcjh javah
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
echo "$as_me:$LINENO: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_path_USER_JAVAH+set}" = set; then
@@ -23414,32 +23947,23 @@ else
echo "${ECHO_T}no" >&6
fi
- if test "x${USER_JAVAH}" != x; then
- break
- fi
- done
+ test -n "$USER_JAVAH" && break
+done
+
fi
-# if test "x${USER_JAVAH}" = x; then
-# echo "configure: cannot find javah" 1>&2
-# exit 1
-# fi
+ if test "x${USER_JAVAH}" = x; then
+ { { echo "$as_me:$LINENO: error: can not find javah" >&5
+echo "$as_me: error: can not find javah" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
fi;
-if test "x${USER_JAVAH}" != x; then
- USER_SPECIFIED_JAVAH_TRUE=
- USER_SPECIFIED_JAVAH_FALSE='#'
-else
- USER_SPECIFIED_JAVAH_TRUE='#'
- USER_SPECIFIED_JAVAH_FALSE=
fi
-
-
-
CLASSPATH_INCLUDES="-I\$(top_srcdir)/include -I\$(top_srcdir)/native/jni/classpath -I\$(top_srcdir)/native/jni/native-lib"
@@ -24793,49 +25317,7 @@ if test "${with_javac+set}" = set; then
if test "x${withval}" != x && test "x${withval}" != xyes && test "x${withval}" != xno; then
if test "x${withval}" != x; then
- if test -f "${withval}"; then
- JAVAC="${withval}"
- else
- # Extract the first word of ""${withval}"", so it can be a program name with args.
-set dummy "${withval}"; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_JAVAC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $JAVAC in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_JAVAC="$JAVAC" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_JAVAC="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
- ;;
-esac
-fi
-JAVAC=$ac_cv_path_JAVAC
-
-if test -n "$JAVAC"; then
- echo "$as_me:$LINENO: result: $JAVAC" >&5
-echo "${ECHO_T}$JAVAC" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- fi
+ JAVAC="${withval}"
else
# Extract the first word of ""javac"", so it can be a program name with args.
set dummy "javac"; ac_word=$2
@@ -24882,49 +25364,7 @@ fi
if test "x${withval}" != xno; then
if test "x" != x; then
- if test -f ""; then
- JAVAC=""
- else
- # Extract the first word of """", so it can be a program name with args.
-set dummy ""; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_JAVAC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $JAVAC in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_JAVAC="$JAVAC" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_JAVAC="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
- ;;
-esac
-fi
-JAVAC=$ac_cv_path_JAVAC
-
-if test -n "$JAVAC"; then
- echo "$as_me:$LINENO: result: $JAVAC" >&5
-echo "${ECHO_T}$JAVAC" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- fi
+ JAVAC=""
else
# Extract the first word of ""javac"", so it can be a program name with args.
set dummy "javac"; ac_word=$2
@@ -24975,49 +25415,7 @@ else
if test "x" != x; then
- if test -f ""; then
- JAVAC=""
- else
- # Extract the first word of """", so it can be a program name with args.
-set dummy ""; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_JAVAC+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- case $JAVAC in
- [\\/]* | ?:[\\/]*)
- ac_cv_path_JAVAC="$JAVAC" # Let the user override the test with a path.
- ;;
- *)
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_JAVAC="$as_dir/$ac_word$ac_exec_ext"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
- ;;
-esac
-fi
-JAVAC=$ac_cv_path_JAVAC
-
-if test -n "$JAVAC"; then
- echo "$as_me:$LINENO: result: $JAVAC" >&5
-echo "${ECHO_T}$JAVAC" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- fi
+ JAVAC=""
else
# Extract the first word of ""javac"", so it can be a program name with args.
set dummy "javac"; ac_word=$2
@@ -29102,7 +29500,7 @@ fi
- ac_config_files="$ac_config_files Makefile doc/Makefile doc/api/Makefile external/Makefile external/sax/Makefile external/w3c_dom/Makefile external/relaxngDatatype/Makefile external/jsr166/Makefile gnu/classpath/Configuration.java gnu/java/security/Configuration.java include/Makefile native/Makefile native/fdlibm/Makefile native/jawt/Makefile native/jni/Makefile native/jni/classpath/Makefile native/jni/java-io/Makefile native/jni/java-lang/Makefile native/jni/java-net/Makefile native/jni/java-nio/Makefile native/jni/java-util/Makefile native/jni/gtk-peer/Makefile native/jni/gconf-peer/Makefile native/jni/qt-peer/Makefile native/jni/xmlj/Makefile native/jni/midi-alsa/Makefile native/jni/midi-dssi/Makefile native/jni/native-lib/Makefile native/plugin/Makefile resource/Makefile resource/META-INF/services/java.util.prefs.PreferencesFactory scripts/Makefile scripts/classpath.spec lib/Makefile lib/gen-classlist.sh lib/copy-vmresources.sh tools/Makefile examples/Makefile examples/Makefile.jawt examples/Makefile.java2d"
+ ac_config_files="$ac_config_files Makefile doc/Makefile doc/api/Makefile external/Makefile external/sax/Makefile external/w3c_dom/Makefile external/relaxngDatatype/Makefile external/jsr166/Makefile gnu/classpath/Configuration.java gnu/java/security/Configuration.java include/Makefile native/Makefile native/fdlibm/Makefile native/jawt/Makefile native/jni/Makefile native/jni/classpath/Makefile native/jni/java-io/Makefile native/jni/java-lang/Makefile native/jni/java-net/Makefile native/jni/java-nio/Makefile native/jni/java-util/Makefile native/jni/gtk-peer/Makefile native/jni/gconf-peer/Makefile native/jni/gstreamer-peer/Makefile native/jni/qt-peer/Makefile native/jni/xmlj/Makefile native/jni/midi-alsa/Makefile native/jni/midi-dssi/Makefile native/jni/native-lib/Makefile native/plugin/Makefile resource/Makefile resource/META-INF/services/java.util.prefs.PreferencesFactory resource/META-INF/services/javax.sound.sampled.spi.AudioFileReader resource/META-INF/services/javax.sound.sampled.spi.MixerProvider scripts/Makefile scripts/classpath.spec lib/Makefile lib/gen-classlist.sh lib/copy-vmresources.sh tools/Makefile examples/Makefile examples/Makefile.jawt examples/Makefile.java2d"
if test "x${COMPILE_WRAPPERS}" = xno
@@ -29272,6 +29670,13 @@ echo "$as_me: error: conditional \"CREATE_GCONF_PEER_LIBRARIES\" was never defin
Usually this means the macro was only invoked conditionally." >&2;}
{ (exit 1); exit 1; }; }
fi
+if test -z "${CREATE_GSTREAMER_PEER_LIBRARIES_TRUE}" && test -z "${CREATE_GSTREAMER_PEER_LIBRARIES_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"CREATE_GSTREAMER_PEER_LIBRARIES\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"CREATE_GSTREAMER_PEER_LIBRARIES\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
if test -z "${CREATE_XMLJ_LIBRARY_TRUE}" && test -z "${CREATE_XMLJ_LIBRARY_FALSE}"; then
{ { echo "$as_me:$LINENO: error: conditional \"CREATE_XMLJ_LIBRARY\" was never defined.
Usually this means the macro was only invoked conditionally." >&5
@@ -29328,13 +29733,6 @@ echo "$as_me: error: conditional \"CREATE_PLUGIN\" was never defined.
Usually this means the macro was only invoked conditionally." >&2;}
{ (exit 1); exit 1; }; }
fi
-if test -z "${FOUND_CACAO_TRUE}" && test -z "${FOUND_CACAO_FALSE}"; then
- { { echo "$as_me:$LINENO: error: conditional \"FOUND_CACAO\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"FOUND_CACAO\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
- { (exit 1); exit 1; }; }
-fi
if test -z "${CREATE_JNI_HEADERS_TRUE}" && test -z "${CREATE_JNI_HEADERS_FALSE}"; then
{ { echo "$as_me:$LINENO: error: conditional \"CREATE_JNI_HEADERS\" was never defined.
Usually this means the macro was only invoked conditionally." >&5
@@ -29370,13 +29768,6 @@ echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined.
Usually this means the macro was only invoked conditionally." >&2;}
{ (exit 1); exit 1; }; }
fi
-if test -z "${USER_SPECIFIED_JAVAH_TRUE}" && test -z "${USER_SPECIFIED_JAVAH_FALSE}"; then
- { { echo "$as_me:$LINENO: error: conditional \"USER_SPECIFIED_JAVAH\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"USER_SPECIFIED_JAVAH\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
- { (exit 1); exit 1; }; }
-fi
if test -z "${FOUND_GCJ_TRUE}" && test -z "${FOUND_GCJ_FALSE}"; then
{ { echo "$as_me:$LINENO: error: conditional \"FOUND_GCJ\" was never defined.
Usually this means the macro was only invoked conditionally." >&5
@@ -29781,7 +30172,7 @@ _ASBOX
} >&5
cat >&5 <<_CSEOF
-This file was extended by GNU Classpath $as_me 0.95, which was
+This file was extended by GNU Classpath $as_me 0.96-pre, which was
generated by GNU Autoconf 2.59. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -29847,7 +30238,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
-GNU Classpath config.status 0.95
+GNU Classpath config.status 0.96-pre
configured by $0, generated by GNU Autoconf 2.59,
with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
@@ -30343,6 +30734,7 @@ do
"native/jni/java-util/Makefile" ) CONFIG_FILES="$CONFIG_FILES native/jni/java-util/Makefile" ;;
"native/jni/gtk-peer/Makefile" ) CONFIG_FILES="$CONFIG_FILES native/jni/gtk-peer/Makefile" ;;
"native/jni/gconf-peer/Makefile" ) CONFIG_FILES="$CONFIG_FILES native/jni/gconf-peer/Makefile" ;;
+ "native/jni/gstreamer-peer/Makefile" ) CONFIG_FILES="$CONFIG_FILES native/jni/gstreamer-peer/Makefile" ;;
"native/jni/qt-peer/Makefile" ) CONFIG_FILES="$CONFIG_FILES native/jni/qt-peer/Makefile" ;;
"native/jni/xmlj/Makefile" ) CONFIG_FILES="$CONFIG_FILES native/jni/xmlj/Makefile" ;;
"native/jni/midi-alsa/Makefile" ) CONFIG_FILES="$CONFIG_FILES native/jni/midi-alsa/Makefile" ;;
@@ -30351,6 +30743,8 @@ do
"native/plugin/Makefile" ) CONFIG_FILES="$CONFIG_FILES native/plugin/Makefile" ;;
"resource/Makefile" ) CONFIG_FILES="$CONFIG_FILES resource/Makefile" ;;
"resource/META-INF/services/java.util.prefs.PreferencesFactory" ) CONFIG_FILES="$CONFIG_FILES resource/META-INF/services/java.util.prefs.PreferencesFactory" ;;
+ "resource/META-INF/services/javax.sound.sampled.spi.AudioFileReader" ) CONFIG_FILES="$CONFIG_FILES resource/META-INF/services/javax.sound.sampled.spi.AudioFileReader" ;;
+ "resource/META-INF/services/javax.sound.sampled.spi.MixerProvider" ) CONFIG_FILES="$CONFIG_FILES resource/META-INF/services/javax.sound.sampled.spi.MixerProvider" ;;
"scripts/Makefile" ) CONFIG_FILES="$CONFIG_FILES scripts/Makefile" ;;
"scripts/classpath.spec" ) CONFIG_FILES="$CONFIG_FILES scripts/classpath.spec" ;;
"lib/Makefile" ) CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;;
@@ -30529,6 +30923,8 @@ s,@CREATE_CORE_JNI_LIBRARIES_TRUE@,$CREATE_CORE_JNI_LIBRARIES_TRUE,;t t
s,@CREATE_CORE_JNI_LIBRARIES_FALSE@,$CREATE_CORE_JNI_LIBRARIES_FALSE,;t t
s,@CREATE_GCONF_PEER_LIBRARIES_TRUE@,$CREATE_GCONF_PEER_LIBRARIES_TRUE,;t t
s,@CREATE_GCONF_PEER_LIBRARIES_FALSE@,$CREATE_GCONF_PEER_LIBRARIES_FALSE,;t t
+s,@CREATE_GSTREAMER_PEER_LIBRARIES_TRUE@,$CREATE_GSTREAMER_PEER_LIBRARIES_TRUE,;t t
+s,@CREATE_GSTREAMER_PEER_LIBRARIES_FALSE@,$CREATE_GSTREAMER_PEER_LIBRARIES_FALSE,;t t
s,@default_toolkit@,$default_toolkit,;t t
s,@CREATE_XMLJ_LIBRARY_TRUE@,$CREATE_XMLJ_LIBRARY_TRUE,;t t
s,@CREATE_XMLJ_LIBRARY_FALSE@,$CREATE_XMLJ_LIBRARY_FALSE,;t t
@@ -30564,8 +30960,6 @@ s,@toolexeclibdir@,$toolexeclibdir,;t t
s,@nativeexeclibdir@,$nativeexeclibdir,;t t
s,@glibjdir@,$glibjdir,;t t
s,@VM_BINARY@,$VM_BINARY,;t t
-s,@FOUND_CACAO_TRUE@,$FOUND_CACAO_TRUE,;t t
-s,@FOUND_CACAO_FALSE@,$FOUND_CACAO_FALSE,;t t
s,@CREATE_JNI_HEADERS_TRUE@,$CREATE_JNI_HEADERS_TRUE,;t t
s,@CREATE_JNI_HEADERS_FALSE@,$CREATE_JNI_HEADERS_FALSE,;t t
s,@CREATE_WRAPPERS_TRUE@,$CREATE_WRAPPERS_TRUE,;t t
@@ -30621,6 +31015,15 @@ s,@GCONF_CFLAGS@,$GCONF_CFLAGS,;t t
s,@GCONF_LIBS@,$GCONF_LIBS,;t t
s,@GDK_CFLAGS@,$GDK_CFLAGS,;t t
s,@GDK_LIBS@,$GDK_LIBS,;t t
+s,@GSTREAMER_CFLAGS@,$GSTREAMER_CFLAGS,;t t
+s,@GSTREAMER_LIBS@,$GSTREAMER_LIBS,;t t
+s,@GSTREAMER_BASE_CFLAGS@,$GSTREAMER_BASE_CFLAGS,;t t
+s,@GSTREAMER_BASE_LIBS@,$GSTREAMER_BASE_LIBS,;t t
+s,@GSTREAMER_PLUGINS_BASE_CFLAGS@,$GSTREAMER_PLUGINS_BASE_CFLAGS,;t t
+s,@GSTREAMER_PLUGINS_BASE_LIBS@,$GSTREAMER_PLUGINS_BASE_LIBS,;t t
+s,@GST_PLUGIN_LDFLAGS@,$GST_PLUGIN_LDFLAGS,;t t
+s,@GSTREAMER_FILE_READER@,$GSTREAMER_FILE_READER,;t t
+s,@GSTREAMER_MIXER_PROVIDER@,$GSTREAMER_MIXER_PROVIDER,;t t
s,@QT_CFLAGS@,$QT_CFLAGS,;t t
s,@QT_LIBS@,$QT_LIBS,;t t
s,@MOC@,$MOC,;t t
@@ -30630,8 +31033,6 @@ s,@GLIB_CFLAGS@,$GLIB_CFLAGS,;t t
s,@GLIB_LIBS@,$GLIB_LIBS,;t t
s,@PLUGIN_DIR@,$PLUGIN_DIR,;t t
s,@USER_JAVAH@,$USER_JAVAH,;t t
-s,@USER_SPECIFIED_JAVAH_TRUE@,$USER_SPECIFIED_JAVAH_TRUE,;t t
-s,@USER_SPECIFIED_JAVAH_FALSE@,$USER_SPECIFIED_JAVAH_FALSE,;t t
s,@CLASSPATH_INCLUDES@,$CLASSPATH_INCLUDES,;t t
s,@GCJ@,$GCJ,;t t
s,@JIKES@,$JIKES,;t t
diff --git a/libjava/classpath/configure.ac b/libjava/classpath/configure.ac
index a751c7dd312..b6feecf5b68 100644
--- a/libjava/classpath/configure.ac
+++ b/libjava/classpath/configure.ac
@@ -6,7 +6,7 @@ dnl -----------------------------------------------------------
dnl define([AC_CACHE_LOAD], )dnl
dnl define([AC_CACHE_SAVE], )dnl
-AC_INIT([GNU Classpath],[0.95],[classpath@gnu.org],[classpath])
+AC_INIT([GNU Classpath],[0.96-pre],[classpath@gnu.org],[classpath])
AC_CONFIG_SRCDIR(java/lang/System.java)
dnl GCJ LOCAL
@@ -150,10 +150,28 @@ AC_ARG_ENABLE([gconf-peer],
AM_CONDITIONAL(CREATE_GCONF_PEER_LIBRARIES, test "x${COMPILE_GCONF_PEER}" = xyes)
dnl -----------------------------------------------------------
-dnl GTK native peer error checking
+dnl GConf native peer error checking
dnl -----------------------------------------------------------
AC_ARG_ENABLE([gconf-peers],,AC_MSG_ERROR([No --enable-gconf-peers (or --disable-gconf-peers) option; you want --enable-gconf-peer]))
+dnl ------------------------------------------------------------
+dnl GStreamer based sound provider backend (disabled by default)
+dnl ------------------------------------------------------------
+AC_ARG_ENABLE([gstreamer-peer],
+ [AS_HELP_STRING(--enable-gstreamer-peer,compile GStreamer native peers (disabled by --disable-jni) [default=no])],
+ [case "${enableval}" in
+ yes) COMPILE_GSTREAMER_PEER=yes ;;
+ no) COMPILE_GSTREAMER_PEER=no ;;
+ *) COMPILE_GSTREAMER_PEER=default ;;
+ esac],
+ [COMPILE_GSTREAMER_PEER=default])
+AM_CONDITIONAL(CREATE_GSTREAMER_PEER_LIBRARIES, test "x${COMPILE_GSTREAMER_PEER}" = xyes)
+
+dnl -----------------------------------------------------------
+dnl GStreamer native peer error checking
+dnl -----------------------------------------------------------
+AC_ARG_ENABLE([gstreamer-peers],,AC_MSG_ERROR([No --enable-gstreamer-peers (or --disable-gstreamer-peers) option; you want --enable-gstreamer-peer]))
+
dnl ------------------------------------------------------------
dnl Whether to compile with -Werror or not (disabled by default)
dnl ------------------------------------------------------------
@@ -315,7 +333,6 @@ AC_ARG_WITH([vm],
])
AC_SUBST(VM_BINARY)
-AM_CONDITIONAL(FOUND_CACAO, test "x`basename $VM_BINARY`" = xcacao)
dnl -----------------------------------------------------------
dnl Regenerate headers at build time (disabled by default)
@@ -416,6 +433,7 @@ if test "x${COMPILE_JNI}" = xyes; then
AC_EGREP_HEADER(u_int32_t, sys/types.h, AC_DEFINE(HAVE_BSD_INT32_DEFINED, 1, [Define to 1 if you have BSD u_int32_t]))
AC_EGREP_HEADER(u_int32_t, sys/config.h, AC_DEFINE(HAVE_BSD_INT32_DEFINED, 1, [Define to 1 if you have BSD u_int32_t]))
+ AC_SEARCH_LIBS([inet_pton],[nsl])
AC_CHECK_FUNCS([ftruncate fsync select \
gethostname socket strerror fork pipe execve open close \
lseek fstat read readv write writev htonl memset htons connect \
@@ -566,6 +584,39 @@ if test "x${COMPILE_JNI}" = xyes; then
fi
fi
+ dnl gstreamer-peer
+ if test "x${COMPILE_GSTREAMER_PEER}" = xyes; then
+ GST_MAJORMINOR=0.10
+ GST_REQUIRED=0.10.10
+
+ dnl gstreamer
+ PKG_CHECK_MODULES(GSTREAMER, gstreamer-$GST_MAJORMINOR >= $GST_REQUIRED)
+ AC_SUBST(GSTREAMER_CFLAGS)
+ AC_SUBST(GSTREAMER_LIBS)
+
+ dnl gstreamer-base
+ PKG_CHECK_MODULES(GSTREAMER_BASE,
+ gstreamer-base-$GST_MAJORMINOR >= $GST_REQUIRED)
+ AC_SUBST(GSTREAMER_BASE_CFLAGS)
+ AC_SUBST(GSTREAMER_BASE_LIBS)
+
+ dnl gstreamer-plugin-base
+ PKG_CHECK_MODULES(GSTREAMER_PLUGINS_BASE,
+ gstreamer-plugins-base-$GST_MAJORMINOR >= $GST_REQUIRED)
+ AC_SUBST(GSTREAMER_PLUGINS_BASE_CFLAGS)
+ AC_SUBST(GSTREAMER_PLUGINS_BASE_LIBS)
+
+ GST_PLUGIN_LDFLAGS='-module -avoid-version -Wno-unused-parameter -no-undefined'
+ AC_SUBST(GST_PLUGIN_LDFLAGS)
+
+ dnl set the gstreamer based file reader, writer and mixer
+ GSTREAMER_FILE_READER=gnu.javax.sound.sampled.gstreamer.io.GstAudioFileReader
+ GSTREAMER_MIXER_PROVIDER=gnu.javax.sound.sampled.gstreamer.GStreamerMixerProvider
+ fi
+ dnl add the gstreamer resources
+ AC_SUBST(GSTREAMER_FILE_READER)
+ AC_SUBST(GSTREAMER_MIXER_PROVIDER)
+
dnl Check for AWT related Qt4
if test "x${COMPILE_QT_PEER}" = xyes; then
PKG_CHECK_MODULES(QT, QtCore QtGui >= 4.1.0, HAVE_QT4="yes", HAVE_QT4="no")
@@ -637,6 +688,17 @@ if test "x${COMPILE_JNI}" = xyes; then
[Define this symbol if you have SO_NOSIGPIPE]) ],
[ AC_MSG_RESULT(no)]
)
+ dnl **********************************************************************
+ dnl Check for MSG_WAITALL
+ dnl **********************************************************************
+ AC_MSG_CHECKING(for MSG_WAITALL)
+ AC_TRY_COMPILE([#include ],
+ [ int f = MSG_WAITALL; ],
+ [ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_MSG_WAITALL, 1,
+ [Define this symbol if you have MSG_WAITALL]) ],
+ [ AC_MSG_RESULT(no)]
+ )
dnl Check for plugin support headers and libraries.
if test "x${COMPILE_PLUGIN}" = xyes; then
@@ -674,7 +736,9 @@ if test "x${COMPILE_JNI}" = xyes; then
fi
fi
-CLASSPATH_WITH_JAVAH
+if test "x${REGENERATE_JNI_HEADERS}" = xyes; then
+ CLASSPATH_WITH_JAVAH
+fi
dnl -----------------------------------------------------------
dnl Add the include files for the native abstraction layer.
@@ -944,6 +1008,7 @@ native/jni/java-nio/Makefile
native/jni/java-util/Makefile
native/jni/gtk-peer/Makefile
native/jni/gconf-peer/Makefile
+native/jni/gstreamer-peer/Makefile
native/jni/qt-peer/Makefile
native/jni/xmlj/Makefile
native/jni/midi-alsa/Makefile
@@ -952,6 +1017,8 @@ native/jni/native-lib/Makefile
native/plugin/Makefile
resource/Makefile
resource/META-INF/services/java.util.prefs.PreferencesFactory
+resource/META-INF/services/javax.sound.sampled.spi.AudioFileReader
+resource/META-INF/services/javax.sound.sampled.spi.MixerProvider
scripts/Makefile
scripts/classpath.spec
lib/Makefile
diff --git a/libjava/classpath/depcomp b/libjava/classpath/depcomp
index ca5ea4e1ef9..04701da536f 100755
--- a/libjava/classpath/depcomp
+++ b/libjava/classpath/depcomp
@@ -1,10 +1,9 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
-scriptversion=2006-10-15.18
+scriptversion=2005-07-09.11
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 Free Software
-# Foundation, Inc.
+# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -92,20 +91,7 @@ gcc3)
## gcc 3 implements dependency tracking that does exactly what
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
## it if -MD -MP comes after the -MF stuff. Hmm.
-## Unfortunately, FreeBSD c89 acceptance of flags depends upon
-## the command line argument order; so add the flags where they
-## appear in depend2.am. Note that the slowdown incurred here
-## affects only configure: in makefiles, %FASTDEP% shortcuts this.
- for arg
- do
- case $arg in
- -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
- *) set fnord "$@" "$arg" ;;
- esac
- shift # fnord
- shift # $arg
- done
- "$@"
+ "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
stat=$?
if test $stat -eq 0; then :
else
@@ -290,46 +276,6 @@ icc)
rm -f "$tmpdepfile"
;;
-hp2)
- # The "hp" stanza above does not work with aCC (C++) and HP's ia64
- # compilers, which have integrated preprocessors. The correct option
- # to use with these is +Maked; it writes dependencies to a file named
- # 'foo.d', which lands next to the object file, wherever that
- # happens to be.
- # Much of this is similar to the tru64 case; see comments there.
- dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
- test "x$dir" = "x$object" && dir=
- base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
- if test "$libtool" = yes; then
- tmpdepfile1=$dir$base.d
- tmpdepfile2=$dir.libs/$base.d
- "$@" -Wc,+Maked
- else
- tmpdepfile1=$dir$base.d
- tmpdepfile2=$dir$base.d
- "$@" +Maked
- fi
- stat=$?
- if test $stat -eq 0; then :
- else
- rm -f "$tmpdepfile1" "$tmpdepfile2"
- exit $stat
- fi
-
- for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
- do
- test -f "$tmpdepfile" && break
- done
- if test -f "$tmpdepfile"; then
- sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
- # Add `dependent.h:' lines.
- sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
- else
- echo "#dummy" > "$depfile"
- fi
- rm -f "$tmpdepfile" "$tmpdepfile2"
- ;;
-
tru64)
# The Tru64 compiler uses -MD to generate dependencies as a side
# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
@@ -342,13 +288,13 @@ tru64)
if test "$libtool" = yes; then
# With Tru64 cc, shared objects can also be used to make a
- # static library. This mechanism is used in libtool 1.4 series to
+ # static library. This mecanism is used in libtool 1.4 series to
# handle both shared and static libraries in a single compilation.
# With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
#
# With libtool 1.5 this exception was removed, and libtool now
# generates 2 separate objects for the 2 libraries. These two
- # compilations output dependencies in $dir.libs/$base.o.d and
+ # compilations output dependencies in in $dir.libs/$base.o.d and
# in $dir$base.o.d. We have to check for both files, because
# one of the two compilations can be disabled. We should prefer
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
diff --git a/libjava/classpath/doc/Makefile.in b/libjava/classpath/doc/Makefile.in
index e00e0aefd1e..f5af2231061 100644
--- a/libjava/classpath/doc/Makefile.in
+++ b/libjava/classpath/doc/Makefile.in
@@ -123,6 +123,8 @@ CREATE_DSSI_LIBRARIES_FALSE = @CREATE_DSSI_LIBRARIES_FALSE@
CREATE_DSSI_LIBRARIES_TRUE = @CREATE_DSSI_LIBRARIES_TRUE@
CREATE_GCONF_PEER_LIBRARIES_FALSE = @CREATE_GCONF_PEER_LIBRARIES_FALSE@
CREATE_GCONF_PEER_LIBRARIES_TRUE = @CREATE_GCONF_PEER_LIBRARIES_TRUE@
+CREATE_GSTREAMER_PEER_LIBRARIES_FALSE = @CREATE_GSTREAMER_PEER_LIBRARIES_FALSE@
+CREATE_GSTREAMER_PEER_LIBRARIES_TRUE = @CREATE_GSTREAMER_PEER_LIBRARIES_TRUE@
CREATE_GTK_PEER_LIBRARIES_FALSE = @CREATE_GTK_PEER_LIBRARIES_FALSE@
CREATE_GTK_PEER_LIBRARIES_TRUE = @CREATE_GTK_PEER_LIBRARIES_TRUE@
CREATE_JNI_HEADERS_FALSE = @CREATE_JNI_HEADERS_FALSE@
@@ -161,8 +163,6 @@ EXEEXT = @EXEEXT@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_CACAO_FALSE = @FOUND_CACAO_FALSE@
-FOUND_CACAO_TRUE = @FOUND_CACAO_TRUE@
FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
@@ -186,6 +186,15 @@ GJDOC = @GJDOC@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_LIBS = @GLIB_LIBS@
GREP = @GREP@
+GSTREAMER_BASE_CFLAGS = @GSTREAMER_BASE_CFLAGS@
+GSTREAMER_BASE_LIBS = @GSTREAMER_BASE_LIBS@
+GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
+GSTREAMER_FILE_READER = @GSTREAMER_FILE_READER@
+GSTREAMER_LIBS = @GSTREAMER_LIBS@
+GSTREAMER_MIXER_PROVIDER = @GSTREAMER_MIXER_PROVIDER@
+GSTREAMER_PLUGINS_BASE_CFLAGS = @GSTREAMER_PLUGINS_BASE_CFLAGS@
+GSTREAMER_PLUGINS_BASE_LIBS = @GSTREAMER_PLUGINS_BASE_LIBS@
+GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
GTK_CFLAGS = @GTK_CFLAGS@
GTK_LIBS = @GTK_LIBS@
INIT_LOAD_LIBRARY = @INIT_LOAD_LIBRARY@
@@ -258,8 +267,6 @@ USER_CLASSLIB = @USER_CLASSLIB@
USER_JAVAH = @USER_JAVAH@
USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
-USER_SPECIFIED_JAVAH_FALSE = @USER_SPECIFIED_JAVAH_FALSE@
-USER_SPECIFIED_JAVAH_TRUE = @USER_SPECIFIED_JAVAH_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
diff --git a/libjava/classpath/doc/api/Makefile.in b/libjava/classpath/doc/api/Makefile.in
index 937d0cc9f9c..128cd53d49c 100644
--- a/libjava/classpath/doc/api/Makefile.in
+++ b/libjava/classpath/doc/api/Makefile.in
@@ -100,6 +100,8 @@ CREATE_DSSI_LIBRARIES_FALSE = @CREATE_DSSI_LIBRARIES_FALSE@
CREATE_DSSI_LIBRARIES_TRUE = @CREATE_DSSI_LIBRARIES_TRUE@
CREATE_GCONF_PEER_LIBRARIES_FALSE = @CREATE_GCONF_PEER_LIBRARIES_FALSE@
CREATE_GCONF_PEER_LIBRARIES_TRUE = @CREATE_GCONF_PEER_LIBRARIES_TRUE@
+CREATE_GSTREAMER_PEER_LIBRARIES_FALSE = @CREATE_GSTREAMER_PEER_LIBRARIES_FALSE@
+CREATE_GSTREAMER_PEER_LIBRARIES_TRUE = @CREATE_GSTREAMER_PEER_LIBRARIES_TRUE@
CREATE_GTK_PEER_LIBRARIES_FALSE = @CREATE_GTK_PEER_LIBRARIES_FALSE@
CREATE_GTK_PEER_LIBRARIES_TRUE = @CREATE_GTK_PEER_LIBRARIES_TRUE@
CREATE_JNI_HEADERS_FALSE = @CREATE_JNI_HEADERS_FALSE@
@@ -138,8 +140,6 @@ EXEEXT = @EXEEXT@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_CACAO_FALSE = @FOUND_CACAO_FALSE@
-FOUND_CACAO_TRUE = @FOUND_CACAO_TRUE@
FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
@@ -163,6 +163,15 @@ GJDOC = @GJDOC@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_LIBS = @GLIB_LIBS@
GREP = @GREP@
+GSTREAMER_BASE_CFLAGS = @GSTREAMER_BASE_CFLAGS@
+GSTREAMER_BASE_LIBS = @GSTREAMER_BASE_LIBS@
+GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
+GSTREAMER_FILE_READER = @GSTREAMER_FILE_READER@
+GSTREAMER_LIBS = @GSTREAMER_LIBS@
+GSTREAMER_MIXER_PROVIDER = @GSTREAMER_MIXER_PROVIDER@
+GSTREAMER_PLUGINS_BASE_CFLAGS = @GSTREAMER_PLUGINS_BASE_CFLAGS@
+GSTREAMER_PLUGINS_BASE_LIBS = @GSTREAMER_PLUGINS_BASE_LIBS@
+GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
GTK_CFLAGS = @GTK_CFLAGS@
GTK_LIBS = @GTK_LIBS@
INIT_LOAD_LIBRARY = @INIT_LOAD_LIBRARY@
@@ -235,8 +244,6 @@ USER_CLASSLIB = @USER_CLASSLIB@
USER_JAVAH = @USER_JAVAH@
USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
-USER_SPECIFIED_JAVAH_FALSE = @USER_SPECIFIED_JAVAH_FALSE@
-USER_SPECIFIED_JAVAH_TRUE = @USER_SPECIFIED_JAVAH_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
diff --git a/libjava/classpath/doc/texinfo.tex b/libjava/classpath/doc/texinfo.tex
index 80836223506..ff2c40654b2 100644
--- a/libjava/classpath/doc/texinfo.tex
+++ b/libjava/classpath/doc/texinfo.tex
@@ -3,11 +3,11 @@
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
-\def\texinfoversion{2006-10-04.17}
+\def\texinfoversion{2005-07-05.19}
%
% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
-% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free
-% Software Foundation, Inc.
+% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software
+% Foundation, Inc.
%
% This texinfo.tex file is free software; you can redistribute it and/or
% modify it under the terms of the GNU General Public License as
@@ -153,22 +153,28 @@
\ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi
\ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi
-% Since the category of space is not known, we have to be careful.
-\chardef\spacecat = 10
-\def\spaceisspace{\catcode`\ =\spacecat}
-
-% sometimes characters are active, so we need control sequences.
+% In some macros, we cannot use the `\? notation---the left quote is
+% in some cases the escape char.
+\chardef\backChar = `\\
\chardef\colonChar = `\:
\chardef\commaChar = `\,
-\chardef\dashChar = `\-
\chardef\dotChar = `\.
\chardef\exclamChar= `\!
-\chardef\lquoteChar= `\`
+\chardef\plusChar = `\+
\chardef\questChar = `\?
-\chardef\rquoteChar= `\'
\chardef\semiChar = `\;
\chardef\underChar = `\_
+\chardef\spaceChar = `\ %
+\chardef\spacecat = 10
+\def\spaceisspace{\catcode\spaceChar=\spacecat}
+
+{% for help with debugging.
+ % example usage: \expandafter\show\activebackslash
+ \catcode`\! = 0 \catcode`\\ = \active
+ !global!def!activebackslash{\}
+}
+
% Ignore a token.
%
\def\gobble#1{}
@@ -305,13 +311,6 @@
% before the \shipout runs.
%
\indexdummies % don't expand commands in the output.
- \normalturnoffactive % \ in index entries must not stay \, e.g., if
- % the page break happens to be in the middle of an example.
- % We don't want .vr (or whatever) entries like this:
- % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}}
- % "\acronym" won't work when it's read back in;
- % it needs to be
- % {\code {{\tt \backslashcurfont }acronym}
\shipout\vbox{%
% Do this early so pdf references go to the beginning of the page.
\ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi
@@ -339,9 +338,9 @@
\pagebody{#1}%
\ifdim\ht\footlinebox > 0pt
% Only leave this space if the footline is nonempty.
- % (We lessened \vsize for it in \oddfootingyyy.)
+ % (We lessened \vsize for it in \oddfootingxxx.)
% The \baselineskip=24pt in plain's \makefootline has no effect.
- \vskip 24pt
+ \vskip 2\baselineskip
\unvbox\footlinebox
\fi
%
@@ -397,7 +396,7 @@
%
\def\parsearg{\parseargusing{}}
\def\parseargusing#1#2{%
- \def\argtorun{#2}%
+ \def\next{#2}%
\begingroup
\obeylines
\spaceisspace
@@ -428,7 +427,8 @@
\def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{%
\def\temp{#3}%
\ifx\temp\empty
- % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp:
+ % We cannot use \next here, as it holds the macro to run;
+ % thus we reuse \temp.
\let\temp\finishparsearg
\else
\let\temp\argcheckspaces
@@ -440,14 +440,14 @@
% If a _delimited_ argument is enclosed in braces, they get stripped; so
% to get _exactly_ the rest of the line, we had to prevent such situation.
% We prepended an \empty token at the very beginning and we expand it now,
-% just before passing the control to \argtorun.
+% just before passing the control to \next.
% (Similarily, we have to think about #3 of \argcheckspacesY above: it is
% either the null string, or it ends with \^^M---thus there is no danger
% that a pair of braces would be stripped.
%
% But first, we have to remove the trailing space token.
%
-\def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}}
+\def\finishparsearg#1 \ArgTerm{\expandafter\next\expandafter{#1}}
% \parseargdef\foo{...}
% is roughly equivalent to
@@ -1051,9 +1051,9 @@ where each line of input produces a line of output.}
% _ active, and distinguish by seeing if the current family is \slfam,
% which is what @var uses.
{
- \catcode`\_ = \active
+ \catcode\underChar = \active
\gdef\mathunderscore{%
- \catcode`\_=\active
+ \catcode\underChar=\active
\def_{\ifnum\fam=\slfam \_\else\sb\fi}%
}
}
@@ -1096,24 +1096,15 @@ where each line of input produces a line of output.}
\def\minus{$-$}
% @dots{} outputs an ellipsis using the current font.
-% We do .5em per period so that it has the same spacing in the cm
-% typewriter fonts as three actual period characters; on the other hand,
-% in other typewriter fonts three periods are wider than 1.5em. So do
-% whichever is larger.
+% We do .5em per period so that it has the same spacing in a typewriter
+% font as three actual period characters.
%
\def\dots{%
\leavevmode
- \setbox0=\hbox{...}% get width of three periods
- \ifdim\wd0 > 1.5em
- \dimen0 = \wd0
- \else
- \dimen0 = 1.5em
- \fi
- \hbox to \dimen0{%
- \hskip 0pt plus.25fil
- .\hskip 0pt plus1fil
- .\hskip 0pt plus1fil
- .\hskip 0pt plus.5fil
+ \hbox to 1.5em{%
+ \hskip 0pt plus 0.25fil
+ .\hfil.\hfil.%
+ \hskip 0pt plus 0.5fil
}%
}
@@ -1206,20 +1197,21 @@ where each line of input produces a line of output.}
\fi
\fi
-% PDF uses PostScript string constants for the names of xref targets,
+% PDF uses PostScript string constants for the names of xref targets, to
% for display in the outlines, and in other places. Thus, we have to
% double any backslashes. Otherwise, a name like "\node" will be
% interpreted as a newline (\n), followed by o, d, e. Not good.
% http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html
% (and related messages, the final outcome is that it is up to the TeX
% user to double the backslashes and otherwise make the string valid, so
-% that's what we do).
+% that's we do).
% double active backslashes.
%
{\catcode`\@=0 \catcode`\\=\active
+ @gdef@activebackslash{@catcode`@\=@active @otherbackslash}
@gdef@activebackslashdouble{%
- @catcode`@\=@active
+ @catcode@backChar=@active
@let\=@doublebackslash}
}
@@ -1251,17 +1243,21 @@ where each line of input produces a line of output.}
\def\backslashparens#1{%
\xdef#1{#1}% redefine it as its expansion; the definition is simply
% \lastnode when called from \setref -> \pdfmkdest.
- \HyPsdSubst{(}{\realbackslash(}{#1}%
- \HyPsdSubst{)}{\realbackslash)}{#1}%
+ \HyPsdSubst{(}{\backslashlparen}{#1}%
+ \HyPsdSubst{)}{\backslashrparen}{#1}%
+}
+
+{\catcode\exclamChar = 0 \catcode\backChar = \other
+ !gdef!backslashlparen{\(}%
+ !gdef!backslashrparen{\)}%
}
\ifpdf
\input pdfcolor
\pdfcatalog{/PageMode /UseOutlines}%
- % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).
\def\dopdfimage#1#2#3{%
- \def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
- \def\imageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
+ \def\imagewidth{#2}%
+ \def\imageheight{#3}%
% without \immediate, pdftex seg faults when the same image is
% included twice. (Version 3.14159-pre-1.0-unofficial-20010704.)
\ifnum\pdftexversion < 14
@@ -1269,8 +1265,8 @@ where each line of input produces a line of output.}
\else
\immediate\pdfximage
\fi
- \ifdim \wd0 >0pt width \imagewidth \fi
- \ifdim \wd2 >0pt height \imageheight \fi
+ \ifx\empty\imagewidth\else width \imagewidth \fi
+ \ifx\empty\imageheight\else height \imageheight \fi
\ifnum\pdftexversion<13
#1.pdf%
\else
@@ -1394,7 +1390,7 @@ where each line of input produces a line of output.}
% now, I guess we'll just let the pdf reader have its way.
\indexnofonts
\setupdatafile
- \catcode`\\=\active \otherbackslash
+ \activebackslash
\input \jobname.toc
\endgroup
}
@@ -1413,17 +1409,9 @@ where each line of input produces a line of output.}
\else
\let \startlink \pdfstartlink
\fi
- % make a live url in pdf output.
\def\pdfurl#1{%
\begingroup
- % it seems we really need yet another set of dummies; have not
- % tried to figure out what each command should do in the context
- % of @url. for now, just make @/ a no-op, that's the only one
- % people have actually reported a problem with.
- %
- \normalturnoffactive
- \def\@{@}%
- \let\/=\empty
+ \normalturnoffactive\def\@{@}%
\makevalueexpandable
\leavevmode\Red
\startlink attr{/Border [0 0 0]}%
@@ -1493,7 +1481,6 @@ where each line of input produces a line of output.}
% We don't need math for this font style.
\def\ttsl{\setfontstyle{ttsl}}
-
% Default leading.
\newdimen\textleading \textleading = 13.2pt
@@ -1515,13 +1502,11 @@ where each line of input produces a line of output.}
}%
}
-
% Set the font macro #1 to the font named #2, adding on the
% specified font prefix (normally `cm').
% #3 is the font's design size, #4 is a scale factor
\def\setfont#1#2#3#4{\font#1=\fontprefix#2#3 scaled #4}
-
% Use cm as the default font prefix.
% To specify the font prefix, you must define \fontprefix
% before you read in texinfo.tex.
@@ -1545,10 +1530,6 @@ where each line of input produces a line of output.}
\def\scshape{csc}
\def\scbshape{csc}
-% Definitions for a main text size of 11pt. This is the default in
-% Texinfo.
-%
-\def\definetextfontsizexi{
% Text fonts (11.2pt, magstep1).
\def\textnominalsize{11pt}
\edef\mainmagstep{\magstephalf}
@@ -1662,165 +1643,6 @@ where each line of input produces a line of output.}
\font\reducedi=cmmi10
\font\reducedsy=cmsy10
-% reset the current fonts
-\textfonts
-\rm
-} % end of 11pt text font size definitions
-
-
-% Definitions to make the main text be 10pt Computer Modern, with
-% section, chapter, etc., sizes following suit. This is for the GNU
-% Press printing of the Emacs 22 manual. Maybe other manuals in the
-% future. Used with @smallbook, which sets the leading to 12pt.
-%
-\def\definetextfontsizex{%
-% Text fonts (10pt).
-\def\textnominalsize{10pt}
-\edef\mainmagstep{1000}
-\setfont\textrm\rmshape{10}{\mainmagstep}
-\setfont\texttt\ttshape{10}{\mainmagstep}
-\setfont\textbf\bfshape{10}{\mainmagstep}
-\setfont\textit\itshape{10}{\mainmagstep}
-\setfont\textsl\slshape{10}{\mainmagstep}
-\setfont\textsf\sfshape{10}{\mainmagstep}
-\setfont\textsc\scshape{10}{\mainmagstep}
-\setfont\textttsl\ttslshape{10}{\mainmagstep}
-\font\texti=cmmi10 scaled \mainmagstep
-\font\textsy=cmsy10 scaled \mainmagstep
-
-% A few fonts for @defun names and args.
-\setfont\defbf\bfshape{10}{\magstephalf}
-\setfont\deftt\ttshape{10}{\magstephalf}
-\setfont\defttsl\ttslshape{10}{\magstephalf}
-\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
-
-% Fonts for indices, footnotes, small examples (9pt).
-\def\smallnominalsize{9pt}
-\setfont\smallrm\rmshape{9}{1000}
-\setfont\smalltt\ttshape{9}{1000}
-\setfont\smallbf\bfshape{10}{900}
-\setfont\smallit\itshape{9}{1000}
-\setfont\smallsl\slshape{9}{1000}
-\setfont\smallsf\sfshape{9}{1000}
-\setfont\smallsc\scshape{10}{900}
-\setfont\smallttsl\ttslshape{10}{900}
-\font\smalli=cmmi9
-\font\smallsy=cmsy9
-
-% Fonts for small examples (8pt).
-\def\smallernominalsize{8pt}
-\setfont\smallerrm\rmshape{8}{1000}
-\setfont\smallertt\ttshape{8}{1000}
-\setfont\smallerbf\bfshape{10}{800}
-\setfont\smallerit\itshape{8}{1000}
-\setfont\smallersl\slshape{8}{1000}
-\setfont\smallersf\sfshape{8}{1000}
-\setfont\smallersc\scshape{10}{800}
-\setfont\smallerttsl\ttslshape{10}{800}
-\font\smalleri=cmmi8
-\font\smallersy=cmsy8
-
-% Fonts for title page (20.4pt):
-\def\titlenominalsize{20pt}
-\setfont\titlerm\rmbshape{12}{\magstep3}
-\setfont\titleit\itbshape{10}{\magstep4}
-\setfont\titlesl\slbshape{10}{\magstep4}
-\setfont\titlett\ttbshape{12}{\magstep3}
-\setfont\titlettsl\ttslshape{10}{\magstep4}
-\setfont\titlesf\sfbshape{17}{\magstep1}
-\let\titlebf=\titlerm
-\setfont\titlesc\scbshape{10}{\magstep4}
-\font\titlei=cmmi12 scaled \magstep3
-\font\titlesy=cmsy10 scaled \magstep4
-\def\authorrm{\secrm}
-\def\authortt{\sectt}
-
-% Chapter fonts (14.4pt).
-\def\chapnominalsize{14pt}
-\setfont\chaprm\rmbshape{12}{\magstep1}
-\setfont\chapit\itbshape{10}{\magstep2}
-\setfont\chapsl\slbshape{10}{\magstep2}
-\setfont\chaptt\ttbshape{12}{\magstep1}
-\setfont\chapttsl\ttslshape{10}{\magstep2}
-\setfont\chapsf\sfbshape{12}{\magstep1}
-\let\chapbf\chaprm
-\setfont\chapsc\scbshape{10}{\magstep2}
-\font\chapi=cmmi12 scaled \magstep1
-\font\chapsy=cmsy10 scaled \magstep2
-
-% Section fonts (12pt).
-\def\secnominalsize{12pt}
-\setfont\secrm\rmbshape{12}{1000}
-\setfont\secit\itbshape{10}{\magstep1}
-\setfont\secsl\slbshape{10}{\magstep1}
-\setfont\sectt\ttbshape{12}{1000}
-\setfont\secttsl\ttslshape{10}{\magstep1}
-\setfont\secsf\sfbshape{12}{1000}
-\let\secbf\secrm
-\setfont\secsc\scbshape{10}{\magstep1}
-\font\seci=cmmi12
-\font\secsy=cmsy10 scaled \magstep1
-
-% Subsection fonts (10pt).
-\def\ssecnominalsize{10pt}
-\setfont\ssecrm\rmbshape{10}{1000}
-\setfont\ssecit\itbshape{10}{1000}
-\setfont\ssecsl\slbshape{10}{1000}
-\setfont\ssectt\ttbshape{10}{1000}
-\setfont\ssecttsl\ttslshape{10}{1000}
-\setfont\ssecsf\sfbshape{10}{1000}
-\let\ssecbf\ssecrm
-\setfont\ssecsc\scbshape{10}{1000}
-\font\sseci=cmmi10
-\font\ssecsy=cmsy10
-
-% Reduced fonts for @acro in text (9pt).
-\def\reducednominalsize{9pt}
-\setfont\reducedrm\rmshape{9}{1000}
-\setfont\reducedtt\ttshape{9}{1000}
-\setfont\reducedbf\bfshape{10}{900}
-\setfont\reducedit\itshape{9}{1000}
-\setfont\reducedsl\slshape{9}{1000}
-\setfont\reducedsf\sfshape{9}{1000}
-\setfont\reducedsc\scshape{10}{900}
-\setfont\reducedttsl\ttslshape{10}{900}
-\font\reducedi=cmmi9
-\font\reducedsy=cmsy9
-
-% reduce space between paragraphs
-\divide\parskip by 2
-
-% reset the current fonts
-\textfonts
-\rm
-} % end of 10pt text font size definitions
-
-
-% We provide the user-level command
-% @fonttextsize 10
-% (or 11) to redefine the text font size. pt is assumed.
-%
-\def\xword{10}
-\def\xiword{11}
-%
-\parseargdef\fonttextsize{%
- \def\textsizearg{#1}%
- \wlog{doing @fonttextsize \textsizearg}%
- %
- % Set \globaldefs so that documents can use this inside @tex, since
- % makeinfo 4.8 does not support it, but we need it nonetheless.
- %
- \begingroup \globaldefs=1
- \ifx\textsizearg\xword \definetextfontsizex
- \else \ifx\textsizearg\xiword \definetextfontsizexi
- \else
- \errhelp=\EMsimple
- \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'}
- \fi\fi
- \endgroup
-}
-
-
% In order for the font changes to affect most math symbols and letters,
% we have to define the \textfont of the standard families. Since
% texinfo doesn't allow for producing subscripts and superscripts except
@@ -1931,7 +1753,7 @@ where each line of input produces a line of output.}
% Set up the default fonts, so we can use them for creating boxes.
%
-\definetextfontsizexi
+\textfonts \rm
% Define these so they can be easily changed for other fonts.
\def\angleleft{$\langle$}
@@ -2056,14 +1878,11 @@ where each line of input produces a line of output.}
% and arrange explicitly to hyphenate at a dash.
% -- rms.
{
- \catcode`\-=\active \catcode`\_=\active
- \catcode`\'=\active \catcode`\`=\active
+ \catcode`\-=\active
+ \catcode`\_=\active
%
\global\def\code{\begingroup
- \catcode\rquoteChar=\active \catcode\lquoteChar=\active
- \let'\codequoteright \let`\codequoteleft
- %
- \catcode\dashChar=\active \catcode\underChar=\active
+ \catcode`\-=\active \catcode`\_=\active
\ifallowcodebreaks
\let-\codedash
\let_\codeunder
@@ -2309,10 +2128,6 @@ where each line of input produces a line of output.}
}$%
}
-% @textdegree - the normal degrees sign.
-%
-\def\textdegree{$^\circ$}
-
% Laurent Siebenmann reports \Orb undefined with:
% Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38
% so we'll define it if necessary.
@@ -2484,8 +2299,8 @@ where each line of input produces a line of output.}
%
% Leave some space for the footline. Hopefully ok to assume
% @evenfooting will not be used by itself.
- \global\advance\pageheight by -12pt
- \global\advance\vsize by -12pt
+ \global\advance\pageheight by -\baselineskip
+ \global\advance\vsize by -\baselineskip
}
\parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}}
@@ -3144,7 +2959,6 @@ where each line of input produces a line of output.}
\def\doignore#1{\begingroup
% Scan in ``verbatim'' mode:
- \obeylines
\catcode`\@ = \other
\catcode`\{ = \other
\catcode`\} = \other
@@ -3165,16 +2979,16 @@ where each line of input produces a line of output.}
\gdef\dodoignore#1{%
% #1 contains the command name as a string, e.g., `ifinfo'.
%
- % Define a command to find the next `@end #1'.
- \long\def\doignoretext##1^^M@end #1{%
- \doignoretextyyy##1^^M@#1\_STOP_}%
- %
+ % Define a command to find the next `@end #1', which must be on a line
+ % by itself.
+ \long\def\doignoretext##1^^M@end #1{\doignoretextyyy##1^^M@#1\_STOP_}%
% And this command to find another #1 command, at the beginning of a
% line. (Otherwise, we would consider a line `@c @ifset', for
% example, to count as an @ifset for nesting.)
\long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}%
%
% And now expand that command.
+ \obeylines %
\doignoretext ^^M%
}%
}
@@ -3204,12 +3018,7 @@ where each line of input produces a line of output.}
}
% Finish off ignored text.
-{ \obeylines%
- % Ignore anything after the last `@end #1'; this matters in verbatim
- % environments, where otherwise the newline after an ignored conditional
- % would result in a blank line in the output.
- \gdef\enddoignore#1^^M{\endgroup\ignorespaces}%
-}
+\def\enddoignore{\endgroup\ignorespaces}
% @set VAR sets the variable VAR to an empty value.
@@ -3412,39 +3221,12 @@ where each line of input produces a line of output.}
\escapechar = `\\ % use backslash in output files.
\def\@{@}% change to @@ when we switch to @ as escape char in index files.
\def\ {\realbackslash\space }%
- %
% Need these in case \tex is in effect and \{ is a \delimiter again.
% But can't use \lbracecmd and \rbracecmd because texindex assumes
% braces and backslashes are used only as delimiters.
\let\{ = \mylbrace
\let\} = \myrbrace
%
- % I don't entirely understand this, but when an index entry is
- % generated from a macro call, the \endinput which \scanmacro inserts
- % causes processing to be prematurely terminated. This is,
- % apparently, because \indexsorttmp is fully expanded, and \endinput
- % is an expandable command. The redefinition below makes \endinput
- % disappear altogether for that purpose -- although logging shows that
- % processing continues to some further point. On the other hand, it
- % seems \endinput does not hurt in the printed index arg, since that
- % is still getting written without apparent harm.
- %
- % Sample source (mac-idx3.tex, reported by Graham Percival to
- % help-texinfo, 22may06):
- % @macro funindex {WORD}
- % @findex xyz
- % @end macro
- % ...
- % @funindex commtest
- %
- % The above is not enough to reproduce the bug, but it gives the flavor.
- %
- % Sample whatsit resulting:
- % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}}
- %
- % So:
- \let\endinput = \empty
- %
% Do the redefinitions.
\commondummies
}
@@ -3462,7 +3244,6 @@ where each line of input produces a line of output.}
%
% Do the redefinitions.
\commondummies
- \otherbackslash
}
% Called from \indexdummies and \atdummies.
@@ -3536,7 +3317,6 @@ where each line of input produces a line of output.}
\definedummyword\point
\definedummyword\print
\definedummyword\result
- \definedummyword\textdegree
%
% We want to disable all macros so that they are not expanded by \write.
\macrolist
@@ -3550,62 +3330,63 @@ where each line of input produces a line of output.}
% \commondummiesnofonts: common to \commondummies and \indexnofonts.
%
-\def\commondummiesnofonts{%
- % Control letters and accents.
- \definedummyletter\!%
- \definedummyaccent\"%
- \definedummyaccent\'%
- \definedummyletter\*%
- \definedummyaccent\,%
- \definedummyletter\.%
- \definedummyletter\/%
- \definedummyletter\:%
- \definedummyaccent\=%
- \definedummyletter\?%
- \definedummyaccent\^%
- \definedummyaccent\`%
- \definedummyaccent\~%
- \definedummyword\u
- \definedummyword\v
- \definedummyword\H
- \definedummyword\dotaccent
- \definedummyword\ringaccent
- \definedummyword\tieaccent
- \definedummyword\ubaraccent
- \definedummyword\udotaccent
- \definedummyword\dotless
- %
- % Texinfo font commands.
- \definedummyword\b
- \definedummyword\i
- \definedummyword\r
- \definedummyword\sc
- \definedummyword\t
- %
- % Commands that take arguments.
- \definedummyword\acronym
- \definedummyword\cite
- \definedummyword\code
- \definedummyword\command
- \definedummyword\dfn
- \definedummyword\emph
- \definedummyword\env
- \definedummyword\file
- \definedummyword\kbd
- \definedummyword\key
- \definedummyword\math
- \definedummyword\option
- \definedummyword\pxref
- \definedummyword\ref
- \definedummyword\samp
- \definedummyword\strong
- \definedummyword\tie
- \definedummyword\uref
- \definedummyword\url
- \definedummyword\var
- \definedummyword\verb
- \definedummyword\w
- \definedummyword\xref
+% Better have this without active chars.
+{
+ \catcode`\~=\other
+ \gdef\commondummiesnofonts{%
+ % Control letters and accents.
+ \definedummyletter\!%
+ \definedummyaccent\"%
+ \definedummyaccent\'%
+ \definedummyletter\*%
+ \definedummyaccent\,%
+ \definedummyletter\.%
+ \definedummyletter\/%
+ \definedummyletter\:%
+ \definedummyaccent\=%
+ \definedummyletter\?%
+ \definedummyaccent\^%
+ \definedummyaccent\`%
+ \definedummyaccent\~%
+ \definedummyword\u
+ \definedummyword\v
+ \definedummyword\H
+ \definedummyword\dotaccent
+ \definedummyword\ringaccent
+ \definedummyword\tieaccent
+ \definedummyword\ubaraccent
+ \definedummyword\udotaccent
+ \definedummyword\dotless
+ %
+ % Texinfo font commands.
+ \definedummyword\b
+ \definedummyword\i
+ \definedummyword\r
+ \definedummyword\sc
+ \definedummyword\t
+ %
+ % Commands that take arguments.
+ \definedummyword\acronym
+ \definedummyword\cite
+ \definedummyword\code
+ \definedummyword\command
+ \definedummyword\dfn
+ \definedummyword\emph
+ \definedummyword\env
+ \definedummyword\file
+ \definedummyword\kbd
+ \definedummyword\key
+ \definedummyword\math
+ \definedummyword\option
+ \definedummyword\samp
+ \definedummyword\strong
+ \definedummyword\tie
+ \definedummyword\uref
+ \definedummyword\url
+ \definedummyword\var
+ \definedummyword\verb
+ \definedummyword\w
+ }
}
% \indexnofonts is used when outputting the strings to sort the index
@@ -3670,7 +3451,6 @@ where each line of input produces a line of output.}
\def\point{.}%
\def\print{-|}%
\def\result{=>}%
- \def\textdegree{degrees}%
%
% We need to get rid of all macros, leaving only the arguments (if present).
% Of course this is not nearly correct, but it is the best we can do for now.
@@ -4019,9 +3799,9 @@ where each line of input produces a line of output.}
\endgroup
}
-% Like plain.tex's \dotfill, except uses up at least 1 em.
+% Like \dotfill except takes at least 1 em.
\def\indexdotfill{\cleaders
- \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill}
+ \hbox{$\mathsurround=0pt \mkern1.5mu ${\it .}$ \mkern1.5mu$}\hskip 1em plus 1fill}
\def\primary #1{\line{#1\hfil}}
@@ -4595,17 +4375,14 @@ where each line of input produces a line of output.}
\ifx\temptype\Ynothingkeyword
\setbox0 = \hbox{}%
\def\toctype{unnchap}%
- \gdef\thischapternum{}%
\gdef\thischapter{#1}%
\else\ifx\temptype\Yomitfromtockeyword
\setbox0 = \hbox{}% contents like unnumbered, but no toc entry
\def\toctype{omit}%
- \gdef\thischapternum{}%
\gdef\thischapter{}%
\else\ifx\temptype\Yappendixkeyword
\setbox0 = \hbox{\putwordAppendix{} #3\enspace}%
\def\toctype{app}%
- \xdef\thischapternum{\appendixletter}%
% We don't substitute the actual chapter name into \thischapter
% because we don't want its macros evaluated now. And we don't
% use \thissection because that changes with each section.
@@ -4615,7 +4392,6 @@ where each line of input produces a line of output.}
\else
\setbox0 = \hbox{#3\enspace}%
\def\toctype{numchap}%
- \xdef\thischapternum{\the\chapno}%
\xdef\thischapter{\putwordChapter{} \the\chapno:
\noexpand\thischaptername}%
\fi\fi\fi
@@ -4727,21 +4503,13 @@ where each line of input produces a line of output.}
\gdef\thissection{#1}%
\fi\fi\fi
%
- % Write the toc entry (before \donoderef). See comments in \chapmacro.
+ % Write the toc entry (before \donoderef). See comments in \chfplain.
\writetocentry{\toctype\sectionlevel}{#1}{#4}%
%
% Write the node reference (= pdf destination for pdftex).
- % Again, see comments in \chapmacro.
+ % Again, see comments in \chfplain.
\donoderef{#3}%
%
- % Interline glue will be inserted when the vbox is completed.
- % That glue will be a valid breakpoint for the page, since it'll be
- % preceded by a whatsit (usually from the \donoderef, or from the
- % \writetocentry if there was no node). We don't want to allow that
- % break, since then the whatsits could end up on page n while the
- % section is on page n+1, thus toc/etc. are wrong. Debian bug 276000.
- \nobreak
- %
% Output the actual section heading.
\vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
\hangindent=\wd0 % zero if no section number
@@ -4804,7 +4572,7 @@ where each line of input produces a line of output.}
\edef\temp{%
\write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}%
\temp
- }%
+ }
\fi
\fi
%
@@ -5056,7 +4824,7 @@ where each line of input produces a line of output.}
{\tentt \global\dimen0 = 3em}% Width of the box.
\dimen2 = .55pt % Thickness of rules
% The text. (`r' is open on the right, `e' somewhat less so on the left.)
-\setbox0 = \hbox{\kern-.75pt \reducedsf error\kern-1.5pt}
+\setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt}
%
\setbox\errorbox=\hbox to \dimen0{\hfil
\hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
@@ -5279,10 +5047,11 @@ where each line of input produces a line of output.}
%
\maketwodispenvs {lisp}{example}{%
\nonfillstart
- \tt\quoteexpand
+ \tt
\let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
\gobble % eat return
}
+
% @display/@smalldisplay: same as @lisp except keep current font.
%
\makedispenv {display}{%
@@ -5410,34 +5179,6 @@ where each line of input produces a line of output.}
\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
%
\def\starttabbox{\setbox0=\hbox\bgroup}
-
-% Allow an option to not replace quotes with a regular directed right
-% quote/apostrophe (char 0x27), but instead use the undirected quote
-% from cmtt (char 0x0d). The undirected quote is ugly, so don't make it
-% the default, but it works for pasting with more pdf viewers (at least
-% evince), the lilypond developers report. xpdf does work with the
-% regular 0x27.
-%
-\def\codequoteright{%
- \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax
- '%
- \else
- \char'15
- \fi
-}
-%
-% and a similar option for the left quote char vs. a grave accent.
-% Modern fonts display ASCII 0x60 as a grave accent, so some people like
-% the code environments to do likewise.
-%
-\def\codequoteleft{%
- \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax
- `%
- \else
- \char'22
- \fi
-}
-%
\begingroup
\catcode`\^^I=\active
\gdef\tabexpand{%
@@ -5450,16 +5191,7 @@ where each line of input produces a line of output.}
\wd0=\dimen0 \box0 \starttabbox
}%
}
- \catcode`\'=\active
- \gdef\rquoteexpand{\catcode\rquoteChar=\active \def'{\codequoteright}}%
- %
- \catcode`\`=\active
- \gdef\lquoteexpand{\catcode\lquoteChar=\active \def`{\codequoteleft}}%
- %
- \gdef\quoteexpand{\rquoteexpand \lquoteexpand}%
\endgroup
-
-% start the verbatim environment.
\def\setupverbatim{%
\let\nonarrowing = t%
\nonfillstart
@@ -5468,7 +5200,6 @@ where each line of input produces a line of output.}
\def\par{\leavevmode\egroup\box0\endgraf}%
\catcode`\`=\active
\tabexpand
- \quoteexpand
% Respect line breaks,
% print special symbols as themselves, and
% make each space count
@@ -5918,6 +5649,7 @@ where each line of input produces a line of output.}
\spaceisspace
%
% Append \endinput to make sure that TeX does not see the ending newline.
+ %
% I've verified that it is necessary both for e-TeX and for ordinary TeX
% --kasal, 29nov03
\scantokens{#1\endinput}%
@@ -6184,11 +5916,11 @@ where each line of input produces a line of output.}
% {. If so it reads up to the closing }, if not, it reads the whole
% line. Whatever was read is then fed to the next control sequence
% as an argument (by \parsebrace or \parsearg)
-\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
+\def\braceorline#1{\let\next=#1\futurelet\nchar\braceorlinexxx}
\def\braceorlinexxx{%
\ifx\nchar\bgroup\else
\expandafter\parsearg
- \fi \macnamexxx}
+ \fi \next}
% @alias.
@@ -6353,7 +6085,7 @@ where each line of input produces a line of output.}
% If the user specified the print name (third arg) to the ref,
% print it instead of our usual "Figure 1.2".
\ifdim\wd0 = 0pt
- \refx{#1-snt}{}%
+ \refx{#1-snt}%
\else
\printedrefname
\fi
@@ -6783,7 +6515,7 @@ where each line of input produces a line of output.}
% above and below.
\nobreak\vskip\parskip
\nobreak
- \line\bgroup
+ \line\bgroup\hss
\fi
%
% Output the image.
@@ -6796,7 +6528,7 @@ where each line of input produces a line of output.}
\epsfbox{#1.eps}%
\fi
%
- \ifimagevmode \egroup \bigbreak \fi % space after the image
+ \ifimagevmode \hss \egroup \bigbreak \fi % space after the image
\endgroup}
@@ -6937,7 +6669,6 @@ where each line of input produces a line of output.}
% caption if specified, else the full caption if specified, else nothing.
{%
\atdummies
- %
% since we read the caption text in the macro world, where ^^M
% is turned into a normal character, we have to scan it back, so
% we don't write the literal three characters "^^M" into the aux file.
@@ -6958,9 +6689,8 @@ where each line of input produces a line of output.}
%
% place the captured inserts
%
- % BEWARE: when the floats start floating, we have to issue warning
- % whenever an insert appears inside a float which could possibly
- % float. --kasal, 26may04
+ % BEWARE: when the floats start float, we have to issue warning whenever an
+ % insert appears inside a float which could possibly float. --kasal, 26may04
%
\checkinserts
}
@@ -7387,13 +7117,6 @@ should work if nowhere else does.}
% \otherifyactive is called near the end of this file.
\def\otherifyactive{\catcode`+=\other \catcode`\_=\other}
-% Used sometimes to turn off (effectively) the active characters even after
-% parsing them.
-\def\turnoffactive{%
- \normalturnoffactive
- \otherbackslash
-}
-
\catcode`\@=0
% \backslashcurfont outputs one backslash character in current font,
@@ -7401,29 +7124,28 @@ should work if nowhere else does.}
\global\chardef\backslashcurfont=`\\
\global\let\rawbackslashxx=\backslashcurfont % let existing .??s files work
+% \rawbackslash defines an active \ to do \backslashcurfont.
+% \otherbackslash defines an active \ to be a literal `\' character with
+% catcode other.
+{\catcode`\\=\active
+ @gdef@rawbackslash{@let\=@backslashcurfont}
+ @gdef@otherbackslash{@let\=@realbackslash}
+}
+
% \realbackslash is an actual character `\' with catcode other, and
% \doublebackslash is two of them (for the pdf outlines).
{\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}}
-% In texinfo, backslash is an active character; it prints the backslash
-% in fixed width font.
+% \normalbackslash outputs one backslash in fixed width font.
+\def\normalbackslash{{\tt\backslashcurfont}}
+
\catcode`\\=\active
-@def@normalbackslash{{@tt@backslashcurfont}}
-% On startup, @fixbackslash assigns:
-% @let \ = @normalbackslash
-% \rawbackslash defines an active \ to do \backslashcurfont.
-% \otherbackslash defines an active \ to be a literal `\' character with
-% catcode other.
-@gdef@rawbackslash{@let\=@backslashcurfont}
-@gdef@otherbackslash{@let\=@realbackslash}
-
-% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
-% the literal character `\'.
-%
-@def@normalturnoffactive{%
- @let\=@normalbackslash
+% Used sometimes to turn off (effectively) the active characters
+% even after parsing them.
+@def@turnoffactive{%
@let"=@normaldoublequote
+ @let\=@realbackslash
@let~=@normaltilde
@let^=@normalcaret
@let_=@normalunderscore
@@ -7435,6 +7157,12 @@ should work if nowhere else does.}
@unsepspaces
}
+% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
+% the literal character `\'. (Thus, \ is not expandable when this is in
+% effect.)
+%
+@def@normalturnoffactive{@turnoffactive @let\=@normalbackslash}
+
% Make _ and + \other characters, temporarily.
% This is canceled by @fixbackslash.
@otherifyactive
@@ -7447,7 +7175,7 @@ should work if nowhere else does.}
@global@let\ = @eatinput
% On the other hand, perhaps the file did not have a `\input texinfo'. Then
-% the first `\' in the file would cause an error. This macro tries to fix
+% the first `\{ in the file would cause an error. This macro tries to fix
% that, assuming it is called before the first `\' could plausibly occur.
% Also turn back on active characters that might appear in the input
% file name, in case not using a pre-dumped format.
diff --git a/libjava/classpath/examples/Makefile.in b/libjava/classpath/examples/Makefile.in
index 731671c8a5f..996274c10bc 100644
--- a/libjava/classpath/examples/Makefile.in
+++ b/libjava/classpath/examples/Makefile.in
@@ -109,6 +109,8 @@ CREATE_DSSI_LIBRARIES_FALSE = @CREATE_DSSI_LIBRARIES_FALSE@
CREATE_DSSI_LIBRARIES_TRUE = @CREATE_DSSI_LIBRARIES_TRUE@
CREATE_GCONF_PEER_LIBRARIES_FALSE = @CREATE_GCONF_PEER_LIBRARIES_FALSE@
CREATE_GCONF_PEER_LIBRARIES_TRUE = @CREATE_GCONF_PEER_LIBRARIES_TRUE@
+CREATE_GSTREAMER_PEER_LIBRARIES_FALSE = @CREATE_GSTREAMER_PEER_LIBRARIES_FALSE@
+CREATE_GSTREAMER_PEER_LIBRARIES_TRUE = @CREATE_GSTREAMER_PEER_LIBRARIES_TRUE@
CREATE_GTK_PEER_LIBRARIES_FALSE = @CREATE_GTK_PEER_LIBRARIES_FALSE@
CREATE_GTK_PEER_LIBRARIES_TRUE = @CREATE_GTK_PEER_LIBRARIES_TRUE@
CREATE_JNI_HEADERS_FALSE = @CREATE_JNI_HEADERS_FALSE@
@@ -147,8 +149,6 @@ EXEEXT = @EXEEXT@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_CACAO_FALSE = @FOUND_CACAO_FALSE@
-FOUND_CACAO_TRUE = @FOUND_CACAO_TRUE@
FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
@@ -172,6 +172,15 @@ GJDOC = @GJDOC@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_LIBS = @GLIB_LIBS@
GREP = @GREP@
+GSTREAMER_BASE_CFLAGS = @GSTREAMER_BASE_CFLAGS@
+GSTREAMER_BASE_LIBS = @GSTREAMER_BASE_LIBS@
+GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
+GSTREAMER_FILE_READER = @GSTREAMER_FILE_READER@
+GSTREAMER_LIBS = @GSTREAMER_LIBS@
+GSTREAMER_MIXER_PROVIDER = @GSTREAMER_MIXER_PROVIDER@
+GSTREAMER_PLUGINS_BASE_CFLAGS = @GSTREAMER_PLUGINS_BASE_CFLAGS@
+GSTREAMER_PLUGINS_BASE_LIBS = @GSTREAMER_PLUGINS_BASE_LIBS@
+GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
GTK_CFLAGS = @GTK_CFLAGS@
GTK_LIBS = @GTK_LIBS@
INIT_LOAD_LIBRARY = @INIT_LOAD_LIBRARY@
@@ -244,8 +253,6 @@ USER_CLASSLIB = @USER_CLASSLIB@
USER_JAVAH = @USER_JAVAH@
USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
-USER_SPECIFIED_JAVAH_FALSE = @USER_SPECIFIED_JAVAH_FALSE@
-USER_SPECIFIED_JAVAH_TRUE = @USER_SPECIFIED_JAVAH_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
diff --git a/libjava/classpath/examples/gnu/classpath/examples/awt/HintingDemo.java b/libjava/classpath/examples/gnu/classpath/examples/awt/HintingDemo.java
index 75b6f67c92f..99c262b7172 100644
--- a/libjava/classpath/examples/gnu/classpath/examples/awt/HintingDemo.java
+++ b/libjava/classpath/examples/gnu/classpath/examples/awt/HintingDemo.java
@@ -20,17 +20,28 @@ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
package gnu.classpath.examples.awt;
-import gnu.java.awt.font.*;
-import gnu.java.awt.font.opentype.*;
+import gnu.java.awt.font.FontDelegate;
+import gnu.java.awt.font.GNUGlyphVector;
+import gnu.java.awt.font.opentype.OpenTypeFontFactory;
-import java.awt.*;
+import java.awt.BasicStroke;
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.GridLayout;
+import java.awt.Insets;
+import java.awt.RenderingHints;
+import java.awt.Shape;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
-import java.awt.font.*;
-import java.io.*;
-import java.nio.*;
-import java.nio.channels.*;
-import java.text.*;
+import java.awt.font.FontRenderContext;
+import java.io.File;
+import java.io.RandomAccessFile;
+import java.nio.ByteBuffer;
+import java.nio.channels.FileChannel;
+import java.text.StringCharacterIterator;
import javax.swing.BoxLayout;
import javax.swing.JCheckBox;
@@ -57,6 +68,9 @@ public class HintingDemo extends JFrame {
char character;
Options options;
boolean antiAlias;
+ boolean showGrid;
+ boolean showOriginal;
+ boolean showHinted;
int flags;
class StringViewer extends JPanel
@@ -133,24 +147,35 @@ public class HintingDemo extends JFrame {
Insets i = getInsets();
g2d.clearRect(i.left, i.top, getWidth() - i.left - i.right,
getHeight() - i.top - i.bottom);
- g2d.setColor(Color.GRAY);
- for (int x = 20; x < getWidth(); x += 20)
+ if (showGrid)
{
- g2d.drawLine(x, i.top, x, getHeight() - i.top - i.bottom);
+ g2d.setColor(Color.GRAY);
+ for (int x = 20; x < getWidth(); x += 20)
+ {
+ g2d.drawLine(x, i.top, x, getHeight() - i.top - i.bottom);
+ }
+ for (int y = 20; y < getHeight(); y += 20)
+ {
+ g2d.drawLine(i.left, y, getWidth() - i.left - i.right, y);
+ }
}
- for (int y = 20; y < getHeight(); y += 20)
- {
- g2d.drawLine(i.left, y, getWidth() - i.left - i.right, y);
- }
- g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
- RenderingHints.VALUE_ANTIALIAS_OFF);
+// g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
+// RenderingHints.VALUE_ANTIALIAS_ON);
g2d.translate(40, 300);
g2d.scale(20., 20.);
- g2d.setStroke(new BasicStroke((float) (1/20.)));
- g2d.setColor(Color.RED);
- g2d.draw(glyph.getOutline(0, 0, flags & ~FontDelegate.FLAG_FITTED));
- g2d.setColor(Color.GREEN);
- g2d.draw(glyph.getOutline(0, 0, flags | FontDelegate.FLAG_FITTED));
+ g2d.setStroke(new BasicStroke((float) (1/10.)));
+ if (showOriginal)
+ {
+ g2d.setColor(Color.RED);
+ g2d.draw(glyph.getOutline(0, 0,
+ flags & ~FontDelegate.FLAG_FITTED));
+ }
+ if (showHinted)
+ {
+ g2d.setColor(Color.RED);
+ g2d.draw(glyph.getOutline(0, 0,
+ flags | FontDelegate.FLAG_FITTED));
+ }
}
}
@@ -186,7 +211,7 @@ public class HintingDemo extends JFrame {
HintingDemo()
{
- File file = new File("/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType/DejaVuSerif.ttf");
+ File file = new File("/usr/share/fonts/truetype/freefont/FreeSans.ttf");
loadFont(file);
setLayout(new BorderLayout());
chooser = new Chooser();
@@ -244,6 +269,9 @@ public class HintingDemo extends JFrame {
implements ActionListener
{
JCheckBox antiAliasOpt;
+ JCheckBox showGridOpt;
+ JCheckBox showOriginalOpt;
+ JCheckBox showHintedOpt;
JCheckBox hintHorizontalOpt;
JCheckBox hintVerticalOpt;
JCheckBox hintEdgeOpt;
@@ -257,6 +285,18 @@ public class HintingDemo extends JFrame {
antiAliasOpt.setSelected(true);
antiAliasOpt.addActionListener(this);
add(antiAliasOpt);
+ showGridOpt = new JCheckBox("Show grid");
+ showGridOpt.setSelected(true);
+ showGridOpt.addActionListener(this);
+ add(showGridOpt);
+ showOriginalOpt = new JCheckBox("Show original");
+ showOriginalOpt.setSelected(true);
+ showOriginalOpt.addActionListener(this);
+ add(showOriginalOpt);
+ showHintedOpt = new JCheckBox("Show hinted");
+ showHintedOpt.setSelected(true);
+ showHintedOpt.addActionListener(this);
+ add(showHintedOpt);
hintHorizontalOpt = new JCheckBox("Hint horizontal");
hintHorizontalOpt.setSelected(true);
hintHorizontalOpt.addActionListener(this);
@@ -283,6 +323,9 @@ public class HintingDemo extends JFrame {
void sync()
{
antiAlias = antiAliasOpt.isSelected();
+ showGrid = showGridOpt.isSelected();
+ showOriginal = showOriginalOpt.isSelected();
+ showHinted = showHintedOpt.isSelected();
if (hintHorizontalOpt.isSelected())
flags &= ~FontDelegate.FLAG_NO_HINT_HORIZONTAL;
else
diff --git a/libjava/classpath/external/Makefile.in b/libjava/classpath/external/Makefile.in
index 416d390c263..4d7ccfdd3c6 100644
--- a/libjava/classpath/external/Makefile.in
+++ b/libjava/classpath/external/Makefile.in
@@ -107,6 +107,8 @@ CREATE_DSSI_LIBRARIES_FALSE = @CREATE_DSSI_LIBRARIES_FALSE@
CREATE_DSSI_LIBRARIES_TRUE = @CREATE_DSSI_LIBRARIES_TRUE@
CREATE_GCONF_PEER_LIBRARIES_FALSE = @CREATE_GCONF_PEER_LIBRARIES_FALSE@
CREATE_GCONF_PEER_LIBRARIES_TRUE = @CREATE_GCONF_PEER_LIBRARIES_TRUE@
+CREATE_GSTREAMER_PEER_LIBRARIES_FALSE = @CREATE_GSTREAMER_PEER_LIBRARIES_FALSE@
+CREATE_GSTREAMER_PEER_LIBRARIES_TRUE = @CREATE_GSTREAMER_PEER_LIBRARIES_TRUE@
CREATE_GTK_PEER_LIBRARIES_FALSE = @CREATE_GTK_PEER_LIBRARIES_FALSE@
CREATE_GTK_PEER_LIBRARIES_TRUE = @CREATE_GTK_PEER_LIBRARIES_TRUE@
CREATE_JNI_HEADERS_FALSE = @CREATE_JNI_HEADERS_FALSE@
@@ -145,8 +147,6 @@ EXEEXT = @EXEEXT@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_CACAO_FALSE = @FOUND_CACAO_FALSE@
-FOUND_CACAO_TRUE = @FOUND_CACAO_TRUE@
FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
@@ -170,6 +170,15 @@ GJDOC = @GJDOC@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_LIBS = @GLIB_LIBS@
GREP = @GREP@
+GSTREAMER_BASE_CFLAGS = @GSTREAMER_BASE_CFLAGS@
+GSTREAMER_BASE_LIBS = @GSTREAMER_BASE_LIBS@
+GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
+GSTREAMER_FILE_READER = @GSTREAMER_FILE_READER@
+GSTREAMER_LIBS = @GSTREAMER_LIBS@
+GSTREAMER_MIXER_PROVIDER = @GSTREAMER_MIXER_PROVIDER@
+GSTREAMER_PLUGINS_BASE_CFLAGS = @GSTREAMER_PLUGINS_BASE_CFLAGS@
+GSTREAMER_PLUGINS_BASE_LIBS = @GSTREAMER_PLUGINS_BASE_LIBS@
+GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
GTK_CFLAGS = @GTK_CFLAGS@
GTK_LIBS = @GTK_LIBS@
INIT_LOAD_LIBRARY = @INIT_LOAD_LIBRARY@
@@ -242,8 +251,6 @@ USER_CLASSLIB = @USER_CLASSLIB@
USER_JAVAH = @USER_JAVAH@
USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
-USER_SPECIFIED_JAVAH_FALSE = @USER_SPECIFIED_JAVAH_FALSE@
-USER_SPECIFIED_JAVAH_TRUE = @USER_SPECIFIED_JAVAH_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
diff --git a/libjava/classpath/external/jsr166/Makefile.in b/libjava/classpath/external/jsr166/Makefile.in
index 93f58bf2337..a942ff75724 100644
--- a/libjava/classpath/external/jsr166/Makefile.in
+++ b/libjava/classpath/external/jsr166/Makefile.in
@@ -98,6 +98,8 @@ CREATE_DSSI_LIBRARIES_FALSE = @CREATE_DSSI_LIBRARIES_FALSE@
CREATE_DSSI_LIBRARIES_TRUE = @CREATE_DSSI_LIBRARIES_TRUE@
CREATE_GCONF_PEER_LIBRARIES_FALSE = @CREATE_GCONF_PEER_LIBRARIES_FALSE@
CREATE_GCONF_PEER_LIBRARIES_TRUE = @CREATE_GCONF_PEER_LIBRARIES_TRUE@
+CREATE_GSTREAMER_PEER_LIBRARIES_FALSE = @CREATE_GSTREAMER_PEER_LIBRARIES_FALSE@
+CREATE_GSTREAMER_PEER_LIBRARIES_TRUE = @CREATE_GSTREAMER_PEER_LIBRARIES_TRUE@
CREATE_GTK_PEER_LIBRARIES_FALSE = @CREATE_GTK_PEER_LIBRARIES_FALSE@
CREATE_GTK_PEER_LIBRARIES_TRUE = @CREATE_GTK_PEER_LIBRARIES_TRUE@
CREATE_JNI_HEADERS_FALSE = @CREATE_JNI_HEADERS_FALSE@
@@ -136,8 +138,6 @@ EXEEXT = @EXEEXT@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_CACAO_FALSE = @FOUND_CACAO_FALSE@
-FOUND_CACAO_TRUE = @FOUND_CACAO_TRUE@
FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
@@ -161,6 +161,15 @@ GJDOC = @GJDOC@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_LIBS = @GLIB_LIBS@
GREP = @GREP@
+GSTREAMER_BASE_CFLAGS = @GSTREAMER_BASE_CFLAGS@
+GSTREAMER_BASE_LIBS = @GSTREAMER_BASE_LIBS@
+GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
+GSTREAMER_FILE_READER = @GSTREAMER_FILE_READER@
+GSTREAMER_LIBS = @GSTREAMER_LIBS@
+GSTREAMER_MIXER_PROVIDER = @GSTREAMER_MIXER_PROVIDER@
+GSTREAMER_PLUGINS_BASE_CFLAGS = @GSTREAMER_PLUGINS_BASE_CFLAGS@
+GSTREAMER_PLUGINS_BASE_LIBS = @GSTREAMER_PLUGINS_BASE_LIBS@
+GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
GTK_CFLAGS = @GTK_CFLAGS@
GTK_LIBS = @GTK_LIBS@
INIT_LOAD_LIBRARY = @INIT_LOAD_LIBRARY@
@@ -233,8 +242,6 @@ USER_CLASSLIB = @USER_CLASSLIB@
USER_JAVAH = @USER_JAVAH@
USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
-USER_SPECIFIED_JAVAH_FALSE = @USER_SPECIFIED_JAVAH_FALSE@
-USER_SPECIFIED_JAVAH_TRUE = @USER_SPECIFIED_JAVAH_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
diff --git a/libjava/classpath/external/relaxngDatatype/Makefile.in b/libjava/classpath/external/relaxngDatatype/Makefile.in
index 6d36ab3eb18..9a568158b7f 100644
--- a/libjava/classpath/external/relaxngDatatype/Makefile.in
+++ b/libjava/classpath/external/relaxngDatatype/Makefile.in
@@ -98,6 +98,8 @@ CREATE_DSSI_LIBRARIES_FALSE = @CREATE_DSSI_LIBRARIES_FALSE@
CREATE_DSSI_LIBRARIES_TRUE = @CREATE_DSSI_LIBRARIES_TRUE@
CREATE_GCONF_PEER_LIBRARIES_FALSE = @CREATE_GCONF_PEER_LIBRARIES_FALSE@
CREATE_GCONF_PEER_LIBRARIES_TRUE = @CREATE_GCONF_PEER_LIBRARIES_TRUE@
+CREATE_GSTREAMER_PEER_LIBRARIES_FALSE = @CREATE_GSTREAMER_PEER_LIBRARIES_FALSE@
+CREATE_GSTREAMER_PEER_LIBRARIES_TRUE = @CREATE_GSTREAMER_PEER_LIBRARIES_TRUE@
CREATE_GTK_PEER_LIBRARIES_FALSE = @CREATE_GTK_PEER_LIBRARIES_FALSE@
CREATE_GTK_PEER_LIBRARIES_TRUE = @CREATE_GTK_PEER_LIBRARIES_TRUE@
CREATE_JNI_HEADERS_FALSE = @CREATE_JNI_HEADERS_FALSE@
@@ -136,8 +138,6 @@ EXEEXT = @EXEEXT@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_CACAO_FALSE = @FOUND_CACAO_FALSE@
-FOUND_CACAO_TRUE = @FOUND_CACAO_TRUE@
FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
@@ -161,6 +161,15 @@ GJDOC = @GJDOC@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_LIBS = @GLIB_LIBS@
GREP = @GREP@
+GSTREAMER_BASE_CFLAGS = @GSTREAMER_BASE_CFLAGS@
+GSTREAMER_BASE_LIBS = @GSTREAMER_BASE_LIBS@
+GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
+GSTREAMER_FILE_READER = @GSTREAMER_FILE_READER@
+GSTREAMER_LIBS = @GSTREAMER_LIBS@
+GSTREAMER_MIXER_PROVIDER = @GSTREAMER_MIXER_PROVIDER@
+GSTREAMER_PLUGINS_BASE_CFLAGS = @GSTREAMER_PLUGINS_BASE_CFLAGS@
+GSTREAMER_PLUGINS_BASE_LIBS = @GSTREAMER_PLUGINS_BASE_LIBS@
+GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
GTK_CFLAGS = @GTK_CFLAGS@
GTK_LIBS = @GTK_LIBS@
INIT_LOAD_LIBRARY = @INIT_LOAD_LIBRARY@
@@ -233,8 +242,6 @@ USER_CLASSLIB = @USER_CLASSLIB@
USER_JAVAH = @USER_JAVAH@
USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
-USER_SPECIFIED_JAVAH_FALSE = @USER_SPECIFIED_JAVAH_FALSE@
-USER_SPECIFIED_JAVAH_TRUE = @USER_SPECIFIED_JAVAH_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
diff --git a/libjava/classpath/external/sax/Makefile.in b/libjava/classpath/external/sax/Makefile.in
index 3ddaa288b54..1b22402b15f 100644
--- a/libjava/classpath/external/sax/Makefile.in
+++ b/libjava/classpath/external/sax/Makefile.in
@@ -98,6 +98,8 @@ CREATE_DSSI_LIBRARIES_FALSE = @CREATE_DSSI_LIBRARIES_FALSE@
CREATE_DSSI_LIBRARIES_TRUE = @CREATE_DSSI_LIBRARIES_TRUE@
CREATE_GCONF_PEER_LIBRARIES_FALSE = @CREATE_GCONF_PEER_LIBRARIES_FALSE@
CREATE_GCONF_PEER_LIBRARIES_TRUE = @CREATE_GCONF_PEER_LIBRARIES_TRUE@
+CREATE_GSTREAMER_PEER_LIBRARIES_FALSE = @CREATE_GSTREAMER_PEER_LIBRARIES_FALSE@
+CREATE_GSTREAMER_PEER_LIBRARIES_TRUE = @CREATE_GSTREAMER_PEER_LIBRARIES_TRUE@
CREATE_GTK_PEER_LIBRARIES_FALSE = @CREATE_GTK_PEER_LIBRARIES_FALSE@
CREATE_GTK_PEER_LIBRARIES_TRUE = @CREATE_GTK_PEER_LIBRARIES_TRUE@
CREATE_JNI_HEADERS_FALSE = @CREATE_JNI_HEADERS_FALSE@
@@ -136,8 +138,6 @@ EXEEXT = @EXEEXT@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_CACAO_FALSE = @FOUND_CACAO_FALSE@
-FOUND_CACAO_TRUE = @FOUND_CACAO_TRUE@
FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
@@ -161,6 +161,15 @@ GJDOC = @GJDOC@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_LIBS = @GLIB_LIBS@
GREP = @GREP@
+GSTREAMER_BASE_CFLAGS = @GSTREAMER_BASE_CFLAGS@
+GSTREAMER_BASE_LIBS = @GSTREAMER_BASE_LIBS@
+GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
+GSTREAMER_FILE_READER = @GSTREAMER_FILE_READER@
+GSTREAMER_LIBS = @GSTREAMER_LIBS@
+GSTREAMER_MIXER_PROVIDER = @GSTREAMER_MIXER_PROVIDER@
+GSTREAMER_PLUGINS_BASE_CFLAGS = @GSTREAMER_PLUGINS_BASE_CFLAGS@
+GSTREAMER_PLUGINS_BASE_LIBS = @GSTREAMER_PLUGINS_BASE_LIBS@
+GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
GTK_CFLAGS = @GTK_CFLAGS@
GTK_LIBS = @GTK_LIBS@
INIT_LOAD_LIBRARY = @INIT_LOAD_LIBRARY@
@@ -233,8 +242,6 @@ USER_CLASSLIB = @USER_CLASSLIB@
USER_JAVAH = @USER_JAVAH@
USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
-USER_SPECIFIED_JAVAH_FALSE = @USER_SPECIFIED_JAVAH_FALSE@
-USER_SPECIFIED_JAVAH_TRUE = @USER_SPECIFIED_JAVAH_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
diff --git a/libjava/classpath/external/w3c_dom/Makefile.in b/libjava/classpath/external/w3c_dom/Makefile.in
index ae8905f509b..d553a7b305e 100644
--- a/libjava/classpath/external/w3c_dom/Makefile.in
+++ b/libjava/classpath/external/w3c_dom/Makefile.in
@@ -98,6 +98,8 @@ CREATE_DSSI_LIBRARIES_FALSE = @CREATE_DSSI_LIBRARIES_FALSE@
CREATE_DSSI_LIBRARIES_TRUE = @CREATE_DSSI_LIBRARIES_TRUE@
CREATE_GCONF_PEER_LIBRARIES_FALSE = @CREATE_GCONF_PEER_LIBRARIES_FALSE@
CREATE_GCONF_PEER_LIBRARIES_TRUE = @CREATE_GCONF_PEER_LIBRARIES_TRUE@
+CREATE_GSTREAMER_PEER_LIBRARIES_FALSE = @CREATE_GSTREAMER_PEER_LIBRARIES_FALSE@
+CREATE_GSTREAMER_PEER_LIBRARIES_TRUE = @CREATE_GSTREAMER_PEER_LIBRARIES_TRUE@
CREATE_GTK_PEER_LIBRARIES_FALSE = @CREATE_GTK_PEER_LIBRARIES_FALSE@
CREATE_GTK_PEER_LIBRARIES_TRUE = @CREATE_GTK_PEER_LIBRARIES_TRUE@
CREATE_JNI_HEADERS_FALSE = @CREATE_JNI_HEADERS_FALSE@
@@ -136,8 +138,6 @@ EXEEXT = @EXEEXT@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_CACAO_FALSE = @FOUND_CACAO_FALSE@
-FOUND_CACAO_TRUE = @FOUND_CACAO_TRUE@
FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
@@ -161,6 +161,15 @@ GJDOC = @GJDOC@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_LIBS = @GLIB_LIBS@
GREP = @GREP@
+GSTREAMER_BASE_CFLAGS = @GSTREAMER_BASE_CFLAGS@
+GSTREAMER_BASE_LIBS = @GSTREAMER_BASE_LIBS@
+GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
+GSTREAMER_FILE_READER = @GSTREAMER_FILE_READER@
+GSTREAMER_LIBS = @GSTREAMER_LIBS@
+GSTREAMER_MIXER_PROVIDER = @GSTREAMER_MIXER_PROVIDER@
+GSTREAMER_PLUGINS_BASE_CFLAGS = @GSTREAMER_PLUGINS_BASE_CFLAGS@
+GSTREAMER_PLUGINS_BASE_LIBS = @GSTREAMER_PLUGINS_BASE_LIBS@
+GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
GTK_CFLAGS = @GTK_CFLAGS@
GTK_LIBS = @GTK_LIBS@
INIT_LOAD_LIBRARY = @INIT_LOAD_LIBRARY@
@@ -233,8 +242,6 @@ USER_CLASSLIB = @USER_CLASSLIB@
USER_JAVAH = @USER_JAVAH@
USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
-USER_SPECIFIED_JAVAH_FALSE = @USER_SPECIFIED_JAVAH_FALSE@
-USER_SPECIFIED_JAVAH_TRUE = @USER_SPECIFIED_JAVAH_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
diff --git a/libjava/classpath/gnu/classpath/jdwp/processor/ArrayReferenceCommandSet.java b/libjava/classpath/gnu/classpath/jdwp/processor/ArrayReferenceCommandSet.java
index 0da0154d9d2..5f579050aa3 100644
--- a/libjava/classpath/gnu/classpath/jdwp/processor/ArrayReferenceCommandSet.java
+++ b/libjava/classpath/gnu/classpath/jdwp/processor/ArrayReferenceCommandSet.java
@@ -1,6 +1,6 @@
/* ArrayReferenceCommandSet.java -- class to implement the Array
Reference Command Set
- Copyright (C) 2005, 2007 Free Software Foundation
+ Copyright (C) 2005 Free Software Foundation
This file is part of GNU Classpath.
diff --git a/libjava/classpath/gnu/java/awt/font/FontDelegate.java b/libjava/classpath/gnu/java/awt/font/FontDelegate.java
index 030f9d3bca5..a7787330984 100644
--- a/libjava/classpath/gnu/java/awt/font/FontDelegate.java
+++ b/libjava/classpath/gnu/java/awt/font/FontDelegate.java
@@ -115,8 +115,16 @@ public interface FontDelegate
* Returns the number of glyphs in this font face.
*/
public int getNumGlyphs();
-
-
+
+ /**
+ * Returns the glyph code for the specified character.
+ *
+ * @param c the character to map
+ *
+ * @return the glyph code
+ */
+ public int getGlyphIndex(int c);
+
/**
* Returns the index of the glyph which gets displayed if the font
* cannot map a Unicode code point to a glyph. Many fonts show this
diff --git a/libjava/classpath/gnu/java/awt/font/opentype/OpenTypeFont.java b/libjava/classpath/gnu/java/awt/font/opentype/OpenTypeFont.java
index a270ce7d96d..6c2193b94ae 100644
--- a/libjava/classpath/gnu/java/awt/font/opentype/OpenTypeFont.java
+++ b/libjava/classpath/gnu/java/awt/font/opentype/OpenTypeFont.java
@@ -617,7 +617,17 @@ public final class OpenTypeFont
return new GNUGlyphVector(this, font, frc, glyphs);
}
-
+ /**
+ * Returns the glyph code for the specified character.
+ *
+ * @param c the character to map
+ *
+ * @return the glyph code
+ */
+ public int getGlyphIndex(int c)
+ {
+ return getCharGlyphMap().getGlyph(c);
+ }
/**
* Determines the advance width for a glyph.
diff --git a/libjava/classpath/gnu/java/awt/java2d/AbstractGraphics2D.java b/libjava/classpath/gnu/java/awt/java2d/AbstractGraphics2D.java
index f6c5ff0cb3b..15ec90da1c0 100644
--- a/libjava/classpath/gnu/java/awt/java2d/AbstractGraphics2D.java
+++ b/libjava/classpath/gnu/java/awt/java2d/AbstractGraphics2D.java
@@ -51,6 +51,7 @@ import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Paint;
import java.awt.PaintContext;
+import java.awt.Point;
import java.awt.Polygon;
import java.awt.Rectangle;
import java.awt.RenderingHints;
@@ -75,10 +76,10 @@ import java.awt.image.DataBuffer;
import java.awt.image.ImageObserver;
import java.awt.image.Raster;
import java.awt.image.RenderedImage;
+import java.awt.image.SampleModel;
import java.awt.image.WritableRaster;
import java.awt.image.renderable.RenderableImage;
import java.text.AttributedCharacterIterator;
-import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
@@ -147,7 +148,7 @@ import java.util.Map;
*/
public abstract class AbstractGraphics2D
extends Graphics2D
- implements Cloneable
+ implements Cloneable, Pixelizer
{
/**
@@ -155,13 +156,6 @@ public abstract class AbstractGraphics2D
*/
private static final Font FONT = new Font("SansSerif", Font.PLAIN, 12);
- /**
- * Accuracy of the sampling in the anti-aliasing shape filler.
- * Lower values give more speed, while higher values give more quality.
- * It is advisable to choose powers of two.
- */
- private static final int AA_SAMPLING = 8;
-
/**
* Caches certain shapes to avoid massive creation of such Shapes in
* the various draw* and fill* methods.
@@ -226,17 +220,6 @@ public abstract class AbstractGraphics2D
*/
private WritableRaster destinationRaster;
- /**
- * Stores the alpha values for a scanline in the anti-aliasing shape
- * renderer.
- */
- private transient int[] alpha;
-
- /**
- * The edge table for the scanline conversion algorithms.
- */
- private transient ArrayList[] edgeTable;
-
/**
* Indicates if certain graphics primitives can be rendered in an optimized
* fashion. This will be the case if the following conditions are met:
@@ -931,8 +914,8 @@ public abstract class AbstractGraphics2D
{
// Initialize clip if not already present.
if (clip == null)
- clip = s;
-
+ setClip(s);
+
// This is so common, let's optimize this.
else if (clip instanceof Rectangle && s instanceof Rectangle)
{
@@ -1174,7 +1157,9 @@ public abstract class AbstractGraphics2D
{
if (isOptimized)
{
- rawDrawLine(x1, y1, x2, y2);
+ int tx = (int) transform.getTranslateX();
+ int ty = (int) transform.getTranslateY();
+ rawDrawLine(x1 + tx, y1 + ty, x2 + tx, y2 + ty);
}
else
{
@@ -1214,7 +1199,8 @@ public abstract class AbstractGraphics2D
{
if (isOptimized)
{
- rawFillRect(x, y, width, height);
+ rawFillRect(x + (int) transform.getTranslateX(),
+ y + (int) transform.getTranslateY(), width, height);
}
else
{
@@ -1352,8 +1338,16 @@ public abstract class AbstractGraphics2D
public void drawPolyline(int[] xPoints, int[] yPoints, int npoints)
{
- // FIXME: Implement this.
- throw new UnsupportedOperationException("Not yet implemented");
+ ShapeCache sc = getShapeCache();
+ if (sc.polyline == null)
+ sc.polyline = new GeneralPath();
+ GeneralPath p = sc.polyline;
+ p.reset();
+ if (npoints > 0)
+ p.moveTo(xPoints[0], yPoints[0]);
+ for (int i = 1; i < npoints; i++)
+ p.lineTo(xPoints[i], yPoints[i]);
+ fill(p);
}
/**
@@ -1364,6 +1358,7 @@ public abstract class AbstractGraphics2D
ShapeCache sc = getShapeCache();
if (sc.polygon == null)
sc.polygon = new Polygon();
+ sc.polygon.reset();
sc.polygon.xpoints = xPoints;
sc.polygon.ypoints = yPoints;
sc.polygon.npoints = npoints;
@@ -1378,6 +1373,7 @@ public abstract class AbstractGraphics2D
ShapeCache sc = getShapeCache();
if (sc.polygon == null)
sc.polygon = new Polygon();
+ sc.polygon.reset();
sc.polygon.xpoints = xPoints;
sc.polygon.ypoints = yPoints;
sc.polygon.npoints = npoints;
@@ -1397,7 +1393,10 @@ public abstract class AbstractGraphics2D
{
boolean ret;
if (isOptimized)
- ret = rawDrawImage(image, x, y, observer);
+ {
+ ret = rawDrawImage(image, x + (int) transform.getTranslateX(),
+ y + (int) transform.getTranslateY(), observer);
+ }
else
{
AffineTransform t = new AffineTransform();
@@ -1559,17 +1558,15 @@ public abstract class AbstractGraphics2D
if (isFont)
{
Object v = renderingHints.get(RenderingHints.KEY_TEXT_ANTIALIASING);
- // We default to antialiasing on for text as long as we have no
- // good hinting implemented.
- antialias = (v == RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
- //|| v == RenderingHints.VALUE_TEXT_ANTIALIAS_DEFAULT);
+ // We default to antialiasing for text rendering.
+ antialias = (v == RenderingHints.VALUE_TEXT_ANTIALIAS_ON
+ || v == RenderingHints.VALUE_TEXT_ANTIALIAS_DEFAULT);
}
else
{
Object v = renderingHints.get(RenderingHints.KEY_ANTIALIASING);
antialias = (v == RenderingHints.VALUE_ANTIALIAS_ON);
}
-
ScanlineConverter sc = getScanlineConverter();
int resolution = 0;
if (antialias)
@@ -1577,7 +1574,7 @@ public abstract class AbstractGraphics2D
// Adjust resolution according to rendering hints.
resolution = 2;
}
- sc.renderShape(this, s, clip, transform, resolution);
+ sc.renderShape(this, s, clip, transform, resolution, renderingHints);
}
/**
@@ -1609,12 +1606,20 @@ public abstract class AbstractGraphics2D
*/
protected void rawDrawLine(int x0, int y0, int x1, int y1)
{
- draw(new Line2D.Float(x0, y0, x1, y1));
+ ShapeCache sc = getShapeCache();
+ if (sc.line == null)
+ sc.line = new Line2D.Float();
+ sc.line.setLine(x0, y0, x1, y1);
+ draw(sc.line);
}
protected void rawDrawRect(int x, int y, int w, int h)
{
- draw(new Rectangle(x, y, w, h));
+ ShapeCache sc = getShapeCache();
+ if (sc.rect == null)
+ sc.rect = new Rectangle();
+ sc.rect.setBounds(x, y, w, h);
+ draw(sc.rect);
}
/**
@@ -1662,7 +1667,11 @@ public abstract class AbstractGraphics2D
*/
protected void rawFillRect(int x, int y, int w, int h)
{
- fill(new Rectangle(x, y, w, h));
+ ShapeCache sc = getShapeCache();
+ if (sc.rect == null)
+ sc.rect = new Rectangle();
+ sc.rect.setBounds(x, y, w, h);
+ fill(sc.rect);
}
/**
@@ -1718,10 +1727,38 @@ public abstract class AbstractGraphics2D
* @param x1 the right offset
* @param y the scanline
*/
- protected void fillScanline(int x0, int x1, int y)
+ public void renderScanline(int y, ScanlineCoverage c)
{
PaintContext pCtx = paintContext;
+ int x0 = c.getMinX();
+ int x1 = c.getMaxX();
Raster paintRaster = pCtx.getRaster(x0, y, x1 - x0, 1);
+
+ // Do the anti aliasing thing.
+ float coverageAlpha = 0;
+ float maxCoverage = c.getMaxCoverage();
+ ColorModel cm = pCtx.getColorModel();
+ DataBuffer db = paintRaster.getDataBuffer();
+ Point loc = new Point(paintRaster.getMinX(), paintRaster.getMinY());
+ SampleModel sm = paintRaster.getSampleModel();
+ WritableRaster writeRaster = Raster.createWritableRaster(sm, db, loc);
+ WritableRaster alphaRaster = cm.getAlphaRaster(writeRaster);
+ int pixel;
+ ScanlineCoverage.Iterator iter = c.iterate();
+ while (iter.hasNext())
+ {
+ ScanlineCoverage.Range range = iter.next();
+ coverageAlpha = range.getCoverage() / maxCoverage;
+ if (coverageAlpha < 1.0)
+ {
+ for (int x = range.getXPos(); x < range.getXPosEnd(); x++)
+ {
+ pixel = alphaRaster.getSample(x, y, 0);
+ pixel = (int) (pixel * coverageAlpha);
+ alphaRaster.setSample(x, y, 0, pixel);
+ }
+ }
+ }
ColorModel paintColorModel = pCtx.getColorModel();
CompositeContext cCtx = composite.createContext(paintColorModel,
getColorModel(),
@@ -1733,66 +1770,6 @@ public abstract class AbstractGraphics2D
}
- /**
- * Fills a horizontal line between x0 and x1 for anti aliased rendering.
- * the alpha array contains the deltas of the alpha values from one pixel
- * to the next.
- *
- * @param alpha the alpha values in the scanline
- * @param x0 the beginning of the scanline
- * @param yy the y coordinate of the line
- */
- private void fillScanlineAA(int[] alpha, int x0, int yy, int numPixels,
- PaintContext pCtx, int offs)
- {
- CompositeContext cCtx = composite.createContext(pCtx.getColorModel(),
- getColorModel(),
- renderingHints);
- Raster paintRaster = pCtx.getRaster(x0, yy, numPixels, 1);
- //System.err.println("paintColorModel: " + pCtx.getColorModel());
- WritableRaster aaRaster = paintRaster.createCompatibleWritableRaster();
- ColorModel cm = pCtx.getColorModel();
- double lastAlpha = 0.;
- int lastAlphaInt = 0;
-
- Object pixel = null;
- int[] comps = null;
- int x1 = x0 + numPixels;
- for (int x = x0; x < x1; x++)
- {
- int i = x - offs;
- if (alpha[i] != 0)
- {
- lastAlphaInt += alpha[i];
- lastAlpha = (double) lastAlphaInt / (double) AA_SAMPLING;
- alpha[i] = 0;
- }
- pixel = paintRaster.getDataElements(x - x0, 0, pixel);
- comps = cm.getComponents(pixel, comps, 0);
- if (cm.hasAlpha() && ! cm.isAlphaPremultiplied())
- comps[comps.length - 1] *= lastAlpha;
- else
- {
- int max;
- if (cm.hasAlpha())
- max = comps.length - 2;
- else
- max = comps.length - 1;
- for (int j = 0; j < max; j++)
- comps[j] *= lastAlpha;
- }
- pixel = cm.getDataElements(comps, 0, pixel);
- aaRaster.setDataElements(x - x0, 0, pixel);
- }
-
- WritableRaster targetChild =
- destinationRaster.createWritableTranslatedChild(-x0, -yy);
- cCtx.compose(aaRaster, targetChild, targetChild);
- updateRaster(destinationRaster, x0, yy, numPixels, 1);
-
- cCtx.dispose();
- }
-
/**
* Initializes this graphics object. This must be called by subclasses in
* order to correctly initialize the state of this object.
@@ -1971,4 +1948,5 @@ public abstract class AbstractGraphics2D
}
return sc;
}
+
}
diff --git a/libjava/classpath/gnu/java/awt/java2d/Pixelizer.java b/libjava/classpath/gnu/java/awt/java2d/Pixelizer.java
new file mode 100644
index 00000000000..43e53bf63d9
--- /dev/null
+++ b/libjava/classpath/gnu/java/awt/java2d/Pixelizer.java
@@ -0,0 +1,56 @@
+/* Pixelizer.java -- Interface for the target of the rasterizer
+ Copyright (C) 2007 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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 for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.java.awt.java2d;
+
+/**
+ * A pixelizer is responsible for actually manipulating the pixel of a drawing
+ * surface after the scanline conversion process. It receives coverage
+ * information for a scanline and adjusts the surface pixels accordingly.
+ */
+public interface Pixelizer
+{
+
+ /**
+ * Renders the pixel for one scanline at the Y location y
+ * and using the coverage information in sc
.
+ *
+ * @param y the scanline Y coordinate
+ * @param sc the coverage information
+ */
+ void renderScanline(int y, ScanlineCoverage sc);
+}
diff --git a/libjava/classpath/gnu/java/awt/java2d/ScanlineConverter.java b/libjava/classpath/gnu/java/awt/java2d/ScanlineConverter.java
index 9f9d8921f59..2693a0b70c7 100644
--- a/libjava/classpath/gnu/java/awt/java2d/ScanlineConverter.java
+++ b/libjava/classpath/gnu/java/awt/java2d/ScanlineConverter.java
@@ -1,5 +1,5 @@
/* ScanlineConverter.java -- Rasterizes Shapes
- Copyright (C) 2006 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2007 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -40,6 +40,7 @@ package gnu.java.awt.java2d;
import gnu.java.math.Fixed;
+import java.awt.RenderingHints;
import java.awt.Shape;
import java.awt.geom.AffineTransform;
import java.awt.geom.PathIterator;
@@ -47,7 +48,7 @@ import java.awt.geom.PathIterator;
/**
* Rasterizes {@link Shape} objects on an AbstractGraphics2D.
*/
-final class ScanlineConverter
+public final class ScanlineConverter
{
/**
@@ -56,10 +57,15 @@ final class ScanlineConverter
private static int FIXED_DIGITS = 6;
/**
- * The fixed value for the number 1.
+ * The fixed point constant for the number one.
*/
private static int ONE = Fixed.fixedValue(FIXED_DIGITS, 1);
+ /**
+ * The number of significant bits for the Y resolution.
+ */
+ private static int Y_RESOLUTION = 4;
+
/**
* The actual number of scanlines.
*/
@@ -109,6 +115,13 @@ final class ScanlineConverter
private int minY;
private int maxY;
+ private int minX;
+ private int maxX;
+
+ /**
+ * Holds and manages information about the pixel coverage.
+ */
+ private ScanlineCoverage scanlineCoverage;
/**
* Create a new ScanlineConverter.
@@ -120,18 +133,23 @@ final class ScanlineConverter
activeEdges = new ActiveEdges();
edgePool = new PolyEdge();
edgePoolLast = edgePool;
+ scanlineCoverage = new ScanlineCoverage();
}
/**
* Renders the specified shape using the specified clip and transform.
*
+ * @param p the pixelizer that receives the coverage information
* @param shape the shape to render
* @param clip the clip
* @param trans the transform
*/
- void renderShape(AbstractGraphics2D g, Shape shape, Shape clip,
- AffineTransform trans, int res)
+ public void renderShape(Pixelizer p, Shape shape, Shape clip,
+ AffineTransform trans, int res, RenderingHints hints)
{
+ // TODO: Do something useful with the rendering hints. Like, adjusting
+ // the resolution.
+
// Prepare resolution and upper bounds.
clear();
setResolution(res);
@@ -139,11 +157,12 @@ final class ScanlineConverter
boolean haveClip = clip != null;
// Add shapes.
- PathIterator path = shape.getPathIterator(trans, resolution);
+ float flatness = Fixed.floatValue(FIXED_DIGITS, resolution / 2);
+ PathIterator path = shape.getPathIterator(trans, flatness);
addShape(path, false);
if (haveClip)
{
- path= clip.getPathIterator(trans, resolution);
+ path= clip.getPathIterator(trans, flatness);
addShape(path, true);
}
@@ -157,11 +176,11 @@ final class ScanlineConverter
}
int y = upperBounds;
- int lastIndex = scanlineIndex(y - resolution);
int index;
activeEdges.clear();
// The render loop...
Scanline scanline = null;
+ int lastRealY = Fixed.intValue(FIXED_DIGITS, y);
while (y <= maxY)
{
// First we put together our list of active edges.
@@ -184,15 +203,16 @@ final class ScanlineConverter
activeEdges.intersectSortAndPack(FIXED_DIGITS, y + halfStep);
// Ok, now we can perform the actual scanlining.
- boolean push = lastIndex != index;
- doScanline(g, y, push, haveClip);
+ int realY = Fixed.intValue(FIXED_DIGITS, y + resolution);
+ boolean push = lastRealY != realY;
+ doScanline(p, y, push, haveClip);
// Remove obsolete active edges.
//activeEdges.remove(y + halfStep);
-
// Go on with the next line...
y += resolution;
- lastIndex = index;
+ lastRealY = realY;
+
}
}
@@ -212,17 +232,31 @@ final class ScanlineConverter
sl.clear();
}
+ // Reset scanline coverage.
+ scanlineCoverage.clear();
+
// Reset bounds.
minY = Integer.MAX_VALUE;
maxY = Integer.MIN_VALUE;
+ minX = Integer.MAX_VALUE;
+ maxX = Integer.MIN_VALUE;
}
/**
* Performs the scanlining on the current set of active edges.
+ *
+ * @param p the pixelizer to receive the pixel coverage data
+ * @param y the Y coordinate
+ * @param push true when the scanline is ready to be pushed to the
+ * pixelizer
+ * @param haveClip true when there's a clip, false otherwise
*/
- private void doScanline(AbstractGraphics2D g, int y, boolean push,
+ private void doScanline(Pixelizer p, int y, boolean push,
boolean haveClip)
{
+ // First, rewind the scanline coverage.
+ scanlineCoverage.rewind();
+
// We begin outside the clip and outside the shape. We only draw when
// we are inside the clip AND inside the shape.
boolean inClip = ! haveClip;
@@ -238,22 +272,16 @@ final class ScanlineConverter
int x0 = lastEdge.xIntersection;
int x1 = edge.xIntersection;
assert x0 <= x1;
- if (push)
- {
- if (resolution == ONE)
- {
- // Non-AA rendering.
- g.fillScanline(Fixed.intValue(FIXED_DIGITS, x0),
- Fixed.intValue(FIXED_DIGITS, x1 - resolution),
- Fixed.intValue(FIXED_DIGITS, y));
- }
- else
- {
- // AA rendering.
- // FIXME: Implement.
- System.err.println("Implement AA rendering.");
- }
- }
+
+ int pix0 = Fixed.intValue(FIXED_DIGITS, x0);
+ int pix1 = Fixed.intValue(FIXED_DIGITS, x1);
+ int frac0 = ONE - Fixed.trunc(FIXED_DIGITS, x0);
+ int frac1 = ONE - Fixed.trunc(FIXED_DIGITS, x1);
+ // Only keep the first 4 digits after the point.
+ frac0 = frac0 >> (FIXED_DIGITS - Y_RESOLUTION);
+ frac1 = frac1 >> (FIXED_DIGITS - Y_RESOLUTION);
+ scanlineCoverage.add(pix0, 1 * (1 << Y_RESOLUTION), frac0);
+ scanlineCoverage.add(pix1, -1 * (1 << Y_RESOLUTION), -frac1);
}
if (edge.isClip)
inClip = ! inClip;
@@ -262,7 +290,15 @@ final class ScanlineConverter
lastEdge = edge;
}
- }
+
+ // Push out the whole scanline to the pixelizer.
+ if (push && ! scanlineCoverage.isEmpty())
+ {
+ p.renderScanline(Fixed.intValue(FIXED_DIGITS, y), scanlineCoverage);
+ scanlineCoverage.clear();
+ }
+ }
+
/**
* Sets the resolution. A value of 0 rasterizes the shape normally without
@@ -272,9 +308,12 @@ final class ScanlineConverter
*/
private void setResolution(int res)
{
+ int scanlinesPerPixel = 1 << res;
int one = Fixed.fixedValue(FIXED_DIGITS, 1);
- resolution = one / (1 << res);
+ resolution = one / (scanlinesPerPixel);
halfStep = resolution / 2;
+
+ scanlineCoverage.setMaxCoverage(scanlinesPerPixel << Y_RESOLUTION);
}
/**
@@ -309,6 +348,8 @@ final class ScanlineConverter
startY = lastY = Fixed.fixedValue(FIXED_DIGITS, coords[1]);
minY = Math.min(startY, minY);
maxY = Math.max(startY, maxY);
+ minX = Math.min(startX, minX);
+ maxX = Math.max(startX, maxX);
break;
case PathIterator.SEG_LINETO:
int x = Fixed.fixedValue(FIXED_DIGITS, coords[0]);
@@ -318,6 +359,8 @@ final class ScanlineConverter
lastY = y;
minY = Math.min(lastY, minY);
maxY = Math.max(lastY, maxY);
+ minX = Math.min(lastX, minX);
+ maxX = Math.max(lastX, maxX);
break;
case PathIterator.SEG_CLOSE:
edgePoolAdd(lastX, lastY, startX, startY, clip);
@@ -371,7 +414,7 @@ final class ScanlineConverter
{
int val1 = Fixed.div(FIXED_DIGITS, y, resolution);
int rounded = Fixed.round(FIXED_DIGITS, val1);
- return Fixed.div(FIXED_DIGITS, rounded, resolution);
+ return Fixed.mul(FIXED_DIGITS, rounded, resolution);
}
/**
diff --git a/libjava/classpath/gnu/java/awt/java2d/ScanlineCoverage.java b/libjava/classpath/gnu/java/awt/java2d/ScanlineCoverage.java
new file mode 100644
index 00000000000..6db7fb01988
--- /dev/null
+++ b/libjava/classpath/gnu/java/awt/java2d/ScanlineCoverage.java
@@ -0,0 +1,630 @@
+/* ScanlineCoverage.java -- Manages coverage information for a scanline
+ Copyright (C) 2007 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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 for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.java.awt.java2d;
+
+/**
+ * Stores and handles the pixel converage for a scanline. The pixel coverage
+ * is stored as sorted list of {@linke Covergage} entries, each of which holds
+ * information about the coverage for the X and Y axis. This is utilized to
+ * compute the actual coverage for each pixel on the scanline and finding
+ * chunks of pixels with equal coverage quickly.
+ */
+public final class ScanlineCoverage
+{
+
+ /**
+ * Iterates over the coverage list and calculates the actual coverage
+ * ranges on a scanline.
+ */
+ public final class Iterator
+ {
+ /**
+ * This instance is reused in the iteration.
+ */
+ private Range range;
+
+ /**
+ * The pointer to the current item in the iteration.
+ */
+ private Coverage currentItem;
+
+ /**
+ * The current coverage value.
+ */
+ private int currentCoverage;
+
+ /**
+ * True when the current pixel coverage has already been handled, false
+ * otherwise.
+ */
+ private boolean handledPixelCoverage;
+
+ /**
+ * Creates a new CoverageIterator.
+ */
+ Iterator()
+ {
+ range = new Range();
+ }
+
+ /**
+ * Returns the next coverage range on the scanline. The returned object
+ * will always be the same object, but with different values. Keep that
+ * in mind when dealing with this object.
+ *
+ * @return the next coverage range on the scanline
+ */
+ public Range next()
+ {
+ // TODO: Lump together the single-pixel coverage and the
+ // between-pixel coverage when the pixel coverage delta is 0.
+ if (handledPixelCoverage == false)
+ {
+ // Handle single pixel coverage.
+ range.setXPos(currentItem.xPos);
+ range.setLength(1);
+ range.setCoverage(currentCoverage + currentItem.pixelCoverage);
+ handledPixelCoverage = true;
+ }
+ else
+ {
+ // Handle pixel span coverage.
+ currentCoverage += currentItem.covDelta;
+ range.setCoverage(currentCoverage);
+ range.setXPos(currentItem.xPos + 1);
+ currentItem = currentItem.next;
+ range.setLength(currentItem.xPos - range.xPos);
+ handledPixelCoverage = false;
+ }
+ return range;
+ }
+
+ /**
+ * Returns {@ true} when there are more coverage ranges to iterate,
+ * {@ false} otherwise.
+ *
+ * @return {@ true} when there are more coverage ranges to iterate,
+ * {@ false} otherwise
+ */
+ public boolean hasNext()
+ {
+ boolean hasNext;
+ if (currentItem != null && handledPixelCoverage == false)
+ {
+ // We have at least one more coverage item when there's a pixel
+ // coverage piece left.
+ hasNext = true;
+ }
+ else if (currentItem == null || currentItem.next == null
+ || currentItem.next == last)
+ {
+ hasNext = false;
+ }
+ else
+ {
+ hasNext = true;
+ }
+ return hasNext;
+ }
+
+ /**
+ * Resets this iterator to the start of the list.
+ */
+ void reset()
+ {
+ currentItem = head;
+ currentCoverage = 0;
+ handledPixelCoverage = false;
+ }
+ }
+
+ /**
+ * A data object that carries information about pixel coverage on a scanline.
+ * The data consists of a starting X position on the scanline, the
+ * length of the range in pixels and the actual coverage value.
+´ */
+ public static final class Range
+ {
+ /**
+ * The X position on the scanline, in pixels.
+ */
+ private int xPos;
+
+ /**
+ * The length of the range, in pixels.
+ */
+ private int length;
+
+ /**
+ * The actual coverage. The relation depends on
+ * {@link ScanlineCoverage#maxCoverage}.
+ */
+ private int coverage;
+
+ /**
+ * Creates a new CoverageRange object.
+ */
+ Range()
+ {
+ // Nothing to do. The values get initialized in the corresponding
+ // setters.
+ }
+
+ /**
+ * Sets the X start position (left) on the scanline. This value is
+ * considered to be in pixels and device space.
+ *
+ * @param x the x position
+ */
+ void setXPos(int x)
+ {
+ xPos = x;
+ }
+
+ /**
+ * Returns the X start position (left) on the scanline. This value
+ * is considered to be in pixels and device space.
+ *
+ * @return the X position on the scanline
+ */
+ public int getXPos()
+ {
+ return xPos;
+ }
+
+ /**
+ * Sets the length of the pixel range. This is in pixel units.
+ *
+ * @param l the length of the range
+ */
+ void setLength(int l)
+ {
+ length = l;
+ }
+
+ /**
+ * Returns the length of the range in pixel units.
+ *
+ * @return the length of the range in pixel units
+ */
+ public int getLength()
+ {
+ return length;
+ }
+
+ /**
+ * Returns the first X position after the range.
+ *
+ * @return the first X position after the range
+ */
+ public int getXPosEnd()
+ {
+ return xPos + length;
+ }
+
+ /**
+ * Sets the coverage of the pixel range. The relation of that value
+ * depends on {@link ScanlineCoverage#maxCoverage}.
+ *
+ * @param cov the coverage value for the pixel range
+ */
+ void setCoverage(int cov)
+ {
+ coverage = cov;
+ }
+
+ /**
+ * Returns the coverage of the pixel range. The relation of this value
+ * depends on {@link ScanlineCoverage#getMaxCoverage()}.
+ *
+ * @return the coverage of the pixel range
+ */
+ public int getCoverage()
+ {
+ return coverage;
+ }
+
+ /**
+ * Returns a string representation.
+ */
+ public String toString()
+ {
+ return "Coverage range: xPos=" + xPos + ", length=" + length
+ + ", coverage: " + coverage;
+ }
+ }
+
+ /**
+ * One bucket in the list.
+ */
+ private static final class Coverage
+ {
+ /**
+ * The X coordinate on the scanline to which this bucket belongs.
+ */
+ int xPos;
+
+ /**
+ * The coverage delta from the pixel at xPos to xPos + 1.
+ */
+ int covDelta;
+
+ /**
+ * The delta for the pixel at xPos. This is added to the pixel at xPos,
+ * but not to the following pixel.
+ */
+ int pixelCoverage;
+
+ /**
+ * Implements a linked list. This points to the next element of the list.
+ */
+ Coverage next;
+
+ /**
+ * Returns the X coordinate for this entry.
+ *
+ * @return the X coordinate for this entry
+ */
+ public int getXPos()
+ {
+ return xPos;
+ }
+
+ /**
+ * Returns the coverage delta for this entry.
+ *
+ * @return the coverage delta for this entry
+ */
+ public int getCoverageDelta()
+ {
+ return covDelta;
+ }
+
+ /**
+ * Returns a string representation.
+ *
+ * @return a string representation
+ */
+ public String toString()
+ {
+ return "Coverage: xPos: " + xPos + ", covDelta: " + covDelta;
+ }
+
+ /**
+ * Returns a string representation of this entry and all the following
+ * in the linked list.
+ *
+ * @return a string representation of this entry and all the following
+ * in the linked list
+ */
+ public String list()
+ {
+ String str = toString();
+ if (next != null)
+ str = str + " --> " + next.list();
+ return str;
+ }
+ }
+
+ /**
+ * The head of the sorted list of buckets.
+ */
+ private Coverage head;
+
+ /**
+ * The current bucket. We make use of the fact that the scanline converter
+ * always scans the scanline (and thus this list) from left to right to
+ * quickly find buckets or insertion points.
+ */
+ private Coverage current;
+
+ /**
+ * The item that is before current in the list.
+ */
+ private Coverage currentPrev;
+
+ /**
+ * The bucket after the last valid bucket. Unused buckets are not thrown
+ * away and garbage collected. Instead, we keep them at the tail of the list
+ * and reuse them when necessary.
+ */
+ private Coverage last;
+
+ /**
+ * The last valid entry.
+ */
+ private Coverage lastPrev;
+
+ /**
+ * The minimum X coordinate of this scanline.
+ */
+ private int minX;
+
+ /**
+ * The maximum X coordinate of this scanline.
+ */
+ private int maxX;
+
+ /**
+ * The maximum coverage value.
+ */
+ private int maxCoverage;
+
+ /**
+ * The iterator over the ranges of this scanline.
+ */
+ private Iterator iterator;
+
+ /**
+ * Creates a new ScanlineCoverage instance.
+ */
+ public ScanlineCoverage()
+ {
+ iterator = new Iterator();
+ }
+
+ /**
+ * Indicates the the next scan of the scanline begins and that the next
+ * request will be at the beginning of this list. This makes searching and
+ * sorting of this list very quick.
+ */
+ public void rewind()
+ {
+ current = head;
+ currentPrev = null;
+ }
+
+ /**
+ * Clears the list. This does not throw away the old buckets but only
+ * resets the end-pointer of the list to the first element. All buckets are
+ * then unused and are reused when the list is filled again.
+ */
+ public void clear()
+ {
+ last = head;
+ lastPrev = null;
+ current = head;
+ currentPrev = null;
+ minX = Integer.MAX_VALUE;
+ maxX = Integer.MIN_VALUE;
+ }
+
+ /**
+ * This adds the specified coverage to the pixel at the specified
+ * X position.
+ *
+ * @param x the X position
+ * @param xc the x coverage
+ * @param yc the y coverage
+ */
+ public void add(int x, int xc, int yc)
+ {
+ Coverage bucket = findOrInsert(x);
+ bucket.covDelta += xc;
+ bucket.pixelCoverage += yc;
+ minX = Math.min(minX, x);
+ maxX = Math.max(maxX, x);
+ }
+
+ /**
+ * Returns the maximum coverage value for the scanline.
+ *
+ * @return the maximum coverage value for the scanline
+ */
+ public int getMaxCoverage()
+ {
+ return maxCoverage;
+ }
+
+ /**
+ * Sets the maximum coverage value for the scanline.
+ *
+ * @param maxCov the maximum coverage value for the scanline
+ */
+ void setMaxCoverage(int maxCov)
+ {
+ maxCoverage = maxCov;
+ }
+
+ /**
+ * Returns the maximum X coordinate of the current scanline.
+ *
+ * @return the maximum X coordinate of the current scanline
+ */
+ public int getMaxX()
+ {
+ return maxX;
+ }
+
+ /**
+ * Returns the minimum X coordinate of the current scanline.
+ *
+ * @return the minimum X coordinate of the current scanline
+ */
+ public int getMinX()
+ {
+ return minX;
+ }
+
+ /**
+ * Finds the bucket in the list with the specified X coordinate.
+ * If no such bucket is found, then a new one is fetched (either a cached
+ * bucket from the end of the list or a newly allocated one) inserted at the
+ * correct position and returned.
+ *
+ * @param x the X coordinate
+ *
+ * @return a bucket to hold the coverage data
+ */
+ private Coverage findOrInsert(int x)
+ {
+ // First search for a matching bucket.
+ if (head == null)
+ {
+ // Special case: the list is still empty.
+ // Testpoint 1.
+ head = new Coverage();
+ head.xPos = x;
+ current = head;
+ currentPrev = null;
+ return head;
+ }
+
+ // This performs a linear search, starting from the current bucket.
+ // This is reasonably efficient because access to this list is always done
+ // in a linear fashion and we are usually not more then 1 or 2 buckets away
+ // from the one we're looking for.
+ Coverage match = current;
+ Coverage prev = currentPrev;
+ while (match != last && match.xPos < x)
+ {
+ prev = match;
+ match = match.next;
+ }
+
+ // At this point we have either found an entry with xPos >= x, or reached
+ // the end of the list (match == last || match == null).
+ if (match == null)
+ {
+ // End of the list. No cached items to reuse.
+ // Testpoint 2.
+ match = new Coverage();
+ match.xPos = x;
+ if (prev != null)
+ prev.next = match;
+ current = match;
+ currentPrev = prev;
+ return match;
+ }
+ else if (match == last)
+ {
+ // End of the list. Reuse this item. Expand list.
+ // Testpoint 3.
+ last = match.next;
+ lastPrev = match;
+ match.xPos = x;
+ match.covDelta = 0;
+ match.pixelCoverage = 0;
+ // Keep link to last element or null, indicating the end of the list.
+ current = match;
+ currentPrev = prev;
+ return match;
+ }
+
+ if (x == match.xPos)
+ {
+ // Special case: We have another coverage entry at the same location
+ // as an already existing entry. Return this.
+ // Testpoint 4.
+ current = match;
+ currentPrev = prev;
+ return match;
+ }
+ else // x <= match.xPos
+ {
+ assert (x <= match.xPos);
+ assert (prev == null ||x > prev.xPos);
+
+ // Create new entry, or reuse existing one.
+ Coverage cov;
+ if (last != null)
+ {
+ // Testpoint 5.
+ cov = last;
+ last = cov.next;
+ lastPrev.next = last;
+ }
+ else
+ {
+ // Testpoint 6.
+ cov = new Coverage();
+ }
+
+ cov.xPos = x;
+ cov.covDelta = 0;
+ cov.pixelCoverage = 0;
+
+ // Insert this item in the list.
+ if (prev != null)
+ {
+ // Testpoint 5 & 6.
+ prev.next = cov;
+ cov.next = match;
+ current = cov;
+ currentPrev = prev;
+ }
+ else
+ {
+ // Testpoint 7.
+ assert (match == head);
+ // Insert at head.
+ head = cov;
+ head.next = match;
+ current = head;
+ currentPrev = null;
+ }
+ return cov;
+ }
+ }
+
+ /**
+ * (Re-)Starts iterating the coverage values for the scanline.
+ * Use the returned iterator to get the consecutive coverage ranges.
+ *
+ * @return the iterator
+ */
+ public Iterator iterate()
+ {
+ iterator.reset();
+ return iterator;
+ }
+
+ /**
+ * Returns {@ true} if this object has no entries for the current scanline,
+ * {@ false} otherwise.
+ *
+ * @return {@ true} if this object has no entries for the current scanline,
+ * {@ false} otherwise
+ */
+ public boolean isEmpty()
+ {
+ return head == null || head == last
+ || head.next == null || head.next == last;
+ }
+
+}
diff --git a/libjava/classpath/gnu/java/awt/java2d/ShapeCache.java b/libjava/classpath/gnu/java/awt/java2d/ShapeCache.java
index 034b53cadd3..89a9ac4ab84 100644
--- a/libjava/classpath/gnu/java/awt/java2d/ShapeCache.java
+++ b/libjava/classpath/gnu/java/awt/java2d/ShapeCache.java
@@ -42,6 +42,7 @@ import java.awt.Polygon;
import java.awt.Rectangle;
import java.awt.geom.Arc2D;
import java.awt.geom.Ellipse2D;
+import java.awt.geom.GeneralPath;
import java.awt.geom.Line2D;
import java.awt.geom.RoundRectangle2D;
@@ -82,4 +83,8 @@ public class ShapeCache
*/
public Polygon polygon;
+ /**
+ * A cached polyline.
+ */
+ public GeneralPath polyline;
}
diff --git a/libjava/classpath/gnu/java/awt/peer/ClasspathFontPeer.java b/libjava/classpath/gnu/java/awt/peer/ClasspathFontPeer.java
index 60fde2557ac..e43e5f284ed 100644
--- a/libjava/classpath/gnu/java/awt/peer/ClasspathFontPeer.java
+++ b/libjava/classpath/gnu/java/awt/peer/ClasspathFontPeer.java
@@ -644,7 +644,7 @@ public abstract class ClasspathFontPeer
* be ignored.
*/
- public abstract boolean canDisplay (Font font, char c);
+ public abstract boolean canDisplay (Font font, int c);
/**
* Implementation of {@link Font#canDisplay(String)},
diff --git a/libjava/classpath/gnu/java/awt/peer/GLightweightPeer.java b/libjava/classpath/gnu/java/awt/peer/GLightweightPeer.java
index f9a7bac8ee6..bf40bf379fa 100644
--- a/libjava/classpath/gnu/java/awt/peer/GLightweightPeer.java
+++ b/libjava/classpath/gnu/java/awt/peer/GLightweightPeer.java
@@ -449,4 +449,13 @@ public class GLightweightPeer
{
// Nothing to do here for lightweights.
}
+
+ public boolean requestFocus(Component lightweightChild, boolean temporary,
+ boolean focusedWindowChangeAllowed,
+ long time, sun.awt.CausedFocusEvent.Cause cause)
+ {
+ // Always grant focus request.
+ return true;
+ }
+
}
diff --git a/libjava/classpath/gnu/java/awt/peer/gtk/CairoGraphics2D.java b/libjava/classpath/gnu/java/awt/peer/gtk/CairoGraphics2D.java
index 3a386075a69..db8acd1cda0 100644
--- a/libjava/classpath/gnu/java/awt/peer/gtk/CairoGraphics2D.java
+++ b/libjava/classpath/gnu/java/awt/peer/gtk/CairoGraphics2D.java
@@ -1726,7 +1726,8 @@ public abstract class CairoGraphics2D extends Graphics2D
.equals(RenderingHints.VALUE_TEXT_ANTIALIAS_OFF));
ignoreAA = true;
- if (gv instanceof FreetypeGlyphVector && alpha == 1.0)
+ if (gv instanceof FreetypeGlyphVector && alpha == 1.0
+ && !((FreetypeGlyphVector)gv).hasTransforms())
{
int n = gv.getNumGlyphs ();
int[] codes = gv.getGlyphCodes (0, n, null);
@@ -2164,4 +2165,4 @@ public abstract class CairoGraphics2D extends Graphics2D
return new Rectangle2D.Double(minX, minY, (maxX - minX), (maxY - minY));
}
-}
+}
\ No newline at end of file
diff --git a/libjava/classpath/gnu/java/awt/peer/gtk/ComponentGraphics.java b/libjava/classpath/gnu/java/awt/peer/gtk/ComponentGraphics.java
index e54320697d8..4ce20a30d32 100644
--- a/libjava/classpath/gnu/java/awt/peer/gtk/ComponentGraphics.java
+++ b/libjava/classpath/gnu/java/awt/peer/gtk/ComponentGraphics.java
@@ -938,4 +938,4 @@ public class ComponentGraphics extends CairoGraphics2D
unlock();
}
}
-}
+}
\ No newline at end of file
diff --git a/libjava/classpath/gnu/java/awt/peer/gtk/FreetypeGlyphVector.java b/libjava/classpath/gnu/java/awt/peer/gtk/FreetypeGlyphVector.java
index 280f3e6fbcd..8d6d01ae317 100644
--- a/libjava/classpath/gnu/java/awt/peer/gtk/FreetypeGlyphVector.java
+++ b/libjava/classpath/gnu/java/awt/peer/gtk/FreetypeGlyphVector.java
@@ -43,6 +43,8 @@ import java.awt.font.FontRenderContext;
import java.awt.font.GlyphJustificationInfo;
import java.awt.font.GlyphMetrics;
import java.awt.font.GlyphVector;
+import java.awt.font.TextAttribute;
+import java.awt.font.TransformAttribute;
import java.awt.geom.AffineTransform;
import java.awt.geom.GeneralPath;
import java.awt.geom.Point2D;
@@ -86,7 +88,10 @@ public class FreetypeGlyphVector extends GlyphVector
private long[] fontSet = null;
/**
- * Glyph transforms. (de facto only the translation is used)
+ * Glyph transforms. Supports all transform operations.
+ *
+ * The identity transform should not be stored in this array; use a null
+ * instead (will result in performance improvements).
*/
private AffineTransform[] glyphTransforms;
@@ -185,9 +190,12 @@ public class FreetypeGlyphVector extends GlyphVector
fontSet = new long[nGlyphs];
glyphPositions = new float[(nGlyphs + 1) * 2];
glyphTransforms = new AffineTransform[ nGlyphs ];
+ Arrays.fill(glyphTransforms, null);
+
for(int i = 0; i < nGlyphs; i++ )
{
- glyphTransforms[ i ] = new AffineTransform( gv.glyphTransforms[ i ] );
+ if (gv.glyphTransforms[i] != null)
+ glyphTransforms[ i ] = new AffineTransform(gv.glyphTransforms[i]);
glyphCodes[i] = gv.glyphCodes[ i ];
}
System.arraycopy(gv.glyphPositions, 0, glyphPositions, 0,
@@ -313,6 +321,25 @@ public class FreetypeGlyphVector extends GlyphVector
}
glyphPositions[nGlyphs * 2] = x;
glyphPositions[nGlyphs * 2 + 1] = y;
+
+ // Apply any transform that may be in the font's attributes
+ TransformAttribute ta;
+ ta = (TransformAttribute)font.getAttributes().get(TextAttribute.TRANSFORM);
+ if (ta != null)
+ {
+ AffineTransform tx = ta.getTransform();
+
+ // Transform glyph positions
+ tx.transform(glyphPositions, 0, glyphPositions, 0,
+ glyphPositions.length / 2);
+
+ // Also store per-glyph scale/shear/rotate (but not translation)
+ double[] matrix = new double[4];
+ tx.getMatrix(matrix);
+ AffineTransform deltaTx = new AffineTransform(matrix);
+ if (!deltaTx.isIdentity())
+ Arrays.fill(glyphTransforms, deltaTx);
+ }
}
/**
@@ -375,7 +402,7 @@ public class FreetypeGlyphVector extends GlyphVector
p.getY() + r.getY() + r.getHeight()};
if (glyphTransforms[glyphIndex] != null)
- glyphTransforms[glyphIndex].transform(bounds, 0, bounds, 0, 4);
+ glyphTransforms[glyphIndex].transform(bounds, 0, bounds, 0, 2);
return new Rectangle2D.Double(bounds[0], bounds[1], bounds[2] - bounds[0],
bounds[3] - bounds[1]);
@@ -473,7 +500,19 @@ public class FreetypeGlyphVector extends GlyphVector
{
return glyphTransforms[glyphIndex];
}
-
+
+ /**
+ * Checks whether any transform has been set on any glyphs.
+ */
+ protected boolean hasTransforms()
+ {
+ for (int i = 0; i < glyphTransforms.length; i++)
+ if (glyphTransforms[i] != null)
+ return true;
+
+ return false;
+ }
+
/**
* Returns the visual bounds of a glyph
* May be off by a pixel or two due to hinting/rasterization.
@@ -570,6 +609,19 @@ public class FreetypeGlyphVector extends GlyphVector
*/
public void setGlyphTransform(int glyphIndex, AffineTransform newTX)
{
+ // The identity transform should never be in the glyphTransforms array;
+ // using and checking for nulls can be much faster.
+ if (newTX != null && newTX.isIdentity())
+ newTX = null;
+
+ // If the old and new transforms are identical, bail
+ if (glyphTransforms[glyphIndex] == null && newTX == null)
+ return;
+
+ if (newTX != null && newTX.equals(glyphTransforms[glyphIndex]))
+ return;
+
+ // Invalidate bounds cache and set new transform
logicalBounds = null;
glyphTransforms[glyphIndex] = newTX;
}
diff --git a/libjava/classpath/gnu/java/awt/peer/gtk/GdkFontPeer.java b/libjava/classpath/gnu/java/awt/peer/gtk/GdkFontPeer.java
index c3c94d8a935..95a806ac7ee 100644
--- a/libjava/classpath/gnu/java/awt/peer/gtk/GdkFontPeer.java
+++ b/libjava/classpath/gnu/java/awt/peer/gtk/GdkFontPeer.java
@@ -38,6 +38,8 @@ exception statement from your version. */
package gnu.java.awt.peer.gtk;
+import gnu.classpath.Pointer;
+
import gnu.java.awt.ClasspathToolkit;
import gnu.java.awt.peer.ClasspathFontPeer;
import gnu.java.awt.font.opentype.NameDecoder;
@@ -172,6 +174,14 @@ public class GdkFontPeer extends ClasspathFontPeer
private ByteBuffer nameTable = null;
+ /**
+ * The pointer to the native font data.
+ *
+ * This field is manipulated by native code. Don't change or remove
+ * without adjusting the native code.
+ */
+ private Pointer nativeFont;
+
private native void initState ();
private native void dispose ();
private native void setFont (String family, int style, int size);
@@ -351,7 +361,7 @@ public class GdkFontPeer extends ClasspathFontPeer
return NameDecoder.getName(nameTable, name, locale);
}
- public boolean canDisplay (Font font, char c)
+ public boolean canDisplay (Font font, int c)
{
// FIXME: inquire with pango
return true;
diff --git a/libjava/classpath/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java b/libjava/classpath/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java
index bd6daa2d1e5..67040b82a0f 100644
--- a/libjava/classpath/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java
+++ b/libjava/classpath/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java
@@ -52,6 +52,8 @@ import java.awt.image.SampleModel;
import java.awt.image.WritableRaster;
import java.util.Locale;
+import gnu.classpath.Pointer;
+
public class GdkGraphicsEnvironment extends ClasspathGraphicsEnvironment
{
private final int native_state = GtkGenericPeer.getUniqueInteger ();
@@ -59,15 +61,24 @@ public class GdkGraphicsEnvironment extends ClasspathGraphicsEnvironment
private GdkScreenGraphicsDevice defaultDevice;
private GdkScreenGraphicsDevice[] devices;
-
+
+ /**
+ * The pointer to the native display resource.
+ *
+ * This field is manipulated by native code. Don't change or remove
+ * without adjusting the native code.
+ */
+ private Pointer display;
+
static
{
System.loadLibrary("gtkpeer");
- initStaticState ();
+ GtkToolkit.initializeGlobalIDs();
+ initIDs();
}
- static native void initStaticState();
+ private static native void initIDs();
public GdkGraphicsEnvironment ()
{
diff --git a/libjava/classpath/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java b/libjava/classpath/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java
index 6f6ea560db7..e52bf050c09 100644
--- a/libjava/classpath/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java
+++ b/libjava/classpath/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java
@@ -68,6 +68,8 @@ import javax.imageio.spi.ImageWriterSpi;
import javax.imageio.stream.ImageInputStream;
import javax.imageio.stream.ImageOutputStream;
+import gnu.classpath.Pointer;
+
public class GdkPixbufDecoder extends gnu.java.awt.image.ImageDecoder
{
static
@@ -94,6 +96,14 @@ public class GdkPixbufDecoder extends gnu.java.awt.image.ImageDecoder
// the current set of ImageConsumers for this decoder
Vector curr;
+ /**
+ * The pointer to the native pixbuf loader.
+ *
+ * This field is manipulated by native code. Don't change or remove
+ * without adjusting the native code.
+ */
+ private Pointer nativeDecoder;
+
// interface to GdkPixbuf
// These native functions should be called with the pixbufLock held.
native void initState ();
diff --git a/libjava/classpath/gnu/java/awt/peer/gtk/GdkRobotPeer.java b/libjava/classpath/gnu/java/awt/peer/gtk/GdkRobotPeer.java
index 6d0218d057a..d3e9774daa0 100644
--- a/libjava/classpath/gnu/java/awt/peer/gtk/GdkRobotPeer.java
+++ b/libjava/classpath/gnu/java/awt/peer/gtk/GdkRobotPeer.java
@@ -91,4 +91,9 @@ public class GdkRobotPeer implements RobotPeer
return pixels;
}
+
+ public void dispose()
+ {
+ // Nothing to do here yet.
+ }
}
diff --git a/libjava/classpath/gnu/java/awt/peer/gtk/GdkScreenGraphicsDevice.java b/libjava/classpath/gnu/java/awt/peer/gtk/GdkScreenGraphicsDevice.java
index a69c6f0659e..7ef4645a257 100644
--- a/libjava/classpath/gnu/java/awt/peer/gtk/GdkScreenGraphicsDevice.java
+++ b/libjava/classpath/gnu/java/awt/peer/gtk/GdkScreenGraphicsDevice.java
@@ -46,6 +46,8 @@ import java.awt.Rectangle;
import java.awt.Window;
import java.util.ArrayList;
+import gnu.classpath.Pointer;
+
class GdkScreenGraphicsDevice extends GraphicsDevice
{
private final int native_state = GtkGenericPeer.getUniqueInteger ();
@@ -85,15 +87,23 @@ class GdkScreenGraphicsDevice extends GraphicsDevice
* method must be called.
*/
DisplayMode fixedDisplayMode;
-
+
+ /**
+ * The pointer to the native screen resource.
+ *
+ * This field is manipulated by native code. Don't change or remove
+ * without adjusting the native code.
+ */
+ private Pointer screen;
+
static
{
System.loadLibrary("gtkpeer");
-
- initStaticState ();
+ GtkToolkit.initializeGlobalIDs();
+ initIDs();
}
- static native void initStaticState();
+ static native void initIDs();
GdkScreenGraphicsDevice (GdkGraphicsEnvironment e)
{
diff --git a/libjava/classpath/gnu/java/awt/peer/gtk/GtkComponentPeer.java b/libjava/classpath/gnu/java/awt/peer/gtk/GtkComponentPeer.java
index a7ae8e17f2b..16c20ee253f 100644
--- a/libjava/classpath/gnu/java/awt/peer/gtk/GtkComponentPeer.java
+++ b/libjava/classpath/gnu/java/awt/peer/gtk/GtkComponentPeer.java
@@ -616,11 +616,18 @@ public class GtkComponentPeer extends GtkGenericPeer
setVisible (true);
}
- protected void postMouseEvent(int id, long when, int mods, int x, int y,
+ protected void postMouseEvent(int id, long when, int mods, int x, int y,
int clickCount, boolean popupTrigger)
{
- q().postEvent(new MouseEvent(awtComponent, id, when, mods, x, y,
- clickCount, popupTrigger));
+ // It is important to do the getLocationOnScreen() here, instead
+ // of using the old MouseEvent constructors, because
+ // Component.getLocationOnScreen() locks on the AWT lock, which can
+ // trigger a deadlock. You don't want this.
+ Point locOnScreen = getLocationOnScreen();
+ q().postEvent(new MouseEvent(awtComponent, id, when, mods, x, y,
+ locOnScreen.x + x, locOnScreen.y + y,
+ clickCount, popupTrigger,
+ MouseEvent.NOBUTTON));
}
/**
@@ -899,4 +906,14 @@ public class GtkComponentPeer extends GtkGenericPeer
// FIXME: implement
}
+
+ public boolean requestFocus(Component lightweightChild, boolean temporary,
+ boolean focusedWindowChangeAllowed,
+ long time, sun.awt.CausedFocusEvent.Cause cause)
+ {
+ // TODO: Implement this properly and remove the other requestFocus()
+ // methods.
+ return true;
+ }
+
}
diff --git a/libjava/classpath/gnu/java/awt/peer/gtk/GtkFramePeer.java b/libjava/classpath/gnu/java/awt/peer/gtk/GtkFramePeer.java
index b35be522746..4278a4579e4 100644
--- a/libjava/classpath/gnu/java/awt/peer/gtk/GtkFramePeer.java
+++ b/libjava/classpath/gnu/java/awt/peer/gtk/GtkFramePeer.java
@@ -244,6 +244,13 @@ public class GtkFramePeer extends GtkWindowPeer
// TODO Auto-generated method stub
return false;
}
+
+ public Rectangle getBoundsPrivate()
+ {
+ // TODO: Implement this properly.
+ throw new InternalError("Not yet implemented");
+ }
+
}
diff --git a/libjava/classpath/gnu/java/awt/peer/gtk/GtkGenericPeer.java b/libjava/classpath/gnu/java/awt/peer/gtk/GtkGenericPeer.java
index 468c46dc4af..8d63699eab8 100644
--- a/libjava/classpath/gnu/java/awt/peer/gtk/GtkGenericPeer.java
+++ b/libjava/classpath/gnu/java/awt/peer/gtk/GtkGenericPeer.java
@@ -43,6 +43,8 @@ import java.awt.Font;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
+import gnu.classpath.Pointer;
+
public class GtkGenericPeer
{
// Used by Native State Association (NSA) functions to map
@@ -55,6 +57,40 @@ public class GtkGenericPeer
// The widget or other java-side object we wrap.
protected final Object awtWidget;
+ /**
+ * The pointer to the native GTK widget.
+ *
+ * This field is manipulated by native code. Don't change or remove
+ * without adjusting the native code.
+ */
+ private Pointer widget;
+
+ /**
+ * The pointer to the global reference to this object. The native
+ * code creates a JNI global reference of the peer object to be able
+ * to pass it to the event callbacks. It gets stored here, so that
+ * we can later delete it in the dispose() method.
+ *
+ * This field is manipulated by native code. Don't change or remove
+ * without adjusting the native code.
+ */
+ private Pointer globalRef;
+
+ /**
+ * We initialize the field IDs that are used by native code here because
+ * these remain valid until a class gets unloaded.
+ */
+ static
+ {
+ GtkToolkit.initializeGlobalIDs();
+ initIDs();
+ }
+
+ /**
+ * Initializes the field IDs that are used by the native code.
+ */
+ private static native void initIDs();
+
/**
* Dispose of our native state. Calls gtk_widget_destroy on the
* native widget and removes the awtWidget from the native state
diff --git a/libjava/classpath/gnu/java/awt/peer/gtk/GtkToolkit.java b/libjava/classpath/gnu/java/awt/peer/gtk/GtkToolkit.java
index df18d39c9d2..dc9c7155e6e 100644
--- a/libjava/classpath/gnu/java/awt/peer/gtk/GtkToolkit.java
+++ b/libjava/classpath/gnu/java/awt/peer/gtk/GtkToolkit.java
@@ -144,10 +144,39 @@ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit
static native void gtkQuit();
+ /**
+ * Initializes field IDs that are used by native code.
+ */
+ private static native void initIDs();
+
+ /**
+ * True when the field IDs are already initialized, false otherwise.
+ */
+ private static boolean initializedGlobalIDs = false;
+
+ /**
+ * Initializes some global fieldIDs for use in the native code. This is
+ * called by a couple of classes in the GTK peers to ensure that
+ * some necessary stuff is loaded.
+ */
+ static synchronized void initializeGlobalIDs()
+ {
+ if (! initializedGlobalIDs)
+ {
+ initIDs();
+ initializedGlobalIDs = true;
+ }
+ }
+
static
{
System.loadLibrary("gtkpeer");
-
+
+ /**
+ * Gotta do that first.
+ */
+ initializeGlobalIDs();
+
int portableNativeSync;
String portNatSyncProp =
System.getProperty("gnu.classpath.awt.gtk.portable.native.sync");
@@ -716,4 +745,17 @@ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit
public native int getMouseNumberOfButtons();
+ @Override
+ public boolean isModalExclusionTypeSupported
+ (Dialog.ModalExclusionType modalExclusionType)
+ {
+ return false;
+ }
+
+ @Override
+ public boolean isModalityTypeSupported(Dialog.ModalityType modalityType)
+ {
+ return false;
+ }
+
} // class GtkToolkit
diff --git a/libjava/classpath/gnu/java/awt/peer/gtk/GtkWindowPeer.java b/libjava/classpath/gnu/java/awt/peer/gtk/GtkWindowPeer.java
index 1451dd93354..d8054150dea 100644
--- a/libjava/classpath/gnu/java/awt/peer/gtk/GtkWindowPeer.java
+++ b/libjava/classpath/gnu/java/awt/peer/gtk/GtkWindowPeer.java
@@ -398,4 +398,29 @@ public class GtkWindowPeer extends GtkContainerPeer
{
return new Rectangle(x, y, width, height);
}
+
+ public void updateIconImages()
+ {
+ // TODO: Implement properly.
+ }
+
+ public void updateMinimumSize()
+ {
+ // TODO: Implement properly.
+ }
+
+ public void setModalBlocked(java.awt.Dialog d, boolean b)
+ {
+ // TODO: Implement properly.
+ }
+
+ public void updateFocusableWindowState()
+ {
+ // TODO: Implement properly.
+ }
+
+ public void setAlwaysOnTop(boolean b)
+ {
+ // TODO: Implement properly.
+ }
}
diff --git a/libjava/classpath/gnu/java/awt/peer/gtk/VolatileImageGraphics.java b/libjava/classpath/gnu/java/awt/peer/gtk/VolatileImageGraphics.java
index 88438862b34..ad5cd5ecdf2 100644
--- a/libjava/classpath/gnu/java/awt/peer/gtk/VolatileImageGraphics.java
+++ b/libjava/classpath/gnu/java/awt/peer/gtk/VolatileImageGraphics.java
@@ -86,7 +86,17 @@ public class VolatileImageGraphics extends ComponentGraphics
public GraphicsConfiguration getDeviceConfiguration()
{
- return owner.component.getGraphicsConfiguration();
+ GraphicsConfiguration conf;
+ if (owner.component != null)
+ {
+ conf = owner.component.getGraphicsConfiguration();
+ }
+ else
+ {
+ return java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment()
+ .getDefaultScreenDevice().getDefaultConfiguration();
+ }
+ return conf;
}
public Graphics create()
diff --git a/libjava/classpath/gnu/java/awt/peer/headless/HeadlessToolkit.java b/libjava/classpath/gnu/java/awt/peer/headless/HeadlessToolkit.java
index 96798c9e9d8..58b5f333427 100644
--- a/libjava/classpath/gnu/java/awt/peer/headless/HeadlessToolkit.java
+++ b/libjava/classpath/gnu/java/awt/peer/headless/HeadlessToolkit.java
@@ -368,4 +368,18 @@ public class HeadlessToolkit
return graphicsEnv;
}
+ @Override
+ public boolean isModalExclusionTypeSupported
+ (Dialog.ModalExclusionType modalExclusionType)
+ {
+ return false;
+ }
+
+ @Override
+ public boolean isModalityTypeSupported(Dialog.ModalityType modalityType)
+ {
+ return false;
+ }
+
+
}
diff --git a/libjava/classpath/gnu/java/awt/peer/qt/QtComponentPeer.java b/libjava/classpath/gnu/java/awt/peer/qt/QtComponentPeer.java
index 4d7b58c4d87..334f5908825 100644
--- a/libjava/classpath/gnu/java/awt/peer/qt/QtComponentPeer.java
+++ b/libjava/classpath/gnu/java/awt/peer/qt/QtComponentPeer.java
@@ -821,4 +821,14 @@ public class QtComponentPeer extends NativeWrapper implements ComponentPeer
{
// TODO Auto-generated method stub
}
+
+ public boolean requestFocus(Component lightweightChild, boolean temporary,
+ boolean focusedWindowChangeAllowed,
+ long time, sun.awt.CausedFocusEvent.Cause cause)
+ {
+ // TODO: Implement this properly and remove the other requestFocus()
+ // methods.
+ return true;
+ }
+
}
diff --git a/libjava/classpath/gnu/java/awt/peer/qt/QtFontMetrics.java b/libjava/classpath/gnu/java/awt/peer/qt/QtFontMetrics.java
index 2438fcc3282..3b182b5eada 100644
--- a/libjava/classpath/gnu/java/awt/peer/qt/QtFontMetrics.java
+++ b/libjava/classpath/gnu/java/awt/peer/qt/QtFontMetrics.java
@@ -94,7 +94,7 @@ public class QtFontMetrics extends FontMetrics
// ****************** Package private ***************************
- native boolean canDisplay( char c );
+ native boolean canDisplay( int c );
// ****************** Public methods ****************************
diff --git a/libjava/classpath/gnu/java/awt/peer/qt/QtFontPeer.java b/libjava/classpath/gnu/java/awt/peer/qt/QtFontPeer.java
index 6ffe3f69176..bd16daf28cb 100644
--- a/libjava/classpath/gnu/java/awt/peer/qt/QtFontPeer.java
+++ b/libjava/classpath/gnu/java/awt/peer/qt/QtFontPeer.java
@@ -98,7 +98,7 @@ public class QtFontPeer extends ClasspathFontPeer
// ****************** ClasspathFontPeer Methods.
- public boolean canDisplay (Font font, char c)
+ public boolean canDisplay (Font font, int c)
{
return metrics.canDisplay( c );
}
diff --git a/libjava/classpath/gnu/java/awt/peer/qt/QtFramePeer.java b/libjava/classpath/gnu/java/awt/peer/qt/QtFramePeer.java
index b2c6a5921cb..e3b578933ac 100644
--- a/libjava/classpath/gnu/java/awt/peer/qt/QtFramePeer.java
+++ b/libjava/classpath/gnu/java/awt/peer/qt/QtFramePeer.java
@@ -155,4 +155,10 @@ public class QtFramePeer extends QtWindowPeer implements FramePeer
return false;
}
+ public Rectangle getBoundsPrivate()
+ {
+ // TODO: Implement this properly.
+ throw new InternalError("Not yet implemented");
+ }
+
}
diff --git a/libjava/classpath/gnu/java/awt/peer/qt/QtToolkit.java b/libjava/classpath/gnu/java/awt/peer/qt/QtToolkit.java
index 9b53b278b26..4cea976ac22 100644
--- a/libjava/classpath/gnu/java/awt/peer/qt/QtToolkit.java
+++ b/libjava/classpath/gnu/java/awt/peer/qt/QtToolkit.java
@@ -452,4 +452,19 @@ public class QtToolkit extends ClasspathToolkit
// return new QtEmbeddedWindowPeer( this, w );
return null;
}
+
+ @Override
+ public boolean isModalExclusionTypeSupported
+ (Dialog.ModalExclusionType modalExclusionType)
+ {
+ return false;
+ }
+
+ @Override
+ public boolean isModalityTypeSupported(Dialog.ModalityType modalityType)
+ {
+ return false;
+ }
+
+
}
diff --git a/libjava/classpath/gnu/java/awt/peer/qt/QtWindowPeer.java b/libjava/classpath/gnu/java/awt/peer/qt/QtWindowPeer.java
index 7baf8e6ebea..e0a9e8c55d9 100644
--- a/libjava/classpath/gnu/java/awt/peer/qt/QtWindowPeer.java
+++ b/libjava/classpath/gnu/java/awt/peer/qt/QtWindowPeer.java
@@ -77,4 +77,29 @@ public class QtWindowPeer extends QtContainerPeer implements WindowPeer
return false;
}
+ public void updateIconImages()
+ {
+ // TODO: Implement properly.
+ }
+
+ public void updateMinimumSize()
+ {
+ // TODO: Implement properly.
+ }
+
+ public void setModalBlocked(java.awt.Dialog d, boolean b)
+ {
+ // TODO: Implement properly.
+ }
+
+ public void updateFocusableWindowState()
+ {
+ // TODO: Implement properly.
+ }
+
+ public void setAlwaysOnTop(boolean b)
+ {
+ // TODO: Implement properly.
+ }
+
}
diff --git a/libjava/classpath/gnu/java/awt/peer/swing/SwingButtonPeer.java b/libjava/classpath/gnu/java/awt/peer/swing/SwingButtonPeer.java
index 531d6f2db3b..192d612ee79 100644
--- a/libjava/classpath/gnu/java/awt/peer/swing/SwingButtonPeer.java
+++ b/libjava/classpath/gnu/java/awt/peer/swing/SwingButtonPeer.java
@@ -1,5 +1,5 @@
/* SwingButtonPeer.java -- A Swing based peer for AWT buttons
- Copyright (C) 2006 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2007 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -44,6 +44,7 @@ import java.awt.Image;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
+import java.awt.event.FocusEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.peer.ButtonPeer;
@@ -70,12 +71,12 @@ public class SwingButtonPeer
extends JButton
implements SwingComponent
{
- Button button;
+ Button button;
- SwingButton(Button button)
- {
- this.button = button;
- }
+ SwingButton(Button button)
+ {
+ this.button = button;
+ }
/**
* Overridden so that this method returns the correct value even without a
@@ -184,6 +185,26 @@ public class SwingButtonPeer
par = button.getParent();
return par;
}
+
+ /**
+ * Handles focus events by forwarding it to
+ * processFocusEvent()
.
+ *
+ * @param ev the Focus event
+ */
+ public void handleFocusEvent(FocusEvent ev)
+ {
+ processFocusEvent(ev);
+ }
+
+ public void requestFocus() {
+ SwingButtonPeer.this.requestFocus(awtComponent, false, true, 0);
+ }
+
+ public boolean requestFocus(boolean temporary) {
+ return SwingButtonPeer.this.requestFocus(awtComponent, temporary,
+ true, 0);
+ }
}
/**
diff --git a/libjava/classpath/gnu/java/awt/peer/swing/SwingCheckboxPeer.java b/libjava/classpath/gnu/java/awt/peer/swing/SwingCheckboxPeer.java
new file mode 100755
index 00000000000..a8e3cb01bab
--- /dev/null
+++ b/libjava/classpath/gnu/java/awt/peer/swing/SwingCheckboxPeer.java
@@ -0,0 +1,261 @@
+/* SwingCheckboxPeer.java -- A Swing based peer for AWT checkboxes
+ Copyright (C) 2007 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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 for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.java.awt.peer.swing;
+
+import java.awt.Button;
+import java.awt.Checkbox;
+import java.awt.CheckboxGroup;
+import java.awt.Container;
+import java.awt.Graphics;
+import java.awt.Image;
+import java.awt.Label;
+import java.awt.Point;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.FocusEvent;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseEvent;
+import java.awt.peer.CheckboxPeer;
+
+import javax.swing.JCheckBox;
+import javax.swing.JComponent;
+import javax.swing.JLabel;
+import javax.swing.JToggleButton;
+
+/**
+ * A CheckboxPeer implementation that is backed by the Swing JCheckBox.
+ */
+public class SwingCheckboxPeer extends SwingComponentPeer implements
+ CheckboxPeer {
+
+ /**
+ * A spezialized Swing checkbox used to paint the checkbox for the
+ * AWT checkbox.
+ */
+ private class SwingCheckbox
+ extends JCheckBox
+ implements SwingComponent
+ {
+ Checkbox checkbox;
+
+ SwingCheckbox(Checkbox checkbox)
+ {
+ this.checkbox = checkbox;
+ }
+
+ /**
+ * Returns this checkbox.
+ *
+ * @return this
+ */
+ public JComponent getJComponent()
+ {
+ return this;
+ }
+
+ /**
+ * Handles mouse events by forwarding it to
+ * processMouseEvent()
.
+ *
+ * @param ev the mouse event
+ */
+ public void handleMouseEvent(MouseEvent ev)
+ {
+ ev.setSource(this);
+ processMouseEvent(ev);
+ }
+
+ /**
+ * Handles mouse motion events by forwarding it to
+ * processMouseMotionEvent()
.
+ *
+ * @param ev the mouse motion event
+ */
+ public void handleMouseMotionEvent(MouseEvent ev)
+ {
+ ev.setSource(this);
+ processMouseMotionEvent(ev);
+ }
+
+ /**
+ * Handles key events by forwarding it to processKeyEvent()
.
+ *
+ * @param ev the mouse event
+ */
+ public void handleKeyEvent(KeyEvent ev)
+ {
+ ev.setSource(this);
+ processKeyEvent(ev);
+ }
+
+ /**
+ * Handles focus events by forwarding it to
+ * processFocusEvent()
.
+ *
+ * @param ev the Focus event
+ */
+ public void handleFocusEvent(FocusEvent ev)
+ {
+ processFocusEvent(ev);
+ }
+
+ /**
+ * Overridden so that this method returns the correct value even without a
+ * peer.
+ *
+ * @return the screen location of the button
+ */
+ public Point getLocationOnScreen()
+ {
+ return SwingCheckboxPeer.this.getLocationOnScreen();
+ }
+
+ /**
+ * Overridden so that the isShowing method returns the correct value
+ * for the swing button, even if it has no peer on its own.
+ *
+ * @return true
if the button is currently showing,
+ * false
otherwise
+ */
+ public boolean isShowing()
+ {
+ boolean retVal = false;
+ if (checkbox != null)
+ retVal = checkbox.isShowing();
+ return retVal;
+ }
+
+ /**
+ * Overridden, so that the Swing button can create an Image without its
+ * own peer.
+ *
+ * @param w the width of the image
+ * @param h the height of the image
+ *
+ * @return an image
+ */
+ public Image createImage(int w, int h)
+ {
+ return SwingCheckboxPeer.this.createImage(w, h);
+ }
+
+ public Graphics getGraphics()
+ {
+ return SwingCheckboxPeer.this.getGraphics();
+ }
+
+ public Container getParent()
+ {
+ Container par = null;
+ if (checkbox != null)
+ par = checkbox.getParent();
+ return par;
+ }
+
+ public void requestFocus() {
+ SwingCheckboxPeer.this.requestFocus(awtComponent, false, true, 0);
+ }
+
+ public boolean requestFocus(boolean temporary) {
+ return SwingCheckboxPeer.this.requestFocus(awtComponent, temporary,
+ true, 0);
+ }
+ }
+
+ /**
+ * Listens for ActionEvents on the Swing button and triggers corresponding
+ * ActionEvents on the AWT button.
+ */
+ class SwingCheckboxListener implements ItemListener
+ {
+ Checkbox awtCheckbox;
+
+ SwingCheckboxListener(Checkbox checkbox)
+ {
+ awtCheckbox = checkbox;
+ }
+
+ /**
+ * Receives notification when an action was performend on the button.
+ *
+ * @param event the action event
+ */
+ public void itemStateChanged(ItemEvent event)
+ {
+ awtCheckbox.setState(event.getStateChange()==ItemEvent.SELECTED);
+ ItemListener[] l = awtCheckbox.getItemListeners();
+ if (l.length == 0)
+ return;
+ ItemEvent ev = new ItemEvent(awtCheckbox, ItemEvent.ITEM_STATE_CHANGED,
+ awtCheckbox, event.getStateChange());
+ for (int i = 0; i < l.length; ++i)
+ l[i].itemStateChanged(ev);
+ }
+ }
+
+ /**
+ * Creates a new SwingCheckboxPeer instance.
+ */
+ public SwingCheckboxPeer(Checkbox checkbox)
+ {
+ SwingCheckbox swingCheckbox = new SwingCheckbox(checkbox);
+ swingCheckbox.addItemListener(new SwingCheckboxListener(checkbox));
+
+ init(checkbox, swingCheckbox);
+ setLabel(checkbox.getLabel());
+ setState(checkbox.getState());
+ }
+
+ public void setCheckboxGroup(CheckboxGroup group)
+ {
+ // TODO: Implement this.
+ }
+
+ public void setLabel(String label)
+ {
+ ((JToggleButton) swingComponent).setText(label);
+ }
+
+ public void setState(boolean state)
+ {
+ ((JToggleButton) swingComponent).setSelected(state);
+ }
+
+}
diff --git a/libjava/classpath/gnu/java/awt/peer/swing/SwingComponent.java b/libjava/classpath/gnu/java/awt/peer/swing/SwingComponent.java
index 04ca7294f78..d22f55d6f19 100644
--- a/libjava/classpath/gnu/java/awt/peer/swing/SwingComponent.java
+++ b/libjava/classpath/gnu/java/awt/peer/swing/SwingComponent.java
@@ -37,6 +37,7 @@ exception statement from your version. */
package gnu.java.awt.peer.swing;
+import java.awt.event.FocusEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
@@ -86,4 +87,13 @@ public interface SwingComponent
* @param ev the key event
*/
void handleKeyEvent(KeyEvent ev);
+
+ /**
+ * Handles a focus event. This is usually forwarded to
+ * {@link Component#processFocusEvent(FocusEvent)} of the swing
+ * component.
+ *
+ * @param ev the focus event
+ */
+ void handleFocusEvent(FocusEvent ev);
}
diff --git a/libjava/classpath/gnu/java/awt/peer/swing/SwingComponentPeer.java b/libjava/classpath/gnu/java/awt/peer/swing/SwingComponentPeer.java
index bfa14dddee3..71a7bac4d00 100644
--- a/libjava/classpath/gnu/java/awt/peer/swing/SwingComponentPeer.java
+++ b/libjava/classpath/gnu/java/awt/peer/swing/SwingComponentPeer.java
@@ -1,5 +1,5 @@
/* SwingComponentPeer.java -- An abstract base class for Swing based peers
- Copyright (C) 2006 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2007 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -45,6 +45,7 @@ import java.awt.Component;
import java.awt.Container;
import java.awt.Cursor;
import java.awt.Dimension;
+import java.awt.EventQueue;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
@@ -54,6 +55,7 @@ import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.BufferCapabilities.FlipContents;
+import java.awt.event.FocusEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.PaintEvent;
@@ -349,12 +351,7 @@ public class SwingComponentPeer
*/
public Dimension getMinimumSize()
{
- Dimension retVal;
- if (swingComponent != null)
- retVal = swingComponent.getJComponent().getMinimumSize();
- else
- retVal = new Dimension(0, 0);
- return retVal;
+ return minimumSize();
}
/**
@@ -367,12 +364,7 @@ public class SwingComponentPeer
*/
public Dimension getPreferredSize()
{
- Dimension retVal;
- if (swingComponent != null)
- retVal = swingComponent.getJComponent().getPreferredSize();
- else
- retVal = new Dimension(0, 0);
- return retVal;
+ return preferredSize();
}
/**
@@ -395,30 +387,28 @@ public class SwingComponentPeer
public void handleEvent(AWTEvent e)
{
switch (e.getID())
- {
+ {
case PaintEvent.UPDATE:
case PaintEvent.PAINT:
- // Need to synchronize to avoid threading problems on the
- // paint event list.
- // We must synchronize on the tree lock first to avoid deadlock,
- // because Container.paint() will grab it anyway.
- synchronized (this)
+ if (awtComponent.isShowing())
{
- assert paintArea != null;
- if (awtComponent.isShowing())
+ Rectangle clip ;
+ synchronized (this)
{
- Graphics g = awtComponent.getGraphics();
- try
- {
- Rectangle clip = paintArea;
- g.clipRect(clip.x, clip.y, clip.width, clip.height);
- peerPaint(g, e.getID() == PaintEvent.UPDATE);
- }
- finally
- {
- g.dispose();
- paintArea = null;
- }
+ coalescePaintEvent((PaintEvent) e);
+ assert paintArea != null;
+ clip = paintArea;
+ paintArea = null;
+ }
+ Graphics g = awtComponent.getGraphics();
+ try
+ {
+ g.clipRect(clip.x, clip.y, clip.width, clip.height);
+ peerPaint(g, e.getID() == PaintEvent.UPDATE);
+ }
+ finally
+ {
+ g.dispose();
}
}
break;
@@ -438,10 +428,14 @@ public class SwingComponentPeer
case KeyEvent.KEY_TYPED:
handleKeyEvent((KeyEvent) e);
break;
+ case FocusEvent.FOCUS_GAINED:
+ case FocusEvent.FOCUS_LOST:
+ handleFocusEvent((FocusEvent)e);
+ break;
default:
// Other event types are not handled here.
break;
- }
+ }
}
/**
@@ -574,13 +568,16 @@ public class SwingComponentPeer
* This is implemented to call repaint() on the Swing component.
*
* @param tm number of milliseconds to wait with repainting
- * @param x the X coordinate of the upper left corner of the damaged rectangle
- * @param y the Y coordinate of the upper left corner of the damaged rectangle
+ * @param x the X coordinate of the upper left corner of the damaged
+ * rectangle
+ * @param y the Y coordinate of the upper left corner of the damaged
+ * rectangle
* @param width the width of the damaged rectangle
* @param height the height of the damaged rectangle
*/
public void repaint(long tm, int x, int y, int width, int height)
{
+ // NOTE: This is never called by AWT but is mandated by the peer interface.
if (swingComponent != null)
swingComponent.getJComponent().repaint(tm, x, y, width, height);
else
@@ -602,8 +599,10 @@ public class SwingComponentPeer
*/
public void requestFocus()
{
- if (swingComponent != null)
- swingComponent.getJComponent().requestFocus();
+ // NOTE: This is never called by AWT but is mandated by the peer interface.
+ Toolkit tk = Toolkit.getDefaultToolkit();
+ EventQueue q = tk.getSystemEventQueue();
+ q.postEvent(new FocusEvent(awtComponent, FocusEvent.FOCUS_GAINED, false));
}
/**
@@ -612,18 +611,22 @@ public class SwingComponentPeer
*
* This calls requestFocus() on the Swing component.
*
- * @param source TODO
- * @param bool1 TODO
- * @param bool2 TODO
- * @param x TODO
+ * @param source the actual component that requests focus (may be a
+ * lightweight descendant of the heavyweight container)
+ * @param tmp true when the change is temporary
+ * @param allowWindowFocus
+ * @param tm the timestamp of the focus change
*
- * @return TODO
+ * @return true when the focus change is guaranteed to be granted, false
+ * otherwise
*/
- public boolean requestFocus(Component source, boolean bool1, boolean bool2, long x)
+ public boolean requestFocus(Component source, boolean tmp,
+ boolean allowWindowFocus, long tm)
{
- if (swingComponent != null)
- swingComponent.getJComponent().requestFocus();
- return swingComponent != null;
+ Toolkit tk = Toolkit.getDefaultToolkit();
+ EventQueue q = tk.getSystemEventQueue();
+ q.postEvent(new FocusEvent(source, FocusEvent.FOCUS_GAINED, tmp));
+ return true;
}
/**
@@ -1100,6 +1103,19 @@ public class SwingComponentPeer
swingComponent.handleKeyEvent(e);
}
+ /**
+ * Handles focus events on the component. This is usually forwarded to the
+ * SwingComponent's processFocusEvent() method.
+ *
+ * @param e the key event
+ */
+ protected void handleFocusEvent(FocusEvent e)
+ {
+ if (swingComponent != null)
+ swingComponent.handleFocusEvent(e);
+ }
+
+
/**
* Returns the AWT component for this peer.
*
@@ -1109,4 +1125,12 @@ public class SwingComponentPeer
{
return awtComponent;
}
+
+ public boolean requestFocus(Component lightweightChild, boolean temporary,
+ boolean focusedWindowChangeAllowed,
+ long time, sun.awt.CausedFocusEvent.Cause cause)
+ {
+ return true;
+ }
+
}
diff --git a/libjava/classpath/gnu/java/awt/peer/swing/SwingContainerPeer.java b/libjava/classpath/gnu/java/awt/peer/swing/SwingContainerPeer.java
index c78b644a765..2d5d97ff14b 100644
--- a/libjava/classpath/gnu/java/awt/peer/swing/SwingContainerPeer.java
+++ b/libjava/classpath/gnu/java/awt/peer/swing/SwingContainerPeer.java
@@ -1,5 +1,5 @@
/* SwingContainerPeer.java -- A Swing based peer for AWT containers
- Copyright (C) 2006 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2007 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -92,7 +92,7 @@ public class SwingContainerPeer
* @see #peerPaintChildren(Graphics)
* @see #removeHeavyweightDescendent(Component)
*/
- synchronized void addHeavyweightDescendent(Component comp)
+ protected synchronized void addHeavyweightDescendent(Component comp)
{
heavyweightDescendents.add(comp);
focusOwner = null;
@@ -106,12 +106,24 @@ public class SwingContainerPeer
* @see #peerPaintChildren(Graphics)
* @see #addHeavyweightDescendent(Component)
*/
- synchronized void removeHeavyweightDescendent(Component comp)
+ protected synchronized void removeHeavyweightDescendent(Component comp)
{
heavyweightDescendents.remove(comp);
focusOwner = null;
}
+ /**
+ * Returns an array of all registered heavyweight descendents.
+ *
+ * @return all registered heavyweight descendents
+ */
+ protected Component[] getHeavyweightDescendents()
+ {
+ Component[] heavyweights = new Component[heavyweightDescendents.size()];
+ heavyweights = (Component[]) heavyweightDescendents.toArray(heavyweights);
+ return heavyweights;
+ }
+
/**
* Returns the insets of the container.
*
@@ -339,7 +351,7 @@ public class SwingContainerPeer
{
Component owner = getFocusOwner();
if(owner != null)
- owner.dispatchEvent(e);
+ owner.getPeer().handleEvent(e);
else
super.handleKeyEvent(e);
}
diff --git a/libjava/classpath/gnu/java/awt/peer/swing/SwingLabelPeer.java b/libjava/classpath/gnu/java/awt/peer/swing/SwingLabelPeer.java
index 349c5a0abe2..55c394ecb6e 100644
--- a/libjava/classpath/gnu/java/awt/peer/swing/SwingLabelPeer.java
+++ b/libjava/classpath/gnu/java/awt/peer/swing/SwingLabelPeer.java
@@ -1,5 +1,5 @@
/* SwingLabelPeer.java -- A Swing based peer for AWT labels
- Copyright (C) 2006 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2007 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -42,6 +42,7 @@ import java.awt.Graphics;
import java.awt.Image;
import java.awt.Label;
import java.awt.Point;
+import java.awt.event.FocusEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.peer.LabelPeer;
@@ -119,6 +120,17 @@ public class SwingLabelPeer
processKeyEvent(ev);
}
+ /**
+ * Handles focus events by forwarding it to
+ * processFocusEvent()
.
+ *
+ * @param ev the Focus event
+ */
+ public void handleFocusEvent(FocusEvent ev)
+ {
+ processFocusEvent(ev);
+ }
+
/**
* Overridden so that this method returns the correct value even without a
* peer.
diff --git a/libjava/classpath/gnu/java/awt/peer/swing/SwingListPeer.java b/libjava/classpath/gnu/java/awt/peer/swing/SwingListPeer.java
index aca2070486d..22a6052bb7e 100644
--- a/libjava/classpath/gnu/java/awt/peer/swing/SwingListPeer.java
+++ b/libjava/classpath/gnu/java/awt/peer/swing/SwingListPeer.java
@@ -1,5 +1,5 @@
/* SwingListPeer.java -- A Swing based peer for AWT lists
- Copyright (C) 2006 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2007 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -46,6 +46,7 @@ import java.awt.Image;
import java.awt.List;
import java.awt.Point;
import java.awt.Rectangle;
+import java.awt.event.FocusEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.peer.ListPeer;
@@ -128,6 +129,17 @@ public class SwingListPeer
processKeyEvent(ev);
}
+ /**
+ * Handles focus events by forwarding it to processFocusEvent()
.
+ *
+ * @param ev the Focus event
+ */
+ public void handleFocusEvent(FocusEvent ev)
+ {
+ processFocusEvent(ev);
+ }
+
+
/**
* Overridden so that this method returns the correct value even without a
* peer.
diff --git a/libjava/classpath/gnu/java/awt/peer/swing/SwingPanelPeer.java b/libjava/classpath/gnu/java/awt/peer/swing/SwingPanelPeer.java
index 3cea62ac4d1..37c6dbc7a5b 100644
--- a/libjava/classpath/gnu/java/awt/peer/swing/SwingPanelPeer.java
+++ b/libjava/classpath/gnu/java/awt/peer/swing/SwingPanelPeer.java
@@ -1,5 +1,5 @@
/* SwingPanelPeer.java -- A PanelPeer based on Swing
- Copyright (C) 2006 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2007 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -47,7 +47,7 @@ import java.awt.peer.PanelPeer;
* @author Roman Kennke (kennke@aicas.com)
*/
// TODO: Maybe base implementation on JPanel. However, this doesn't seem
-// necessary, but might be good for more consistend Look.
+// necessary, but might be good for more consistent Look.
public class SwingPanelPeer
extends SwingContainerPeer
implements PanelPeer
diff --git a/libjava/classpath/gnu/java/awt/peer/swing/SwingTextAreaPeer.java b/libjava/classpath/gnu/java/awt/peer/swing/SwingTextAreaPeer.java
index 04ac011419f..2c438a1ccb1 100644
--- a/libjava/classpath/gnu/java/awt/peer/swing/SwingTextAreaPeer.java
+++ b/libjava/classpath/gnu/java/awt/peer/swing/SwingTextAreaPeer.java
@@ -1,5 +1,5 @@
/* SwingTextAreaPeer.java -- A Swing based peer for AWT textareas
- Copyright (C) 2006 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2007 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -45,14 +45,20 @@ import java.awt.Image;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.TextArea;
+import java.awt.event.ComponentEvent;
+import java.awt.event.FocusEvent;
+import java.awt.event.HierarchyEvent;
+import java.awt.event.InputMethodEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
+import java.awt.event.MouseWheelEvent;
import java.awt.im.InputMethodRequests;
import java.awt.peer.TextAreaPeer;
import javax.swing.JComponent;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
+import javax.swing.JViewport;
import javax.swing.text.BadLocationException;
public class SwingTextAreaPeer
@@ -65,15 +71,19 @@ public class SwingTextAreaPeer
*
* @author Roman Kennke (kennke@aicas.com)
*/
- private class SwingTextArea
+ private class SwingScrollPane
extends JScrollPane
implements SwingComponent
{
- SwingTextArea(Component comp)
+ SwingTextArea textArea;
+
+ SwingScrollPane(SwingTextArea textArea)
{
- super(comp, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
+ super(textArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
+
+ this.textArea = textArea;
}
/**
@@ -94,8 +104,17 @@ public class SwingTextAreaPeer
*/
public void handleMouseEvent(MouseEvent ev)
{
- ev.setSource(this);
- dispatchEvent(ev);
+ JViewport viewPort = getViewport();
+ if(viewPort.contains(ev.getPoint()))
+ {
+ ev.setSource(textArea);
+ textArea.dispatchEvent(ev);
+ }
+ else
+ {
+ ev.setSource(this);
+ this.dispatchEvent(ev);
+ }
}
/**
@@ -114,7 +133,7 @@ public class SwingTextAreaPeer
*/
public void handleMouseMotionEvent(MouseEvent ev)
{
- processMouseMotionEvent(ev);
+ textArea.processMouseMotionEvent(ev);
}
/**
@@ -124,7 +143,18 @@ public class SwingTextAreaPeer
*/
public void handleKeyEvent(KeyEvent ev)
{
- processKeyEvent(ev);
+ textArea.processKeyEvent(ev);
+ }
+
+ /**
+ * Handles focus events by forwarding it to
+ * processFocusEvent()
.
+ *
+ * @param ev the Focus event
+ */
+ public void handleFocusEvent(FocusEvent ev)
+ {
+ textArea.processFocusEvent(ev);
}
/**
@@ -179,35 +209,160 @@ public class SwingTextAreaPeer
par = SwingTextAreaPeer.this.awtComponent.getParent();
return par;
}
+
+ public void requestFocus() {
+ SwingTextAreaPeer.this.requestFocus(awtComponent, false, true, 0);
+ }
+
+ public boolean requestFocus(boolean temporary) {
+ return SwingTextAreaPeer.this.requestFocus(awtComponent, temporary,
+ true, 0);
+ }
+
}
+ private class SwingTextArea extends JTextArea
+ {
+ /**
+ * Make this method accessible in this Package.
+ */
+ protected final void processComponentKeyEvent(KeyEvent e)
+ {
+ super.processComponentKeyEvent(e);
+ }
+
+ /**
+ * Make this method accessible in this Package.
+ */
+ protected final void processMouseMotionEvent(MouseEvent ev)
+ {
+ super.processMouseMotionEvent(ev);
+ }
+
+ /**
+ * Make this method accessible in this Package.
+ */
+ protected final void processComponentEvent(ComponentEvent e)
+ {
+ super.processComponentEvent(e);
+ }
+
+ /**
+ * Make this method accessible in this Package.
+ */
+ protected final void processFocusEvent(FocusEvent e)
+ {
+ super.processFocusEvent(e);
+ }
+
+ /**
+ * Make this method accessible in this Package.
+ */
+ protected final void processHierarchyBoundsEvent(HierarchyEvent e)
+ {
+ super.processHierarchyBoundsEvent(e);
+ }
+
+ /**
+ * Make this method accessible in this Package.
+ */
+ protected final void processHierarchyEvent(HierarchyEvent e)
+ {
+ super.processHierarchyEvent(e);
+ }
+
+ /**
+ * Make this method accessible in this Package.
+ */
+ protected final void processInputMethodEvent(InputMethodEvent e)
+ {
+ super.processInputMethodEvent(e);
+ }
+
+ /**
+ * Make this method accessible in this Package.
+ */
+ protected final void processMouseEvent(MouseEvent e)
+ {
+ super.processMouseEvent(e);
+ }
+
+ /**
+ * Make this method accessible in this Package.
+ */
+ protected final void processMouseWheelEvent(MouseWheelEvent e)
+ {
+ super.processMouseWheelEvent(e);
+ }
+
+ /**
+ * Make this method accessible in this Package.
+ */
+ protected final void processKeyEvent(KeyEvent e)
+ {
+ super.processKeyEvent(e);
+ }
+
+ public void requestFocus() {
+ SwingTextAreaPeer.this.requestFocus(awtComponent, false, true, 0);
+ }
+
+ public boolean requestFocus(boolean temporary) {
+ return SwingTextAreaPeer.this.requestFocus(awtComponent, temporary,
+ true, 0);
+ }
+ }
+
/**
* The actual JTextArea.
*/
- private JTextArea jTextArea;
+ private SwingTextArea jTextArea;
public SwingTextAreaPeer(TextArea textArea)
{
super();
- System.err.println("new SwingTextAreaPeer");
- jTextArea = new JTextArea();
- SwingTextArea swingArea = new SwingTextArea(jTextArea);
+ jTextArea = new SwingTextArea();
+ SwingScrollPane swingArea = new SwingScrollPane(jTextArea);
init(textArea, swingArea);
+ JViewport viewport = new JViewport()
+ {
+ public Image createImage(int width, int height)
+ {
+ return awtComponent.createImage(width, height);
+ }
+ };
+
+ viewport.setView(jTextArea);
+ swingArea.setViewport(viewport);
// Pull over the text from the text area.
setText(textArea.getText());
+
+ // Pull over the number of rows and columns
+ // if non were set use default values
+ int columns = textArea.getColumns();
+ int rows = textArea.getRows();
+
+ if(columns == 0 && rows == 0)
+ {
+ columns = 25;
+ textArea.setColumns(columns);
+ rows = 5;
+ textArea.setRows(rows);
+ }
+
+ jTextArea.setColumns(columns);
+ jTextArea.setRows(rows);
}
public Dimension getMinimumSize(int rows, int cols)
{
- // TODO Auto-generated method stub
- return null;
+ return jTextArea.getMinimumSize();
}
public Dimension getPreferredSize(int rows, int cols)
{
- // TODO Auto-generated method stub
- return null;
+ return jTextArea.getPreferredSize();
}
public void insert(String text, int pos)
@@ -220,16 +375,24 @@ public class SwingTextAreaPeer
jTextArea.insert(text, pos);
}
+ public Dimension minimumSize()
+ {
+ return jTextArea.getMinimumSize();
+ }
+
+ public Dimension preferredSize()
+ {
+ return jTextArea.getPreferredSize();
+ }
+
public Dimension minimumSize(int rows, int cols)
{
- // TODO Auto-generated method stub
- return null;
+ return jTextArea.getMinimumSize();
}
public Dimension preferredSize(int rows, int cols)
{
- // TODO Auto-generated method stub
- return null;
+ return jTextArea.getPreferredSize();
}
public void replaceRange(String text, int start, int end)
@@ -310,8 +473,16 @@ public class SwingTextAreaPeer
public void setText(String text)
{
- System.err.println("setText: " + text);
jTextArea.setText(text);
}
+ public void reshape(int x, int y, int width, int height)
+ {
+ if (swingComponent != null)
+ {
+ swingComponent.getJComponent().setBounds(x, y, width, height);
+ swingComponent.getJComponent().validate();
+ }
+ }
+
}
diff --git a/libjava/classpath/gnu/java/awt/peer/swing/SwingTextFieldPeer.java b/libjava/classpath/gnu/java/awt/peer/swing/SwingTextFieldPeer.java
index d7d574a0bb9..29a689da42a 100644
--- a/libjava/classpath/gnu/java/awt/peer/swing/SwingTextFieldPeer.java
+++ b/libjava/classpath/gnu/java/awt/peer/swing/SwingTextFieldPeer.java
@@ -1,5 +1,5 @@
/* SwingTextFieldPeer.java -- A Swing based peer for AWT textfields
- Copyright (C) 2006 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2007 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -44,6 +44,7 @@ import java.awt.Image;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.TextField;
+import java.awt.event.FocusEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.im.InputMethodRequests;
@@ -72,13 +73,13 @@ public class SwingTextFieldPeer
implements SwingComponent
{
- TextField textField;
-
- SwingTextField(TextField textField)
- {
- this.textField = textField;
- }
-
+ TextField textField;
+
+ SwingTextField(TextField textField)
+ {
+ this.textField = textField;
+ }
+
/**
* Overridden to provide normal behaviour even without a real peer
* attached.
@@ -91,8 +92,8 @@ public class SwingTextFieldPeer
}
/**
- * Overridden so that the isShowing method returns the correct value for the
- * swing button, even if it has no peer on its own.
+ * Overridden so that the isShowing method returns the correct value
+ * for the swing button, even if it has no peer on its own.
*
* @return true
if the button is currently showing,
* false
otherwise
@@ -162,6 +163,18 @@ public class SwingTextFieldPeer
processKeyEvent(ev);
}
+ /**
+ * Handles focus events by forwarding it to
+ * processFocusEvent()
.
+ *
+ * @param ev the Focus event
+ */
+ public void handleFocusEvent(FocusEvent ev)
+ {
+ processFocusEvent(ev);
+ }
+
+
public Container getParent()
{
Container par = null;
@@ -174,6 +187,16 @@ public class SwingTextFieldPeer
{
return SwingTextFieldPeer.this.getGraphics();
}
+
+ public void requestFocus() {
+ SwingTextFieldPeer.this.requestFocus(awtComponent, false, true, 0);
+ }
+
+ public boolean requestFocus(boolean temporary) {
+ return SwingTextFieldPeer.this.requestFocus(awtComponent, temporary,
+ true, 0);
+ }
+
}
/**
diff --git a/libjava/classpath/gnu/java/awt/peer/swing/SwingToolkit.java b/libjava/classpath/gnu/java/awt/peer/swing/SwingToolkit.java
index 166e1f47b6f..63414050bfe 100644
--- a/libjava/classpath/gnu/java/awt/peer/swing/SwingToolkit.java
+++ b/libjava/classpath/gnu/java/awt/peer/swing/SwingToolkit.java
@@ -40,6 +40,7 @@ package gnu.java.awt.peer.swing;
import java.awt.Button;
import java.awt.Canvas;
+import java.awt.Dialog;
import java.awt.Label;
import java.awt.Menu;
import java.awt.MenuBar;
@@ -162,4 +163,19 @@ public abstract class SwingToolkit extends ClasspathToolkit
{
return new SwingTextFieldPeer(textField);
}
+
+ @Override
+ public boolean isModalExclusionTypeSupported
+ (Dialog.ModalExclusionType modalExclusionType)
+ {
+ return false;
+ }
+
+ @Override
+ public boolean isModalityTypeSupported(Dialog.ModalityType modalityType)
+ {
+ return false;
+ }
+
+
}
diff --git a/libjava/classpath/gnu/java/awt/peer/swing/SwingWindowPeer.java b/libjava/classpath/gnu/java/awt/peer/swing/SwingWindowPeer.java
index 531552d902c..bdc494e958c 100644
--- a/libjava/classpath/gnu/java/awt/peer/swing/SwingWindowPeer.java
+++ b/libjava/classpath/gnu/java/awt/peer/swing/SwingWindowPeer.java
@@ -71,4 +71,29 @@ public abstract class SwingWindowPeer
super(window);
init(window, null);
}
+
+ public void updateIconImages()
+ {
+ // TODO: Implement properly.
+ }
+
+ public void updateMinimumSize()
+ {
+ // TODO: Implement properly.
+ }
+
+ public void setModalBlocked(java.awt.Dialog d, boolean b)
+ {
+ // TODO: Implement properly.
+ }
+
+ public void updateFocusableWindowState()
+ {
+ // TODO: Implement properly.
+ }
+
+ public void setAlwaysOnTop(boolean b)
+ {
+ // TODO: Implement properly.
+ }
}
diff --git a/libjava/classpath/gnu/java/awt/peer/x/KeyboardMapping.java b/libjava/classpath/gnu/java/awt/peer/x/KeyboardMapping.java
index 8e0a31f5d36..8cda31d81dd 100644
--- a/libjava/classpath/gnu/java/awt/peer/x/KeyboardMapping.java
+++ b/libjava/classpath/gnu/java/awt/peer/x/KeyboardMapping.java
@@ -405,8 +405,12 @@ final class KeyboardMapping
if ((xMods & Input.SHIFT_MASK) != 0)
mods |= KeyEvent.SHIFT_MASK | KeyEvent.SHIFT_DOWN_MASK;
+ if ((xMods & Input.META_MASK) != 0)
+ mods |= KeyEvent.META_MASK | KeyEvent.META_DOWN_MASK;
if ((xMods & Input.ALT_MASK) != 0)
mods |= KeyEvent.ALT_MASK | KeyEvent.ALT_DOWN_MASK;
+ if ((xMods & Input.MOD5_MASK) != 0)
+ mods |= KeyEvent.ALT_GRAPH_MASK | KeyEvent.ALT_GRAPH_DOWN_MASK;
if ((xMods & Input.CONTROL_MASK) != 0)
mods |= KeyEvent.CTRL_MASK | KeyEvent.CTRL_DOWN_MASK;
diff --git a/libjava/classpath/gnu/java/awt/peer/x/PixmapVolatileImage.java b/libjava/classpath/gnu/java/awt/peer/x/PixmapVolatileImage.java
new file mode 100644
index 00000000000..131647fab29
--- /dev/null
+++ b/libjava/classpath/gnu/java/awt/peer/x/PixmapVolatileImage.java
@@ -0,0 +1,185 @@
+/* PixmapVolatileImage.java -- VolatileImage implementation around a Pixmap
+ Copyright (C) 2007 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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 for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.java.awt.peer.x;
+
+import gnu.x11.GC;
+import gnu.x11.Pixmap;
+import gnu.x11.image.Image;
+import gnu.x11.image.ZPixmap;
+
+import java.awt.Graphics2D;
+import java.awt.GraphicsConfiguration;
+import java.awt.GraphicsEnvironment;
+import java.awt.ImageCapabilities;
+import java.awt.Point;
+import java.awt.Transparency;
+import java.awt.color.ColorSpace;
+import java.awt.image.BufferedImage;
+import java.awt.image.ColorModel;
+import java.awt.image.ComponentColorModel;
+import java.awt.image.ComponentSampleModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.ImageObserver;
+import java.awt.image.Raster;
+import java.awt.image.SampleModel;
+import java.awt.image.VolatileImage;
+import java.awt.image.WritableRaster;
+
+/**
+ * A {@link VolatileImage} implementation that wraps an X Pixmap.
+ */
+class PixmapVolatileImage
+ extends VolatileImage
+{
+
+ /**
+ * The shared capabilities instance.
+ */
+ private static final ImageCapabilities caps = new ImageCapabilities(true);
+
+ /**
+ * The underlying pixmap.
+ */
+ private Pixmap pixmap;
+
+ /**
+ * Creates a new PixmapVolatileImage.
+ *
+ * @param w the width of the image
+ * @param h the height of the image
+ */
+ public PixmapVolatileImage(int w, int h)
+ {
+ GraphicsEnvironment env =
+ GraphicsEnvironment.getLocalGraphicsEnvironment();
+ XGraphicsDevice dev = (XGraphicsDevice) env.getDefaultScreenDevice();
+ pixmap = new Pixmap(dev.getDisplay(), w, h);
+
+ // Clear pixmap.
+ GC gc = new GC(pixmap);
+ gc.set_foreground(0xffffffff);
+ pixmap.fill_rectangle(gc, 0, 0, w, h);
+
+ }
+
+ @Override
+ public boolean contentsLost()
+ {
+ return false;
+ }
+
+ @Override
+ public Graphics2D createGraphics()
+ {
+ return new XGraphics2D(pixmap);
+ }
+
+ @Override
+ public ImageCapabilities getCapabilities()
+ {
+ return caps;
+ }
+
+ @Override
+ public int getHeight()
+ {
+ return pixmap.height;
+ }
+
+ @Override
+ public BufferedImage getSnapshot()
+ {
+ // TODO: Support non-24-bit resolutions.
+ int w = pixmap.width;
+ int h = pixmap.height;
+ ZPixmap zpixmap = (ZPixmap) pixmap.image(0, 0, w, h, 0xffffffff,
+ Image.Format.ZPIXMAP);
+ DataBuffer buffer = new ZPixmapDataBuffer(zpixmap);
+ SampleModel sm = new ComponentSampleModel(DataBuffer.TYPE_BYTE, w, h, 4,
+ w * 4,
+ new int[]{0, 1, 2, 3 });
+ ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_LINEAR_RGB);
+ ColorModel cm = new ComponentColorModel(cs, true, false,
+ Transparency.OPAQUE,
+ DataBuffer.TYPE_BYTE);
+ WritableRaster raster = Raster.createWritableRaster(sm, buffer,
+ new Point(0, 0));
+ return new BufferedImage(cm, raster, false, null);
+ }
+
+ @Override
+ public int getWidth()
+ {
+ return pixmap.width;
+ }
+
+ @Override
+ public int validate(GraphicsConfiguration gc)
+ {
+ // TODO: Check compatibility with gc.
+ return IMAGE_OK;
+ }
+
+ @Override
+ public int getHeight(ImageObserver observer)
+ {
+ return getHeight();
+ }
+
+ @Override
+ public Object getProperty(String name, ImageObserver observer)
+ {
+ return null;
+ }
+
+ @Override
+ public int getWidth(ImageObserver observer)
+ {
+ return getWidth();
+ }
+
+ /**
+ * Returns the underlying X pixmap. This is used for the graphics code.
+ *
+ * @return the underlying X pixmap
+ */
+ Pixmap getPixmap()
+ {
+ return pixmap;
+ }
+}
diff --git a/libjava/classpath/gnu/java/awt/peer/x/XEventPump.java b/libjava/classpath/gnu/java/awt/peer/x/XEventPump.java
index 870edf3796d..d376619c595 100644
--- a/libjava/classpath/gnu/java/awt/peer/x/XEventPump.java
+++ b/libjava/classpath/gnu/java/awt/peer/x/XEventPump.java
@@ -97,8 +97,9 @@ public class XEventPump
display = d;
windows = new HashMap();
drag = -1;
- Thread t = new Thread(this);
- t.start();
+ Thread thread = new Thread(this, "X Event Pump");
+ thread.setDaemon(true);
+ thread.start();
}
/**
@@ -148,8 +149,9 @@ public class XEventPump
private void handleEvent(Event xEvent)
{
- Integer key = new Integer(xEvent.window_id());;
- Window awtWindow = (Window) windows.get(key);
+
+ Integer key = null;
+ Window awtWindow = null;
if (XToolkit.DEBUG)
System.err.println("fetched event: " + xEvent);
@@ -157,26 +159,45 @@ public class XEventPump
{
case ButtonPress.CODE:
ButtonPress bp = (ButtonPress) xEvent;
+ key= new Integer(bp.event_window_id);
+ awtWindow = (Window) windows.get(key);
// Create and post the mouse event.
int button = bp.detail();
+
+ // AWT cannot handle more than 3 buttons and expects 0 instead.
+ if (button >= gnu.x11.Input.BUTTON3)
+ button = 0;
drag = button;
+
MouseEvent mp = new MouseEvent(awtWindow, MouseEvent.MOUSE_PRESSED,
- System.currentTimeMillis(), 0,
+ System.currentTimeMillis(),
+ KeyboardMapping.mapModifiers(bp.state()) | buttonToModifier(button),
bp.event_x(), bp.event_y(),
1, false, button);
Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(mp);
break;
case ButtonRelease.CODE:
ButtonRelease br = (ButtonRelease) xEvent;
+ key= new Integer(br.event_window_id);
+ awtWindow = (Window) windows.get(key);
+
+ button = br.detail();
+ // AWT cannot handle more than 3 buttons and expects 0 instead.
+ if (button >= gnu.x11.Input.BUTTON3)
+ button = 0;
drag = -1;
MouseEvent mr = new MouseEvent(awtWindow, MouseEvent.MOUSE_RELEASED,
- System.currentTimeMillis(), 0,
+ System.currentTimeMillis(),
+ KeyboardMapping.mapModifiers(br.state()) | buttonToModifier(button),
br.event_x(), br.event_y(),
- 1, false, br.detail());
+ 1, false, button);
Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(mr);
break;
case MotionNotify.CODE:
MotionNotify mn = (MotionNotify) xEvent;
+ key= new Integer(mn.event_window_id);
+ awtWindow = (Window) windows.get(key);
+
MouseEvent mm;
if (drag == -1)
{
@@ -195,6 +216,8 @@ public class XEventPump
Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(mm);
break;
case ConfigureNotify.CODE:
+ key= new Integer(((ConfigureNotify) xEvent).event_window_id);
+ awtWindow = (Window) windows.get(key);
ConfigureNotify c = (ConfigureNotify) xEvent;
if (XToolkit.DEBUG)
System.err.println("resize request for window id: " + key);
@@ -213,6 +236,8 @@ public class XEventPump
}
break;
case Expose.CODE:
+ key= new Integer(((Expose) xEvent).window_id);
+ awtWindow = (Window) windows.get(key);
Expose exp = (Expose) xEvent;
if (XToolkit.DEBUG)
System.err.println("expose request for window id: " + key);
@@ -228,6 +253,8 @@ public class XEventPump
break;
case KeyPress.CODE:
case KeyRelease.CODE:
+ key = new Integer(((Input) xEvent).event_window_id);
+ awtWindow = (Window) windows.get(key);
handleKeyEvent(xEvent, awtWindow);
break;
default:
@@ -282,6 +309,23 @@ public class XEventPump
}
+ /** Translates an X button identifier to the AWT's MouseEvent modifier
+ * mask. As the AWT cannot handle more than 3 buttons those return
+ * 0
.
+ */
+ static int buttonToModifier(int button)
+ {
+ switch (button)
+ {
+ case gnu.x11.Input.BUTTON1:
+ return MouseEvent.BUTTON1_DOWN_MASK | MouseEvent.BUTTON1_MASK;
+ case gnu.x11.Input.BUTTON2:
+ return MouseEvent.BUTTON2_DOWN_MASK | MouseEvent.BUTTON2_MASK;
+ case gnu.x11.Input.BUTTON3:
+ return MouseEvent.BUTTON3_DOWN_MASK | MouseEvent.BUTTON3_MASK;
+ }
+
+ return 0;
+ }
}
-
diff --git a/libjava/classpath/gnu/java/awt/peer/x/XFontPeer.java b/libjava/classpath/gnu/java/awt/peer/x/XFontPeer.java
deleted file mode 100644
index 8183fed0cd2..00000000000
--- a/libjava/classpath/gnu/java/awt/peer/x/XFontPeer.java
+++ /dev/null
@@ -1,759 +0,0 @@
-/* XFontPeer.java -- The font peer for X
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath 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 for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package gnu.java.awt.peer.x;
-
-import java.awt.AWTError;
-import java.awt.Font;
-import java.awt.FontMetrics;
-import java.awt.GraphicsDevice;
-import java.awt.GraphicsEnvironment;
-import java.awt.font.FontRenderContext;
-import java.awt.font.GlyphVector;
-import java.awt.font.LineMetrics;
-import java.awt.font.TextAttribute;
-import java.awt.geom.Rectangle2D;
-import java.io.IOException;
-import java.io.InputStream;
-import java.text.CharacterIterator;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Properties;
-
-import gnu.java.awt.peer.ClasspathFontPeer;
-import gnu.x11.Display;
-import gnu.x11.Fontable;
-
-/**
- * The bridge from AWT to X fonts.
- *
- * @author Roman Kennke (kennke@aicas.com)
- */
-public class XFontPeer
- extends ClasspathFontPeer
-{
-
- /**
- * The font mapping as specified in the file fonts.properties.
- */
- private static Properties fontProperties;
- static
- {
- fontProperties = new Properties();
- InputStream in = XFontPeer.class.getResourceAsStream("fonts.properties");
- try
- {
- fontProperties.load(in);
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- }
-
- /**
- * The FontMetrics implementation for XFontPeer.
- */
- private class XFontMetrics
- extends FontMetrics
- {
- /**
- * The ascent of the font.
- */
- int ascent;
-
- /**
- * The descent of the font.
- */
- int descent;
-
- /**
- * The maximum of the character advances.
- */
- private int maxAdvance;
-
- /**
- * The internal leading.
- */
- int leading;
-
- /**
- * Cached string metrics. This caches string metrics locally so that the
- * server doesn't have to be asked each time.
- */
- private HashMap metricsCache;
-
- /**
- * The widths of the characters indexed by the characters themselves.
- */
- private int[] charWidths;
-
- /**
- * Creates a new XFontMetrics for the specified font.
- *
- * @param font the font
- */
- protected XFontMetrics(Font font)
- {
- super(font);
- metricsCache = new HashMap();
- Fontable.FontReply info = getXFont().info();
- ascent = info.font_ascent();
- descent = info.font_descent();
- maxAdvance = info.max_bounds().character_width();
- leading = 0; // TODO: Not provided by X. Possible not needed.
-
- if (info.min_byte1() == 0 && info.max_byte1() == 0)
- readCharWidthsLinear(info);
- else
- readCharWidthsNonLinear(info);
- }
-
- /**
- * Reads the character widths when specified in a linear fashion. That is
- * when the min-byte1 and max-byte2 fields are both zero in the X protocol.
- *
- * @param info the font info reply
- */
- private void readCharWidthsLinear(Fontable.FontReply info)
- {
- int startIndex = info.min_char_or_byte2();
- int endIndex = info.max_char_or_byte2();
- charWidths = new int[endIndex + 1];
- // All the characters before startIndex are zero width.
- for (int i = 0; i < startIndex; i++)
- {
- charWidths[i] = 0;
- }
- // All the other character info is fetched from the font info.
- int index = startIndex;
- Iterator charInfos = info.char_infos().iterator();
- while (charInfos.hasNext())
- {
- Fontable.FontReply.CharInfo charInfo =
- (Fontable.FontReply.CharInfo) charInfos.next();
- charWidths[index] = charInfo.character_width();
- index++;
- }
- }
-
- private void readCharWidthsNonLinear(Fontable.FontReply info)
- {
- // TODO: Implement.
- throw new UnsupportedOperationException("Not yet implemented");
- }
-
- /**
- * Returns the ascent of the font.
- *
- * @return the ascent of the font
- */
- public int getAscent()
- {
- return ascent;
- }
-
- /**
- * Returns the descent of the font.
- *
- * @return the descent of the font
- */
- public int getDescent()
- {
- return descent;
- }
-
- /**
- * Returns the overall height of the font. This is the distance from
- * baseline to baseline (usually ascent + descent + leading).
- *
- * @return the overall height of the font
- */
- public int getHeight()
- {
- return ascent + descent;
- }
-
- /**
- * Returns the leading of the font.
- *
- * @return the leading of the font
- */
- public int getLeading()
- {
- return leading;
- }
-
- /**
- * Returns the maximum advance for this font.
- *
- * @return the maximum advance for this font
- */
- public int getMaxAdvance()
- {
- return maxAdvance;
- }
-
- /**
- * Determines the width of the specified character c
.
- *
- * @param c the character
- *
- * @return the width of the character
- */
- public int charWidth(char c)
- {
- int width;
- if (c > charWidths.length)
- width = charWidths['?'];
- else
- width = charWidths[c];
- return width;
- }
-
- /**
- * Determines the overall width of the specified string.
- *
- * @param c the char buffer holding the string
- * @param offset the starting offset of the string in the buffer
- * @param length the number of characters in the string buffer
- *
- * @return the overall width of the specified string
- */
- public int charsWidth(char[] c, int offset, int length)
- {
- int width = 0;
- if (c.length > 0 && length > 0)
- {
- String s = new String(c, offset, length);
- width = stringWidth(s);
- }
- return width;
- }
-
- /**
- * Determines the overall width of the specified string.
- *
- * @param s the string
- *
- * @return the overall width of the specified string
- */
- public int stringWidth(String s)
- {
- int width = 0;
- if (s.length() > 0)
- {
- if (metricsCache.containsKey(s))
- {
- width = ((Integer) metricsCache.get(s)).intValue();
- }
- else
- {
- Fontable.TextExtentReply extents = getXFont().text_extent(s);
- /*
- System.err.println("string: '" + s + "' : ");
- System.err.println("ascent: " + extents.getAscent());
- System.err.println("descent: " + extents.getDescent());
- System.err.println("overall ascent: " + extents.getOverallAscent());
- System.err.println("overall descent: " + extents.getOverallDescent());
- System.err.println("overall width: " + extents.getOverallWidth());
- System.err.println("overall left: " + extents.getOverallLeft());
- System.err.println("overall right: " + extents.getOverallRight());
- */
- width = extents.overall_width(); // + extents.overall_left();
- //System.err.println("String: " + s + ", width: " + width);
- metricsCache.put(s, new Integer(width));
- }
- }
- //System.err.print("stringWidth: '" + s + "': ");
- //System.err.println(width);
- return width;
- }
- }
-
- /**
- * The LineMetrics implementation for the XFontPeer.
- */
- private class XLineMetrics
- extends LineMetrics
- {
-
- /**
- * Returns the ascent of the font.
- *
- * @return the ascent of the font
- */
- public float getAscent()
- {
- return fontMetrics.ascent;
- }
-
- public int getBaselineIndex()
- {
- // FIXME: Implement this.
- throw new UnsupportedOperationException();
- }
-
- public float[] getBaselineOffsets()
- {
- // FIXME: Implement this.
- throw new UnsupportedOperationException();
- }
-
- /**
- * Returns the descent of the font.
- *
- * @return the descent of the font
- */
- public float getDescent()
- {
- return fontMetrics.descent;
- }
-
- /**
- * Returns the overall height of the font. This is the distance from
- * baseline to baseline (usually ascent + descent + leading).
- *
- * @return the overall height of the font
- */
- public float getHeight()
- {
- return fontMetrics.ascent + fontMetrics.descent;
- }
-
- /**
- * Returns the leading of the font.
- *
- * @return the leading of the font
- */
- public float getLeading()
- {
- return fontMetrics.leading;
- }
-
- public int getNumChars()
- {
- // FIXME: Implement this.
- throw new UnsupportedOperationException();
- }
-
- public float getStrikethroughOffset()
- {
- return 0.F; // TODO: Provided by X??
- }
-
- public float getStrikethroughThickness()
- {
- return 1.F; // TODO: Provided by X??
- }
-
- public float getUnderlineOffset()
- {
- return 0.F; // TODO: Provided by X??
- }
-
- public float getUnderlineThickness()
- {
- return 1.F; // TODO: Provided by X??
- }
-
- }
-
- /**
- * The X font.
- */
- private gnu.x11.Font xfont;
-
- private String name;
-
- private int style;
-
- private int size;
-
- /**
- * The font metrics for this font.
- */
- XFontMetrics fontMetrics;
-
- /**
- * Creates a new XFontPeer for the specified font name, style and size.
- *
- * @param name the font name
- * @param style the font style (bold / italic / normal)
- * @param size the size of the font
- */
- public XFontPeer(String name, int style, int size)
- {
- super(name, style, size);
- this.name = name;
- this.style = style;
- this.size = size;
- }
-
- /**
- * Creates a new XFontPeer for the specified font name and style
- * attributes.
- *
- * @param name the font name
- * @param atts the font attributes
- */
- public XFontPeer(String name, Map atts)
- {
- super(name, atts);
- String family = name;
- if (family == null || family.equals(""))
- family = (String) atts.get(TextAttribute.FAMILY);
- if (family == null)
- family = "SansSerif";
-
- int size = 12;
- Float sizeFl = (Float) atts.get(TextAttribute.SIZE);
- if (sizeFl != null)
- size = sizeFl.intValue();
-
- int style = 0;
- // Detect italic attribute.
- Float posture = (Float) atts.get(TextAttribute.POSTURE);
- if (posture != null && !posture.equals(TextAttribute.POSTURE_REGULAR))
- style |= Font.ITALIC;
-
- // Detect bold attribute.
- Float weight = (Float) atts.get(TextAttribute.WEIGHT);
- if (weight != null && weight.compareTo(TextAttribute.WEIGHT_REGULAR) > 0)
- style |= Font.BOLD;
-
- this.name = name;
- this.style = style;
- this.size = size;
- }
-
- /**
- * Initializes the font peer with the specified attributes. This method is
- * called from both constructors.
- *
- * @param name the font name
- * @param style the font style
- * @param size the font size
- */
- private void init(String name, int style, int size)
- {
- GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
- GraphicsDevice dev = env.getDefaultScreenDevice();
- if (dev instanceof XGraphicsDevice)
- {
- Display display = ((XGraphicsDevice) dev).getDisplay();
- String fontDescr = encodeFont(name, style, size);
- if (XToolkit.DEBUG)
- System.err.println("XLFD font description: " + fontDescr);
- xfont = new gnu.x11.Font(display, fontDescr);
- }
- else
- {
- throw new AWTError("Local GraphicsEnvironment is not XWindowGraphicsEnvironment");
- }
- }
-
- public boolean canDisplay(Font font, char c)
- {
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
- }
-
- public int canDisplayUpTo(Font font, CharacterIterator i, int start, int limit)
- {
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
- }
-
- public String getSubFamilyName(Font font, Locale locale)
- {
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
- }
-
- public String getPostScriptName(Font font)
- {
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
- }
-
- public int getNumGlyphs(Font font)
- {
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
- }
-
- public int getMissingGlyphCode(Font font)
- {
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
- }
-
- public byte getBaselineFor(Font font, char c)
- {
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
- }
-
- public String getGlyphName(Font font, int glyphIndex)
- {
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
- }
-
- public GlyphVector createGlyphVector(Font font, FontRenderContext frc,
- CharacterIterator ci)
- {
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
- }
-
- public GlyphVector createGlyphVector(Font font, FontRenderContext ctx,
- int[] glyphCodes)
- {
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
- }
-
- public GlyphVector layoutGlyphVector(Font font, FontRenderContext frc,
- char[] chars, int start, int limit,
- int flags)
- {
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
- }
-
- /**
- * Returns the font metrics for the specified font.
- *
- * @param font the font for which to fetch the font metrics
- *
- * @return the font metrics for the specified font
- */
- public FontMetrics getFontMetrics(Font font)
- {
- if (font.getPeer() != this)
- throw new AWTError("The specified font has a different peer than this");
-
- if (fontMetrics == null)
- fontMetrics = new XFontMetrics(font);
- return fontMetrics;
- }
-
- /**
- * Frees the font in the X server.
- */
- protected void finalize()
- {
- if (xfont != null)
- xfont.close();
- }
-
- public boolean hasUniformLineMetrics(Font font)
- {
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
- }
-
- /**
- * Returns the line metrics for this font and the specified string and
- * font render context.
- */
- public LineMetrics getLineMetrics(Font font, CharacterIterator ci, int begin,
- int limit, FontRenderContext rc)
- {
- return new XLineMetrics();
- }
-
- public Rectangle2D getMaxCharBounds(Font font, FontRenderContext rc)
- {
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
- }
-
- /**
- * Encodes a font name + style + size specification into a X logical font
- * description (XLFD) as described here:
- *
- * http://www.meretrx.com/e93/docs/xlfd.html
- *
- * This is implemented to look up the font description in the
- * fonts.properties of this package.
- *
- * @param name the font name
- * @param atts the text attributes
- *
- * @return the encoded font description
- */
- static String encodeFont(String name, Map atts)
- {
- String family = name;
- if (family == null || family.equals(""))
- family = (String) atts.get(TextAttribute.FAMILY);
- if (family == null)
- family = "SansSerif";
-
- int size = 12;
- Float sizeFl = (Float) atts.get(TextAttribute.SIZE);
- if (sizeFl != null)
- size = sizeFl.intValue();
-
- int style = 0;
- // Detect italic attribute.
- Float posture = (Float) atts.get(TextAttribute.POSTURE);
- if (posture != null && !posture.equals(TextAttribute.POSTURE_REGULAR))
- style |= Font.ITALIC;
-
- // Detect bold attribute.
- Float weight = (Float) atts.get(TextAttribute.WEIGHT);
- if (weight != null && weight.compareTo(TextAttribute.WEIGHT_REGULAR) > 0)
- style |= Font.BOLD;
-
- return encodeFont(name, style, size);
- }
-
- /**
- * Encodes a font name + style + size specification into a X logical font
- * description (XLFD) as described here:
- *
- * http://www.meretrx.com/e93/docs/xlfd.html
- *
- * This is implemented to look up the font description in the
- * fonts.properties of this package.
- *
- * @param name the font name
- * @param style the font style
- * @param size the font size
- *
- * @return the encoded font description
- */
- static String encodeFont(String name, int style, int size)
- {
- StringBuilder key = new StringBuilder();
- key.append(validName(name));
- key.append('.');
- switch (style)
- {
- case Font.BOLD:
- key.append("bold");
- break;
- case Font.ITALIC:
- key.append("italic");
- break;
- case (Font.BOLD | Font.ITALIC):
- key.append("bolditalic");
- break;
- case Font.PLAIN:
- default:
- key.append("plain");
-
- }
-
- String protoType = fontProperties.getProperty(key.toString());
- int s = validSize(size);
- return protoType.replaceFirst("%d", String.valueOf(s * 10));
- }
-
- /**
- * Checks the specified font name for a valid font name. If the font name
- * is not known, then this returns 'sansserif' as fallback.
- *
- * @param name the font name to check
- *
- * @return a valid font name
- */
- static String validName(String name)
- {
- String retVal;
- if (name.equalsIgnoreCase("sansserif")
- || name.equalsIgnoreCase("serif")
- || name.equalsIgnoreCase("monospaced")
- || name.equalsIgnoreCase("dialog")
- || name.equalsIgnoreCase("dialoginput"))
- {
- retVal = name.toLowerCase();
- }
- else
- {
- retVal = "sansserif";
- }
- return retVal;
- }
-
- /**
- * Translates an arbitrary point size to a size that is typically available
- * on an X server. These are the sizes 8, 10, 12, 14, 18 and 24.
- *
- * @param size the queried size
- * @return the real available size
- */
- private static final int validSize(int size)
- {
- int val;
- if (size <= 9)
- val = 8;
- else if (size <= 11)
- val = 10;
- else if (size <= 13)
- val = 12;
- else if (size <= 17)
- val = 14;
- else if (size <= 23)
- val = 18;
- else
- val = 24;
- return val;
- }
-
- /**
- * Returns the X Font reference. This lazily loads the font when first
- * requested.
- *
- * @return the X Font reference
- */
- gnu.x11.Font getXFont()
- {
- if (xfont == null)
- {
- init(name, style, size);
- }
- return xfont;
- }
-}
diff --git a/libjava/classpath/gnu/java/awt/peer/x/XFontPeer2.java b/libjava/classpath/gnu/java/awt/peer/x/XFontPeer2.java
index ef9507f3050..ab3861be1a9 100644
--- a/libjava/classpath/gnu/java/awt/peer/x/XFontPeer2.java
+++ b/libjava/classpath/gnu/java/awt/peer/x/XFontPeer2.java
@@ -42,17 +42,21 @@ import java.awt.FontMetrics;
import java.awt.font.FontRenderContext;
import java.awt.font.GlyphVector;
import java.awt.font.LineMetrics;
+import java.awt.font.TextAttribute;
import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.io.File;
import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.text.CharacterIterator;
import java.text.StringCharacterIterator;
import java.util.Locale;
import java.util.Map;
+import java.util.Properties;
import gnu.java.awt.font.FontDelegate;
import gnu.java.awt.font.FontFactory;
@@ -62,11 +66,30 @@ public class XFontPeer2
extends ClasspathFontPeer
{
+ /**
+ * The font mapping as specified in the file fonts.properties.
+ */
+ private static Properties fontProperties;
+ static
+ {
+ fontProperties = new Properties();
+ InputStream in = XFontPeer2.class.getResourceAsStream("fonts.properties");
+ try
+ {
+ fontProperties.load(in);
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ }
+ }
+
private class XLineMetrics
extends LineMetrics
{
private Font font;
+ private GlyphVector glyphVector;
// private CharacterIterator characterIterator;
// private int begin;
// private int limit;
@@ -79,6 +102,8 @@ public class XFontPeer2
// begin = b;
// limit = l;
fontRenderContext = rc;
+ glyphVector = fontDelegate.createGlyphVector(font, fontRenderContext,
+ ci);
}
public float getAscent()
@@ -86,7 +111,7 @@ public class XFontPeer2
return fontDelegate.getAscent(font.getSize(), fontRenderContext.getTransform(),
fontRenderContext.isAntiAliased(),
fontRenderContext.usesFractionalMetrics(), true);
- }
+ }
public int getBaselineIndex()
{
@@ -102,21 +127,18 @@ public class XFontPeer2
public float getDescent()
{
- return (int) fontDelegate.getDescent(font.getSize(),
- new AffineTransform(), false, false,
- false);
+ return (int) fontDelegate.getDescent(font.getSize(), IDENDITY, false,
+ false, false);
}
public float getHeight()
{
- // FIXME: Implement this.
- throw new UnsupportedOperationException("Not yet implemented");
+ return (float) glyphVector.getLogicalBounds().getHeight();
}
public float getLeading()
{
- // FIXME: Implement this.
- throw new UnsupportedOperationException("Not yet implemented");
+ return getHeight() - getAscent() - getDescent();
}
public int getNumChars()
@@ -150,6 +172,11 @@ public class XFontPeer2
private class XFontMetrics
extends FontMetrics
{
+ /**
+ * A cached point instance, to be used in #charWidth().
+ */
+ private Point2D cachedPoint = new Point2D.Double();
+
XFontMetrics(Font f)
{
super(f);
@@ -157,22 +184,20 @@ public class XFontPeer2
public int getAscent()
{
- return (int) fontDelegate.getAscent(getFont().getSize(),
- new AffineTransform(), false, false,
- false);
+ return (int) fontDelegate.getAscent(getFont().getSize(), IDENDITY,
+ false, false, false);
}
public int getDescent()
{
- return (int) fontDelegate.getDescent(getFont().getSize(),
- new AffineTransform(), false, false,
- false);
+ return (int) fontDelegate.getDescent(getFont().getSize(), IDENDITY,
+ false, false, false);
}
public int getHeight()
{
GlyphVector gv = fontDelegate.createGlyphVector(getFont(),
- new FontRenderContext(new AffineTransform(), false, false),
+ new FontRenderContext(IDENDITY, false, false),
new StringCharacterIterator("m"));
Rectangle2D b = gv.getVisualBounds();
return (int) b.getHeight();
@@ -180,8 +205,9 @@ public class XFontPeer2
public int charWidth(char c)
{
- Point2D advance = new Point2D.Double();
- fontDelegate.getAdvance(c, getFont().getSize(), new AffineTransform(),
+ int code = fontDelegate.getGlyphIndex(c);
+ Point2D advance = cachedPoint;
+ fontDelegate.getAdvance(code, font.getSize2D(), IDENDITY,
false, false, true, advance);
return (int) advance.getX();
}
@@ -194,13 +220,18 @@ public class XFontPeer2
public int stringWidth(String s)
{
GlyphVector gv = fontDelegate.createGlyphVector(getFont(),
- new FontRenderContext(new AffineTransform(), false, false),
+ new FontRenderContext(IDENDITY, false, false),
new StringCharacterIterator(s));
Rectangle2D b = gv.getVisualBounds();
return (int) b.getWidth();
}
}
+ /**
+ * The indendity transform, to be used in several methods.
+ */
+ private static final AffineTransform IDENDITY = new AffineTransform();
+
private FontDelegate fontDelegate;
XFontPeer2(String name, int style, int size)
@@ -208,7 +239,7 @@ public class XFontPeer2
super(name, style, size);
try
{
- File fontfile = new File("/usr/share/fonts/truetype/ttf-bitstream-vera/Vera.ttf");
+ File fontfile = new File("/usr/share/fonts/truetype/freefont/FreeSans.ttf");
FileInputStream in = new FileInputStream(fontfile);
FileChannel ch = in.getChannel();
ByteBuffer buffer = ch.map(FileChannel.MapMode.READ_ONLY, 0,
@@ -239,7 +270,7 @@ public class XFontPeer2
}
}
- public boolean canDisplay(Font font, char c)
+ public boolean canDisplay(Font font, int c)
{
// FIXME: Implement this.
throw new UnsupportedOperationException("Not yet implemented");
@@ -326,4 +357,112 @@ public class XFontPeer2
throw new UnsupportedOperationException("Not yet implemented");
}
+ /**
+ * Encodes a font name + style + size specification into a X logical font
+ * description (XLFD) as described here:
+ *
+ * http://www.meretrx.com/e93/docs/xlfd.html
+ *
+ * This is implemented to look up the font description in the
+ * fonts.properties of this package.
+ *
+ * @param name the font name
+ * @param atts the text attributes
+ *
+ * @return the encoded font description
+ */
+ static String encodeFont(String name, Map atts)
+ {
+ String family = name;
+ if (family == null || family.equals(""))
+ family = (String) atts.get(TextAttribute.FAMILY);
+ if (family == null)
+ family = "SansSerif";
+
+ int size = 12;
+ Float sizeFl = (Float) atts.get(TextAttribute.SIZE);
+ if (sizeFl != null)
+ size = sizeFl.intValue();
+
+ int style = 0;
+ // Detect italic attribute.
+ Float posture = (Float) atts.get(TextAttribute.POSTURE);
+ if (posture != null && !posture.equals(TextAttribute.POSTURE_REGULAR))
+ style |= Font.ITALIC;
+
+ // Detect bold attribute.
+ Float weight = (Float) atts.get(TextAttribute.WEIGHT);
+ if (weight != null && weight.compareTo(TextAttribute.WEIGHT_REGULAR) > 0)
+ style |= Font.BOLD;
+
+ return encodeFont(name, style, size);
+ }
+
+ /**
+ * Encodes a font name + style + size specification into a X logical font
+ * description (XLFD) as described here:
+ *
+ * http://www.meretrx.com/e93/docs/xlfd.html
+ *
+ * This is implemented to look up the font description in the
+ * fonts.properties of this package.
+ *
+ * @param name the font name
+ * @param style the font style
+ * @param size the font size
+ *
+ * @return the encoded font description
+ */
+ static String encodeFont(String name, int style, int size)
+ {
+ StringBuilder key = new StringBuilder();
+ key.append(validName(name));
+ key.append('.');
+ switch (style)
+ {
+ case Font.BOLD:
+ key.append("bold");
+ break;
+ case Font.ITALIC:
+ key.append("italic");
+ break;
+ case (Font.BOLD | Font.ITALIC):
+ key.append("bolditalic");
+ break;
+ case Font.PLAIN:
+ default:
+ key.append("plain");
+
+ }
+
+ String protoType = fontProperties.getProperty(key.toString());
+ int s = size;
+ return protoType.replaceFirst("%d", String.valueOf(s * 10));
+ }
+
+ /**
+ * Checks the specified font name for a valid font name. If the font name
+ * is not known, then this returns 'sansserif' as fallback.
+ *
+ * @param name the font name to check
+ *
+ * @return a valid font name
+ */
+ static String validName(String name)
+ {
+ String retVal;
+ if (name.equalsIgnoreCase("sansserif")
+ || name.equalsIgnoreCase("serif")
+ || name.equalsIgnoreCase("monospaced")
+ || name.equalsIgnoreCase("dialog")
+ || name.equalsIgnoreCase("dialoginput"))
+ {
+ retVal = name.toLowerCase();
+ }
+ else
+ {
+ retVal = "sansserif";
+ }
+ return retVal;
+ }
}
diff --git a/libjava/classpath/gnu/java/awt/peer/x/XFramePeer.java b/libjava/classpath/gnu/java/awt/peer/x/XFramePeer.java
index 439a2a7bbf1..74e47bc2842 100644
--- a/libjava/classpath/gnu/java/awt/peer/x/XFramePeer.java
+++ b/libjava/classpath/gnu/java/awt/peer/x/XFramePeer.java
@@ -137,4 +137,10 @@ public class XFramePeer
throw new UnsupportedOperationException("Not yet implemented.");
}
+ public Rectangle getBoundsPrivate()
+ {
+ // TODO: Implement this properly.
+ throw new InternalError("Not yet implemented");
+ }
+
}
diff --git a/libjava/classpath/gnu/java/awt/peer/x/XGraphics.java b/libjava/classpath/gnu/java/awt/peer/x/XGraphics.java
deleted file mode 100644
index 134d7d3305e..00000000000
--- a/libjava/classpath/gnu/java/awt/peer/x/XGraphics.java
+++ /dev/null
@@ -1,792 +0,0 @@
-/* XGraphics.java -- The Graphics implementation for X
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath 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 for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package gnu.java.awt.peer.x;
-
-import gnu.x11.Colormap;
-import gnu.x11.Data;
-import gnu.x11.Display;
-import gnu.x11.Drawable;
-import gnu.x11.GC;
-import gnu.x11.Pixmap;
-import gnu.x11.Point;
-import gnu.x11.image.ZPixmap;
-
-import java.awt.AWTError;
-import java.awt.Color;
-import java.awt.Font;
-import java.awt.FontMetrics;
-import java.awt.Graphics;
-import java.awt.Image;
-import java.awt.Rectangle;
-import java.awt.Shape;
-import java.awt.Toolkit;
-import java.awt.Transparency;
-import java.awt.image.BufferedImage;
-import java.awt.image.ImageObserver;
-import java.awt.image.ImageProducer;
-import java.text.AttributedCharacterIterator;
-import java.util.HashMap;
-
-public class XGraphics
- extends Graphics
- implements Cloneable
-{
-
- /**
- * The X Drawable to draw on.
- */
- private Drawable xdrawable;
-
- /**
- * The X graphics context (GC).
- */
- private GC xgc;
-
- /**
- * The current translation.
- */
- private int translateX;
- private int translateY;
-
- /**
- * The current clip. Possibly null.
- */
- private Rectangle clip;
-
- /**
- * The current font, possibly null.
- */
- private Font font;
-
- /**
- * The current foreground color, possibly null.
- */
- private Color foreground;
-
- /**
- * Indicates if this object has been disposed.
- */
- private boolean disposed = false;
-
- // TODO: Workaround for limitation in current Escher.
- private Pixmap.Format pixmapFormat;
- private int imageByteOrder;
- private int pixelByteCount;
-
- /**
- * Creates a new XGraphics on the specified X Drawable.
- *
- * @param d the X Drawable for which we create the Graphics
- */
- XGraphics(Drawable d)
- {
- xdrawable = d;
- xgc = new GC(d);
- translateX = 0;
- translateY = 0;
- clip = new Rectangle(0, 0, d.width, d.height);
-
- Display display = xdrawable.display;
- pixmapFormat = display.default_pixmap_format;
- imageByteOrder = display.image_byte_order;
- pixelByteCount = pixmapFormat.bits_per_pixel () / 8;
- }
-
- /**
- * Creates an exact copy of this graphics context.
- *
- * @return an exact copy of this graphics context
- */
- public Graphics create()
- {
- XGraphics copy = (XGraphics) clone();
- return copy;
- }
-
- /**
- * Translates the origin by (x, y).
- */
- public void translate(int x, int y)
- {
- translateX += x;
- translateY += y;
- if (clip != null)
- {
- clip.x -= x;
- clip.y -= y;
- }
- }
-
- /**
- * Returns the current foreground color, possibly null
.
- *
- * @return the current foreground color, possibly null
- */
- public Color getColor()
- {
- return foreground;
- }
-
- /**
- * Sets the current foreground color. A null
value doesn't
- * change the current setting.
- *
- * @param c the foreground color to set
- */
- public void setColor(Color c)
- {
- if (c != null)
- {
- XToolkit tk = (XToolkit) Toolkit.getDefaultToolkit();
- HashMap colorMap = tk.colorMap;
- gnu.x11.Color col = (gnu.x11.Color) colorMap.get(c);
- if (col == null)
- {
- Colormap map = xdrawable.display.default_colormap;
- col = map.alloc_color (c.getRed() * 256,
- c.getGreen() * 256,
- c.getBlue() * 256);
- colorMap.put(c, col);
- }
- xgc.set_foreground(col);
- foreground = c;
- }
- }
-
- public void setPaintMode()
- {
- // FIXME: Implement this.
- throw new UnsupportedOperationException("Not yet implemented");
- }
-
- public void setXORMode(Color color)
- {
- // FIXME: Implement this.
- throw new UnsupportedOperationException("Not yet implemented");
- }
-
- /**
- * Returns the current font, possibly null
.
- *
- * @return the current font, possibly null
- */
- public Font getFont()
- {
- return font;
- }
-
- /**
- * Sets the font on the graphics context. A null
value doesn't
- * change the current setting.
- *
- * @param f the font to set
- */
- public void setFont(Font f)
- {
- if (f != null)
- {
- XFontPeer xFontPeer = (XFontPeer) f.getPeer();
- xgc.set_font(xFontPeer.getXFont());
- font = f;
- }
- }
-
- /**
- * Returns the font metrics for the specified font.
- *
- * @param font the font for which we want the font metrics
- *
- * @return the font metrics for the specified font
- */
- public FontMetrics getFontMetrics(Font font)
- {
- if (font == null)
- {
- if (this.font == null)
- setFont(new Font("Dialog", Font.PLAIN, 12));
- font = this.font;
- }
- XFontPeer xFontPeer = (XFontPeer) font.getPeer();
- return xFontPeer.getFontMetrics(font);
- }
-
- /**
- * Returns the bounds of the current clip.
- *
- * @return the bounds of the current clip
- */
- public Rectangle getClipBounds()
- {
- return clip != null ? clip.getBounds() : null;
- }
-
- /**
- * Clips the current clip with the specified clip.
- */
- public void clipRect(int x, int y, int width, int height)
- {
- if (clip == null)
- {
- clip = new Rectangle(x, y, width, height);
- }
- else
- {
- computeIntersection(x, y, width, height, clip);
- }
- // Update the X clip setting.
- setXClip(clip.x, clip.y, clip.width, clip.height);
- }
-
- /**
- * Returns true
when the specified rectangle intersects with
- * the current clip, false
otherwise. This is overridden to
- * avoid unnecessary creation of Rectangles via getBounds().
- *
- * @param x the x coordinate of the rectangle
- * @param y the y coordinate of the rectangle
- * @param w the width of the rectangle
- * @param h the height of the rectangle
- *
- * @return true
when the specified rectangle intersects with
- * the current clip, false
otherwise
- */
- public boolean hitClip(int x, int y, int w, int h)
- {
- boolean hit;
- if (clip == null)
- {
- hit = true;
- }
- else
- {
- // It's easier to determine if the rectangle lies outside the clip,
- // so we determine that and reverse the result (if it's not completely
- // outside, it most likely hits the clip rectangle).
- int x2 = x + w;
- int y2 = y + h;
- int clipX2 = clip.x + clip.width;
- int clipY2 = clip.y + clip.height;
- boolean outside = (x < clip.x && x2 < clip.x) // Left.
- || (x > clipX2 && x2 > clipX2) // Right.
- || (y < clip.y && y2 < clip.y) // Top.
- || (y > clipY2 && y2 > clipY2); // Bottom.
- hit = ! outside;
- }
- return hit;
- }
-
- public void setClip(int x, int y, int width, int height)
- {
- if (clip != null)
- clip.setBounds(x, y, width, height);
- else
- clip = new Rectangle(x, y, width, height);
- setXClip(clip.x, clip.y, clip.width, clip.height);
- }
-
- /**
- * Sets the clip on the X server GC. The coordinates are not yet translated,
- * this will be performed by the X server.
- *
- * @param x the clip, X coordinate
- * @param y the clip, Y coordinate
- * @param w the clip, width
- * @param h the clip, height
- */
- private void setXClip(int x, int y, int w, int h)
- {
- gnu.x11.Rectangle[] clipRects = new gnu.x11.Rectangle[] {
- new gnu.x11.Rectangle(x, y, w, h) };
- xgc.set_clip_rectangles(translateX, translateY, clipRects, GC.YX_BANDED);
- }
-
- public Shape getClip()
- {
- // Return a copy here, so nobody can trash our clip.
- return clip == null ? null : clip.getBounds();
- }
-
- /**
- * Sets the current clip.
- *
- * @param c the clip to set
- */
- public void setClip(Shape c)
- {
- if (c != null)
- {
- Rectangle b;
- if (c instanceof Rectangle)
- {
- b = (Rectangle) c;
- }
- else
- {
- b = c.getBounds();
- }
- clip.setBounds(b);
- setXClip(b.x, b.y, b.width, b.height);
- }
- else
- {
- clip.setBounds(0, 0, xdrawable.width, xdrawable.height);
- setXClip(0, 0, xdrawable.width, xdrawable.height);
- }
- }
-
- public void copyArea(int x, int y, int width, int height, int dx, int dy)
- {
- // Clip and translate src rectangle.
- int srcX = Math.min(Math.max(x, clip.x), clip.x + clip.width)
- + translateX;
- int srcY = Math.min(Math.max(y, clip.y), clip.y + clip.height)
- + translateY;
- int srcWidth = Math.min(Math.max(x + width, clip.x),
- clip.x + clip.width) - x;
- int srcHeight = Math.min(Math.max(y + height, clip.y),
- clip.y + clip.height) - y;
- xdrawable.copy_area(xdrawable, xgc, srcX, srcY, srcWidth, srcHeight,
- srcX + dx, srcY + dy);
- }
-
- /**
- * Draws a line from point (x1, y1) to point (x2, y2).
- */
- public void drawLine(int x1, int y1, int x2, int y2)
- {
- //System.err.println("drawLine: " + (x1 + translateX) + ", " + ( y1 + translateY) + ", " + (x2 + translateX) + ", " + (y2 + translateY) + " on: " + xdrawable);
- xdrawable.line(xgc, x1 + translateX, y1 + translateY,
- x2 + translateX, y2 + translateY);
- }
-
- /**
- * Fills the specified rectangle.
- */
- public void fillRect(int x, int y, int width, int height)
- {
- xdrawable.rectangle(xgc, x + translateX, y + translateY,
- width, height, true);
- }
-
- public void clearRect(int x, int y, int width, int height)
- {
- xgc.set_foreground(Color.WHITE.getRGB());
- xdrawable.rectangle(xgc, x, y, width, height, true);
- if (foreground != null)
- xgc.set_foreground(foreground.getRGB());
- }
-
- public void drawRoundRect(int x, int y, int width, int height, int arcWidth,
- int arcHeight)
- {
- // Draw 4 lines.
- int arcRadiusX = arcWidth / 2;
- int arcRadiusY = arcHeight / 2;
- drawLine(x + arcRadiusX, y, x + width - arcRadiusX, y);
- drawLine(x, y + arcRadiusY, x, y + height - arcRadiusY);
- drawLine(x + arcRadiusX, y + height, x + width - arcRadiusX, y + height);
- drawLine(x + width, y + arcRadiusY, x + width, y + height - arcRadiusY);
-
- // Draw the 4 arcs at the corners.
- // Upper left.
- drawArc(x, y, arcWidth, arcHeight, 90, 90);
- // Lower left.
- drawArc(x, y + height - arcHeight, arcWidth, arcHeight, 180, 90);
- // Upper right.
- drawArc(x + width - arcWidth, y, arcWidth, arcHeight, 0, 90);
- // Lower right.
- drawArc(x + width - arcWidth, y + height - arcHeight, arcWidth, arcHeight,
- 270, 90);
- }
-
- public void fillRoundRect(int x, int y, int width, int height, int arcWidth,
- int arcHeight)
- {
- // Fill the 3 rectangles that make up the inner area.
- int arcRadiusX = arcWidth / 2;
- int arcRadiusY = arcHeight / 2;
- // Left.
- fillRect(x, y + arcRadiusY, arcRadiusX, height - arcHeight);
- // Middle.
- fillRect(x + arcRadiusX, y, width - arcWidth, height);
- // Right.
- fillRect(x + width - arcRadiusX, y + arcRadiusY, arcRadiusX,
- height - arcHeight);
-
- // Fill the 4 arcs in the corners.
- // Upper left.
- fillArc(x, y, arcWidth, arcHeight, 90, 90);
- // Lower left.
- fillArc(x, y + height - arcHeight, arcWidth, arcHeight, 180, 90);
- // Upper right.
- fillArc(x + width - arcWidth, y, arcWidth, arcHeight, 0, 90);
- // Lower right.
- fillArc(x + width - arcWidth, y + height - arcHeight, arcWidth, arcHeight,
- 270, 90);
- }
-
- public void drawOval(int x, int y, int width, int height)
- {
- xdrawable.arc(xgc, x, y, width, height, 0, 360 * 64, false);
- }
-
- public void fillOval(int x, int y, int width, int height)
- {
- xdrawable.arc(xgc, x, y, width, height, 0, 360 * 64, true);
- }
-
- public void drawArc(int x, int y, int width, int height, int arcStart,
- int arcAngle)
- {
- xdrawable.arc(xgc, x, y, width, height, arcStart * 64, arcAngle * 64, false);
- }
-
- public void fillArc(int x, int y, int width, int height, int arcStart,
- int arcAngle)
- {
- xdrawable.arc(xgc, x, y, width, height, arcStart * 64, arcAngle * 64, true);
- }
-
- public void drawPolyline(int[] xPoints, int[] yPoints, int npoints)
- {
- int numPoints = Math.min(xPoints.length, yPoints.length);
- Point[] points = new Point[numPoints];
- // FIXME: Improve Escher API to accept arrays to avoid creation
- // of many Point objects.
- for (int i = 0; i < numPoints; i++)
- points[i] = new Point(xPoints[i], yPoints[i]);
- xdrawable.poly_line(xgc, points, Drawable.ORIGIN);
- }
-
- public void drawPolygon(int[] xPoints, int[] yPoints, int npoints)
- {
- int numPoints = Math.min(xPoints.length, yPoints.length);
- Point[] points = new Point[numPoints];
- // FIXME: Improve Escher API to accept arrays to avoid creation
- // of many Point objects.
- for (int i = 0; i < numPoints; i++)
- points[i] = new Point(xPoints[i], yPoints[i]);
- xdrawable.poly_line(xgc, points, Drawable.ORIGIN);
- }
-
- public void fillPolygon(int[] xPoints, int[] yPoints, int npoints)
- {
- int numPoints = Math.min(xPoints.length, yPoints.length);
- Point[] points = new Point[numPoints];
- // FIXME: Improve Escher API to accept arrays to avoid creation
- // of many Point objects.
- for (int i = 0; i < numPoints; i++)
- points[i] = new Point(xPoints[i], yPoints[i]);
- xdrawable.fill_poly(xgc, points, Drawable.COMPLEX, Drawable.ORIGIN);
- }
-
- /**
- * Draws the specified string at (x, y).
- */
- public void drawString(String string, int x, int y)
- {
- if (disposed)
- throw new AWTError("XGraphics already disposed");
-
- xdrawable.text(xgc, x + translateX, y + translateY, string);
- }
-
- public void drawString(AttributedCharacterIterator ci, int x, int y)
- {
- // FIXME: Implement this.
- throw new UnsupportedOperationException("Not yet implemented");
- }
-
- /**
- * Draws the specified image on the drawable at position (x,y).
- */
- public boolean drawImage(Image image, int x, int y, ImageObserver observer)
- {
- if (image instanceof XImage)
- {
- XImage xim = (XImage) image;
- Pixmap pm = xim.pixmap;
- xdrawable.copy_area(pm, xgc, 0, 0, pm.width, pm.height,
- x + translateX, y + translateY);
- }
- else if (image instanceof BufferedImage
- && ((BufferedImage) image).getTransparency() != Transparency.OPAQUE)
- {
- BufferedImage bi = (BufferedImage) image;
- int width = bi.getWidth();
- int height = bi.getHeight();
- Data img = xdrawable.image(x + translateX, y + translateY,
- width, height, 0xFFFFFFFF, 2);
-
- // Compute line byte count.
- int lineBitCount = width * pixmapFormat.bits_per_pixel ();
- int rem = lineBitCount % pixmapFormat.scanline_pad ();
- int linePadCount = lineBitCount / pixmapFormat.scanline_pad ()
- + (rem == 0 ? 0 : 1);
- int lineByteCount = linePadCount * pixmapFormat.scanline_pad () / 8;
-
- // Composite source and destination pixel data.
- int[] trgb = new int[3]; // The device rgb pixels.
- for (int yy = 0; yy < height; yy++)
- {
- for (int xx = 0; xx < width; xx++)
- {
- getRGB(xx, yy, img, trgb, lineByteCount);
- int srgb = bi.getRGB(xx, yy);
- float alpha = ((srgb >> 24) & 0xff) / 256F;
- float tAlpha = 1.F - alpha;
- int red = (srgb >> 16) & 0xFF;
- int green = (srgb >> 8) & 0xFF;
- int blue = (srgb) & 0xFF;
- trgb[0] = (int) (trgb[0] * tAlpha + red * alpha);
- trgb[1] = (int) (trgb[1] * tAlpha + green * alpha);
- trgb[2] = (int) (trgb[2] * tAlpha + blue * alpha);
- setRGB(xx, yy, img, trgb, lineByteCount);
- }
- }
-
- // Now we have the transparent image composited onto the target
- // Image, now we only must copy it to the Drawable.
- ZPixmap pm = new ZPixmap(xdrawable.display);
- pm.width = width;
- pm.height = height;
- pm.init();
- System.arraycopy(img.data, 32, pm.data, 0, img.data.length - 32);
- xdrawable.put_image(xgc, pm, x + translateX, y + translateY);
- }
- else
- {
- // Pre-render the image into an XImage.
- ImageProducer source = image.getSource();
- ImageConverter conv = new ImageConverter();
- source.startProduction(conv);
- XImage xim = conv.getXImage();
- Pixmap pm = xim.pixmap;
- xdrawable.copy_area(pm, xgc, 0, 0, pm.width, pm.height,
- x + translateX, y + translateY);
- }
- return true;
- }
-
- /**
- * Helper method to work around limitation in the current Escher impl.
- *
- * @param x the x position
- * @param y the y position
- * @param img the image data
- * @param rgb an 3-size array that holds the rgb values on method exit
- */
- private void getRGB(int x, int y, Data img, int[] rgb, int lineByteCount)
- {
- // TODO: Does this also work on non-RGB devices?
- int i = y * lineByteCount + pixelByteCount * x;
- if (imageByteOrder == gnu.x11.image.Image.LSB_FIRST)
- {//if (i >= 5716-33) System.err.println("lbc: " + lineByteCount + ", " + pixelByteCount);
- rgb[2] = img.data[32 + i];
- rgb[1] = img.data[32 + i + 1];
- rgb[0] = img.data[32 + i + 2];
- }
- else
- { // MSB_FIRST
- rgb[0] = img.data[32 + i];
- rgb[1] = img.data[32 + i + 1];
- rgb[2] = img.data[32 + i + 2];
- }
-
- }
-
- /**
- * Helper method to work around limitation in the current Escher impl.
- *
- * @param x the x position
- * @param y the y position
- * @param img the image data
- * @param rgb an 3-size array that holds the rgb values on method exit
- */
- private void setRGB(int x, int y, Data img, int[] rgb, int lineByteCount)
- {
- // TODO: Does this also work on non-RGB devices?
- int i = y * lineByteCount + pixelByteCount * x;
- if (imageByteOrder == gnu.x11.image.Image.LSB_FIRST)
- {
- img.data[32 + i] = (byte) rgb[2];
- img.data[32 + i + 1] = (byte) rgb[1];
- img.data[32 + i + 2] = (byte) rgb[0];
- }
- else
- { // MSB_FIRST
- img.data[32 + i] = (byte) rgb[0];
- img.data[32 + i + 1] = (byte) rgb[1];
- img.data[32 + i + 2] = (byte) rgb[2];
- }
- }
-
- public boolean drawImage(Image image, int x, int y, int width, int height,
- ImageObserver observer)
- {
- // FIXME: Implement this.
- throw new UnsupportedOperationException("Not yet implemented");
- }
-
- public boolean drawImage(Image image, int x, int y, Color bgcolor,
- ImageObserver observer)
- {
- // FIXME: Implement this.
- throw new UnsupportedOperationException("Not yet implemented");
- }
-
- public boolean drawImage(Image image, int x, int y, int width, int height,
- Color bgcolor, ImageObserver observer)
- {
- // FIXME: Implement this.
- throw new UnsupportedOperationException("Not yet implemented");
- }
-
- public boolean drawImage(Image image, int dx1, int dy1, int dx2, int dy2,
- int sx1, int sy1, int sx2, int sy2,
- ImageObserver observer)
- {
- return drawImage(image, dx1, dy1, dx2, dy2, sx1, sy1, sx2, sy2, null,
- observer);
- }
-
- public boolean drawImage(Image image, int dx1, int dy1, int dx2, int dy2,
- int sx1, int sy1, int sx2, int sy2, Color bgcolor,
- ImageObserver observer)
- {
-
- // FIXME: What to do with bgcolor?
-
- // Scale the image.
- int sw = image.getWidth(observer);
- int sh = image.getHeight(observer);
- double scaleX = Math.abs(dx2 - dx1) / (double) Math.abs(sx2 - sx1);
- double scaleY = Math.abs(dy2 - dy1) / (double) Math.abs(sy2 - sy1);
- Image scaled = image.getScaledInstance((int) (scaleX * sw),
- (int) (scaleY * sh),
- Image.SCALE_FAST);
-
- // Scaled source coordinates.
- int sx1s = (int) (scaleX * Math.min(sx1, sx2));
- int sx2s = (int) (scaleX * Math.max(sx1, sx2));
-
- // Temporarily clip to the target rectangle.
- Rectangle old = clip;
- clipRect(dx1, dy1, dx2 - dx1, dy2 - dy1);
-
- // Draw scaled image.
- boolean res = drawImage(scaled, dx1 - sx1s, dy1 - sx2s, observer);
-
- // Reset clip.
- setClip(old);
-
- return res;
- }
-
- /**
- * Frees any resources associated with this object.
- */
- public void dispose()
- {
- if (! disposed)
- {
- xgc.free();
- xdrawable.display.flush();
- disposed = true;
- }
- }
-
- // Additional helper methods.
-
- /**
- * Creates and returns an exact copy of this XGraphics.
- */
- protected Object clone()
- {
- try
- {
- XGraphics copy = (XGraphics) super.clone();
- copy.xgc = xgc.copy();
- if (clip != null)
- {
- copy.clip = new Rectangle(clip);
- copy.setXClip(clip.x, clip.y, clip.width, clip.height);
- }
- return copy;
- }
- catch (CloneNotSupportedException ex)
- {
- assert false;
- }
- return null;
- }
-
- /**
- * Computes the intersection between two rectangles and stores the result
- * int the second rectangle.
- *
- * This method has been copied from {@link javax.swing.SwingUtilities}.
- *
- * @param x the x coordinate of the rectangle #1
- * @param y the y coordinate of the rectangle #1
- * @param w the width of the rectangle #1
- * @param h the height of the rectangle #1
- * @param rect the rectangle #2 and output rectangle
- */
- private static void computeIntersection(int x, int y, int w, int h,
- Rectangle rect)
- {
- int x2 = (int) rect.x;
- int y2 = (int) rect.y;
- int w2 = (int) rect.width;
- int h2 = (int) rect.height;
-
- int dx = (x > x2) ? x : x2;
- int dy = (y > y2) ? y : y2;
- int dw = (x + w < x2 + w2) ? (x + w - dx) : (x2 + w2 - dx);
- int dh = (y + h < y2 + h2) ? (y + h - dy) : (y2 + h2 - dy);
-
- if (dw >= 0 && dh >= 0)
- rect.setBounds(dx, dy, dw, dh);
- else
- rect.setBounds(0, 0, 0, 0);
- }
-
-
-}
diff --git a/libjava/classpath/gnu/java/awt/peer/x/XGraphics2D.java b/libjava/classpath/gnu/java/awt/peer/x/XGraphics2D.java
index 5dc79ff5c2b..73e780cc5a2 100644
--- a/libjava/classpath/gnu/java/awt/peer/x/XGraphics2D.java
+++ b/libjava/classpath/gnu/java/awt/peer/x/XGraphics2D.java
@@ -37,16 +37,23 @@ exception statement from your version. */
package gnu.java.awt.peer.x;
+import java.awt.Color;
import java.awt.Graphics;
import java.awt.GraphicsConfiguration;
+import java.awt.Image;
+import java.awt.Paint;
import java.awt.Rectangle;
import java.awt.Shape;
import java.awt.Toolkit;
import java.awt.geom.AffineTransform;
import java.awt.image.ColorModel;
+import java.awt.image.ImageObserver;
import java.awt.image.Raster;
+import java.util.HashMap;
import gnu.java.awt.java2d.AbstractGraphics2D;
+import gnu.java.awt.java2d.ScanlineCoverage;
+import gnu.x11.Colormap;
import gnu.x11.Drawable;
import gnu.x11.GC;
import gnu.x11.image.ZPixmap;
@@ -70,6 +77,11 @@ public class XGraphics2D
*/
private boolean disposed;
+ /**
+ * The current foreground color, possibly null.
+ */
+ private Color foreground;
+
XGraphics2D(Drawable d)
{
super();
@@ -80,31 +92,9 @@ public class XGraphics2D
//setClip(new Rectangle(0, 0, xdrawable.width, xdrawable.height));
}
- /**
- * Draws a pixel in the target coordinate space using the specified color.
- *
- * @param x the x coordinate
- * @param y the y coordinate
- */
- protected void rawSetPixel(int x, int y)
- {
- xdrawable.point(xgc, x, y);
- }
-
-// protected void rawFillPolygon(double[] xpoints, double[] ypoints, int npoints)
-// {
-// Point[] points = new Point[npoints];
-// for (int n = 0; n < npoints; n++)
-// {
-// points[n] = new Point((int) xpoints[n], (int) ypoints[n]);
-// }
-// xdrawable.fill_poly(xgc, points, Drawable.COMPLEX, Drawable.ORIGIN);
-// xdrawable.display.flush();
-// }
-
protected void rawDrawLine(int x0, int y0, int x1, int y1)
{
- xdrawable.line(xgc, x0, y0, x1, y1);
+ xdrawable.segment(xgc, x0, y0, x1, y1);
}
protected void rawFillRect(int x, int y, int w, int h)
@@ -112,17 +102,6 @@ public class XGraphics2D
xdrawable.rectangle(xgc, x, y, w, h, true);
}
- protected void rawSetForeground(java.awt.Color c)
- {
- if (c != null)
- xgc.set_foreground(c.getRGB());
- }
-
- protected void rawSetForeground(int r, int g, int b)
- {
- xgc.set_foreground( r << 16 | g << 8 | b );
- }
-
/**
* Returns the color model of this Graphics object.
*
@@ -178,55 +157,6 @@ public class XGraphics2D
return copy;
}
-// /**
-// * Draws the specified image on the drawable at position (x,y).
-// */
-//
-// public boolean drawImage(Image image, int x, int y, ImageObserver observer)
-// {
-// AffineTransform transform = getTransform();
-// int translateX = (int) transform.getTranslateX();
-// int translateY = (int) transform.getTranslateY();
-// if (image instanceof XImage)
-// {
-// XImage xim = (XImage) image;
-// Pixmap pm = xim.pixmap;
-// xdrawable.copy_area(pm, xgc, 0, 0, pm.width, pm.height,
-// x + translateX, y + translateY);
-// }
-// else if (image instanceof BufferedImage)
-// {
-// BufferedImage bufferedImage = (BufferedImage) image;
-// Raster raster = bufferedImage.getData();
-// int w = bufferedImage.getWidth();
-// int h = bufferedImage.getHeight();
-// // Push data to X server.
-// ZPixmap zPixmap = new ZPixmap(xdrawable.display, w, h,
-// xdrawable.display.default_pixmap_format);
-// System.err.println("data buffer length: " + zPixmap.data.length);
-// int[] pixel = new int[4];
-// for (int tx = 0; tx < w; tx++)
-// {
-// for (int ty = 0; ty < h; ty++)
-// {
-// pixel = raster.getPixel(tx, ty, pixel);
-//// System.err.print("r: " + pixel[0]);
-//// System.err.print(", g: " + pixel[1]);
-//// System.err.println(", b: " + pixel[2]);
-// zPixmap.set_red(tx, ty, pixel[0]);
-// zPixmap.set_green(tx, ty, pixel[1]);
-// zPixmap.set_blue(tx, ty, pixel[2]);
-// }
-// }
-// xdrawable.put_image(xgc, zPixmap, x, y);
-// }
-// else
-// {
-// throw new UnsupportedOperationException("Not yet implemented.");
-// }
-// return true;
-// }
-//
public void setClip(Shape c)
{
super.setClip(c);
@@ -287,9 +217,115 @@ public class XGraphics2D
}
}
+ public void renderScanline(int y, ScanlineCoverage c)
+ {
+ ScanlineCoverage.Iterator iter = c.iterate();
+ float coverageAlpha = 0;
+ int maxCoverage = c.getMaxCoverage();
+ Color old = getColor();
+ Color col = getColor();
+ if (col == null)
+ col = Color.BLACK;
+ while (iter.hasNext())
+ {
+ ScanlineCoverage.Range range = iter.next();
+ // TODO: Dumb implementation for testing.
+ coverageAlpha = range.getCoverage();
+ if (coverageAlpha > 0)
+ {
+ int red = col.getRed();
+ int green = col.getGreen();
+ int blue = col.getBlue();
+ if (coverageAlpha < c.getMaxCoverage())
+ {
+ float alpha = coverageAlpha / maxCoverage;
+ red = 255 - (int) ((255 - red) * alpha);
+ green = 255 - (int) ((255 - green) * alpha);
+ blue = 255 - (int) ((255 - blue) * alpha);
+ }
+ xgc.set_foreground(red << 16 | green << 8 | blue);
+ int x0 = range.getXPos();
+ int l = range.getLength();
+ xdrawable.fill_rectangle(xgc, x0, y, l, 1);
+ }
+ }
+ if (old != null)
+ xgc.set_foreground(old.getRGB());
+ }
+
+ protected void fillScanline(int x0, int x1, int y)
+ {
+ xdrawable.segment(xgc, x0, y, x1, y);
+ }
+
+ protected void fillScanlineAA(int x0, int x1, int y, int alpha)
+ {
+ //System.err.println("fillScanlineAA: " + x0 + ", " + x1 + ", " + y + ", " + alpha);
+ // FIXME: This is for testing only.
+ Color c = getColor();
+ setColor(new Color(255-alpha, 255-alpha, 255-alpha));
+ xdrawable.segment(xgc, x0, y, x1, y);
+ setColor(c);
+ }
protected void init()
{
super.init();
}
+
+ public void setPaint(Paint p)
+ {
+ super.setPaint(p);
+ if (p instanceof Color)
+ {
+ Color c = (Color) p;
+ XToolkit tk = (XToolkit) Toolkit.getDefaultToolkit();
+ HashMap colorMap = tk.colorMap;
+ gnu.x11.Color col = (gnu.x11.Color) colorMap.get(c);
+ if (col == null)
+ {
+ Colormap map = xdrawable.display.default_colormap;
+ col = map.alloc_color (c.getRed() * 256,
+ c.getGreen() * 256,
+ c.getBlue() * 256);
+ colorMap.put(c, col);
+ }
+ xgc.set_foreground(col);
+ foreground = c;
+ }
+ }
+
+ protected void fillShape(Shape s, boolean isFont)
+ {
+ synchronized (xdrawable.display) {
+ super.fillShape(s, isFont);
+ }
+ }
+
+ protected boolean rawDrawImage(Image image, int x, int y, ImageObserver obs)
+ {
+ boolean ret;
+ if (image instanceof XImage)
+ {
+ XImage xImage = (XImage) image;
+ xdrawable.copy_area(xImage.pixmap, xgc, 0, 0, xImage.getWidth(obs),
+ xImage.getHeight(obs), x, y);
+ ret = true;
+ }
+ else if (image instanceof PixmapVolatileImage)
+ {
+ PixmapVolatileImage pvi = (PixmapVolatileImage) image;
+ xdrawable.copy_area(pvi.getPixmap(), xgc, 0, 0, pvi.getWidth(obs),
+ pvi.getHeight(obs), x, y);
+ ret = true;
+ }
+ else
+ {
+ ret = super.rawDrawImage(image, x, y, obs);
+ }
+ return ret;
+ }
+
+
}
+
diff --git a/libjava/classpath/gnu/java/awt/peer/x/XGraphicsConfiguration.java b/libjava/classpath/gnu/java/awt/peer/x/XGraphicsConfiguration.java
index d6e66cbd202..11a9c9694f1 100644
--- a/libjava/classpath/gnu/java/awt/peer/x/XGraphicsConfiguration.java
+++ b/libjava/classpath/gnu/java/awt/peer/x/XGraphicsConfiguration.java
@@ -39,11 +39,20 @@ package gnu.java.awt.peer.x;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
+import java.awt.Point;
import java.awt.Rectangle;
+import java.awt.Transparency;
+import java.awt.color.ColorSpace;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
+import java.awt.image.ComponentColorModel;
+import java.awt.image.ComponentSampleModel;
+import java.awt.image.DataBuffer;
+import java.awt.image.Raster;
+import java.awt.image.SampleModel;
import java.awt.image.VolatileImage;
+import java.awt.image.WritableRaster;
public class XGraphicsConfiguration
extends GraphicsConfiguration
@@ -63,26 +72,60 @@ public class XGraphicsConfiguration
public BufferedImage createCompatibleImage(int w, int h)
{
- return new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
+ return createCompatibleImage(w, h, Transparency.OPAQUE);
+ }
+
+ public BufferedImage createCompatibleImage(int w, int h, int transparency)
+ {
+ BufferedImage bi;
+ switch (transparency)
+ {
+ case Transparency.OPAQUE:
+ DataBuffer buffer = new ZPixmapDataBuffer(w, h);
+ SampleModel sm = new ComponentSampleModel(DataBuffer.TYPE_BYTE, w, h,
+ 4, w * 4,
+ new int[]{0, 1, 2, 3 });
+ ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_LINEAR_RGB);
+ ColorModel cm = new ComponentColorModel(cs, true, false,
+ Transparency.OPAQUE,
+ DataBuffer.TYPE_BYTE);
+ WritableRaster raster = Raster.createWritableRaster(sm, buffer,
+ new Point(0, 0));
+ bi = new BufferedImage(cm, raster, false, null);
+ break;
+ case Transparency.BITMASK:
+ case Transparency.TRANSLUCENT:
+ bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
+ break;
+ default:
+ throw new IllegalArgumentException("Illegal transparency: "
+ + transparency);
+ }
+ return bi;
}
public VolatileImage createCompatibleVolatileImage(int w, int h)
{
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
+ return createCompatibleVolatileImage(w, h, Transparency.OPAQUE);
}
public VolatileImage createCompatibleVolatileImage(int width, int height,
int transparency)
{
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
- }
-
- public BufferedImage createCompatibleImage(int w, int h, int transparency)
- {
- // TODO: Implement this.
- throw new UnsupportedOperationException("Not yet implemented.");
+ VolatileImage im;
+ switch (transparency)
+ {
+ case Transparency.OPAQUE:
+ im = new PixmapVolatileImage(width, height);
+ break;
+ case Transparency.BITMASK:
+ case Transparency.TRANSLUCENT:
+ throw new UnsupportedOperationException("Not yet implemented");
+ default:
+ throw new IllegalArgumentException("Unknown transparency type: "
+ + transparency);
+ }
+ return im;
}
public ColorModel getColorModel()
diff --git a/libjava/classpath/gnu/java/awt/peer/x/XGraphicsDevice.java b/libjava/classpath/gnu/java/awt/peer/x/XGraphicsDevice.java
index 6a020ec4e7a..eff5902d22e 100644
--- a/libjava/classpath/gnu/java/awt/peer/x/XGraphicsDevice.java
+++ b/libjava/classpath/gnu/java/awt/peer/x/XGraphicsDevice.java
@@ -38,15 +38,12 @@ exception statement from your version. */
package gnu.java.awt.peer.x;
import gnu.classpath.SystemProperties;
-import gnu.java.net.local.LocalSocket;
-import gnu.java.net.local.LocalSocketAddress;
-import gnu.x11.Connection;
import gnu.x11.Display;
-import java.awt.AWTError;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
-import java.net.SocketException;
+import java.lang.reflect.Constructor;
+import java.net.Socket;
/**
* This class represents an X Display. The actual connection is established
@@ -127,33 +124,21 @@ public class XGraphicsDevice
|| displayName.hostname.equals(""))
&& SystemProperties.getProperty("gnu.xawt.no_local_sockets") == null)
{
- // TODO: Is this 100% ok?
- String sockPath = "/tmp/.X11-unix/X" + displayName.display_no;
- LocalSocketAddress addr = new LocalSocketAddress(sockPath);
- try
+ Socket socket = createLocalSocket();
+ if (socket != null)
{
- if (XToolkit.DEBUG)
- System.err.println("connecting to local socket: "
- + sockPath);
- LocalSocket socket = new LocalSocket(addr);
display = new Display(socket, "localhost",
displayName.display_no,
displayName.screen_no);
- display.connection.send_mode = Connection.ASYNCHRONOUS;
- if (XToolkit.DEBUG)
- System.err.println("connected to local socket");
- }
- catch (SocketException ex)
- {
- AWTError err = new AWTError("could not connect to X server");
- err.initCause(ex);
- throw err;
}
}
- else
- {
- display = new Display(displayName);
- }
+
+ // The following happens when we are configured to use plain sockets,
+ // when the connection is probably remote or when we couldn't load
+ // the LocalSocket class stuff.
+ if (display == null)
+ display = new Display(displayName);
+
eventPump = new XEventPump(display);
}
return display;
@@ -163,4 +148,36 @@ public class XGraphicsDevice
{
return eventPump;
}
+
+ /**
+ * Tries to load the LocalSocket class and initiate a connection to the
+ * local X server.
+ */
+ private Socket createLocalSocket()
+ {
+ Socket socket = null;
+ try
+ {
+ // TODO: Is this 100% ok?
+ String sockPath = "/tmp/.X11-unix/X" + displayName.display_no;
+ Class localSocketAddressClass =
+ Class.forName("gnu.java.net.local.LocalSocketAddress");
+ Constructor localSocketAddressConstr =
+ localSocketAddressClass.getConstructor(new Class[]{ String.class });
+ Object addr =
+ localSocketAddressConstr.newInstance(new Object[]{ sockPath });
+ Class localSocketClass =
+ Class.forName("gnu.java.net.local.LocalSocket");
+ Constructor localSocketConstructor =
+ localSocketClass.getConstructor(new Class[]{localSocketAddressClass});
+ Object localSocket =
+ localSocketConstructor.newInstance(new Object[]{ addr });
+ socket = (Socket) localSocket;
+ }
+ catch (Exception ex)
+ {
+ // Whatever goes wrong here, we return null.
+ }
+ return socket;
+ }
}
diff --git a/libjava/classpath/gnu/java/awt/peer/x/XImage.java b/libjava/classpath/gnu/java/awt/peer/x/XImage.java
index b9e993628f5..7d4636b95da 100644
--- a/libjava/classpath/gnu/java/awt/peer/x/XImage.java
+++ b/libjava/classpath/gnu/java/awt/peer/x/XImage.java
@@ -86,7 +86,7 @@ public class XImage
*/
public Graphics getGraphics()
{
- XGraphics g = new XGraphics(pixmap);
+ XGraphics2D g = new XGraphics2D(pixmap);
return g;
}
diff --git a/libjava/classpath/gnu/java/awt/peer/x/XToolkit.java b/libjava/classpath/gnu/java/awt/peer/x/XToolkit.java
index a286fd6f006..08186326ffa 100644
--- a/libjava/classpath/gnu/java/awt/peer/x/XToolkit.java
+++ b/libjava/classpath/gnu/java/awt/peer/x/XToolkit.java
@@ -44,7 +44,6 @@ import java.awt.Canvas;
import java.awt.Checkbox;
import java.awt.CheckboxMenuItem;
import java.awt.Choice;
-import java.awt.Component;
import java.awt.Dialog;
import java.awt.Dimension;
import java.awt.EventQueue;
@@ -69,6 +68,8 @@ import java.awt.TextArea;
import java.awt.TextField;
import java.awt.Transparency;
import java.awt.Window;
+import java.awt.Dialog.ModalExclusionType;
+import java.awt.Dialog.ModalityType;
import java.awt.datatransfer.Clipboard;
import java.awt.dnd.DragGestureEvent;
import java.awt.dnd.peer.DragSourceContextPeer;
@@ -88,7 +89,6 @@ import java.awt.peer.FileDialogPeer;
import java.awt.peer.FontPeer;
import java.awt.peer.FramePeer;
import java.awt.peer.LabelPeer;
-import java.awt.peer.LightweightPeer;
import java.awt.peer.ListPeer;
import java.awt.peer.MenuBarPeer;
import java.awt.peer.MenuItemPeer;
@@ -179,16 +179,16 @@ public class XToolkit
*/
public ClasspathFontPeer getClasspathFontPeer(String name, Map attrs)
{
- String canonical = XFontPeer.encodeFont(name, attrs);
+ String canonical = XFontPeer2.encodeFont(name, attrs);
ClasspathFontPeer font;
if (!fontCache.containsKey(canonical))
{
String graphics2d =
SystemProperties.getProperty("gnu.xawt.graphics2d");
- if (graphics2d != null && graphics2d.equals("gl"))
+ //if (graphics2d != null && graphics2d.equals("gl"))
font = new XFontPeer2(name, attrs);
- else
- font = new XFontPeer(name, attrs);
+// else
+// font = new XFontPeer(name, attrs);
fontCache.put(canonical, font);
}
else
@@ -601,8 +601,20 @@ public class XToolkit
return (XGraphicsDevice) env.getDefaultScreenDevice();
}
- protected LightweightPeer createComponent(Component c)
+ @Override
+ public boolean isModalExclusionTypeSupported
+ (Dialog.ModalExclusionType modalExclusionType)
{
- return new XLightweightPeer(c);
+ // TODO: Implement properly.
+ return false;
}
+
+ @Override
+ public boolean isModalityTypeSupported(Dialog.ModalityType modalityType)
+ {
+ // TODO: Implement properly.
+ return false;
+ }
+
+
}
diff --git a/libjava/classpath/gnu/java/awt/peer/x/XWindowPeer.java b/libjava/classpath/gnu/java/awt/peer/x/XWindowPeer.java
index 28cc5a5edf5..10d1e96858a 100644
--- a/libjava/classpath/gnu/java/awt/peer/x/XWindowPeer.java
+++ b/libjava/classpath/gnu/java/awt/peer/x/XWindowPeer.java
@@ -43,12 +43,16 @@ import java.awt.EventQueue;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
+import java.awt.GraphicsConfiguration;
+import java.awt.GraphicsDevice;
+import java.awt.GraphicsEnvironment;
import java.awt.Image;
import java.awt.Insets;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.event.PaintEvent;
import java.awt.event.WindowEvent;
+import java.awt.image.VolatileImage;
import gnu.x11.Window;
import gnu.x11.event.Event;
@@ -135,12 +139,22 @@ public class XWindowPeer
*/
public Graphics getGraphics()
{
- return new XGraphics(xwindow);
+ return new XGraphics2D(xwindow);
}
public Image createImage(int w, int h)
{
- return new XImage(w, h);
+ // FIXME: Should return a buffered image.
+ return createVolatileImage(w, h);
+ }
+
+ @Override
+ public VolatileImage createVolatileImage(int width, int height)
+ {
+ GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
+ GraphicsDevice gd = ge.getDefaultScreenDevice();
+ GraphicsConfiguration gc = gd.getDefaultConfiguration();
+ return gc.createCompatibleVolatileImage(width, height);
}
/**
@@ -168,6 +182,9 @@ public class XWindowPeer
new Rectangle(0, 0, w.getWidth(),
w.getHeight())));
+ Graphics g = getGraphics();
+ g.clearRect(0, 0, awtComponent.getWidth(), awtComponent.getHeight());
+ g.dispose();
// // Reset input selection.
// atts.set_override_redirect(false);
// xwindow.change_attributes(atts);
@@ -240,7 +257,7 @@ public class XWindowPeer
*/
public FontMetrics getFontMetrics(Font font)
{
- XFontPeer fontPeer = (XFontPeer) font.getPeer();
+ XFontPeer2 fontPeer = (XFontPeer2) font.getPeer();
return fontPeer.getFontMetrics(font);
}
diff --git a/libjava/classpath/gnu/java/awt/peer/x/ZPixmapDataBuffer.java b/libjava/classpath/gnu/java/awt/peer/x/ZPixmapDataBuffer.java
new file mode 100644
index 00000000000..8043c5b8f46
--- /dev/null
+++ b/libjava/classpath/gnu/java/awt/peer/x/ZPixmapDataBuffer.java
@@ -0,0 +1,62 @@
+package gnu.java.awt.peer.x;
+
+import gnu.x11.Display;
+import gnu.x11.image.ZPixmap;
+
+import java.awt.GraphicsEnvironment;
+import java.awt.image.DataBuffer;
+
+/**
+ * A DataBuffer implementation that is based on a ZPixmap. This is used
+ * as backing store for BufferedImages.
+ */
+class ZPixmapDataBuffer
+ extends DataBuffer
+{
+
+ /**
+ * The backing ZPixmap.
+ */
+ private ZPixmap zpixmap;
+
+ /**
+ * Creates a new ZPixmapDataBuffer with a specified width and height.
+ *
+ * @param d the X display
+ * @param w the width
+ * @param h the height
+ */
+ ZPixmapDataBuffer(int w, int h)
+ {
+ super(TYPE_BYTE, w * h * 3); // TODO: Support non-24-bit-resolutions.
+ GraphicsEnvironment env =
+ GraphicsEnvironment.getLocalGraphicsEnvironment();
+ XGraphicsDevice dev = (XGraphicsDevice) env.getDefaultScreenDevice();
+ Display d = dev.getDisplay();
+ zpixmap = new ZPixmap(d, w, h, d.default_pixmap_format);
+ }
+
+ /**
+ * Creates a ZPixmapDataBuffer from an existing ZPixmap.
+ *
+ * @param zpixmap the ZPixmap to wrap
+ */
+ ZPixmapDataBuffer(ZPixmap zpixmap)
+ {
+ super(TYPE_BYTE, zpixmap.get_data_length());
+ this.zpixmap = zpixmap;
+ }
+
+ @Override
+ public int getElem(int bank, int i)
+ {
+ return 0xff & zpixmap.get_data_element(i);
+ }
+
+ @Override
+ public void setElem(int bank, int i, int val)
+ {
+ zpixmap.set_data_element(i, (byte) val);
+ }
+
+}
diff --git a/libjava/classpath/gnu/java/math/Fixed.java b/libjava/classpath/gnu/java/math/Fixed.java
index e0284c329b9..ed4150b108c 100644
--- a/libjava/classpath/gnu/java/math/Fixed.java
+++ b/libjava/classpath/gnu/java/math/Fixed.java
@@ -108,6 +108,19 @@ public final class Fixed
return a & -(1 << n);
}
+ /**
+ * Truncates the number so that only the digits after the point are left.
+ *
+ * @param n the number of digits
+ * @param a the fixed point value
+ *
+ * @return the truncated value
+ */
+ public static int trunc(int n, int a)
+ {
+ return a & (0xFFFFFFFF >>> 32 - n);
+ }
+
/**
* Returns the round value of a fixed point value a
with
* the n
digits.
diff --git a/libjava/classpath/gnu/java/net/loader/URLLoader.java b/libjava/classpath/gnu/java/net/loader/URLLoader.java
index 5228bcac96d..5b9b6748b5b 100644
--- a/libjava/classpath/gnu/java/net/loader/URLLoader.java
+++ b/libjava/classpath/gnu/java/net/loader/URLLoader.java
@@ -42,6 +42,7 @@ import java.net.URL;
import java.net.URLClassLoader;
import java.net.URLStreamHandlerFactory;
import java.security.CodeSource;
+import java.security.cert.Certificate;
import java.util.ArrayList;
import java.util.jar.Manifest;
@@ -95,7 +96,7 @@ public abstract class URLLoader
this.baseURL = baseURL;
this.factory = factory;
this.cache = cache;
- this.noCertCodeSource = new CodeSource(overrideURL, null);
+ this.noCertCodeSource = new CodeSource(overrideURL, (Certificate[]) null);
}
/**
diff --git a/libjava/classpath/gnu/java/nio/charset/ISO_8859_1.java b/libjava/classpath/gnu/java/nio/charset/ISO_8859_1.java
index 2a3073a32ed..558289583dd 100644
--- a/libjava/classpath/gnu/java/nio/charset/ISO_8859_1.java
+++ b/libjava/classpath/gnu/java/nio/charset/ISO_8859_1.java
@@ -71,8 +71,12 @@ final class ISO_8859_1 extends Charset
/* These names are provided by
* http://oss.software.ibm.com/cgi-bin/icu/convexp?s=ALL
*/
- "ISO8859_1", "ISO_8859_1", "ibm-819", "ISO_8859-1:1987",
- "819"
+ "ISO8859_1",
+ "ISO_8859_1",
+ "ibm-819",
+ "ISO_8859-1:1987",
+ "819",
+ "ISO8859-1"
});
}
diff --git a/libjava/classpath/gnu/java/security/Engine.java b/libjava/classpath/gnu/java/security/Engine.java
index 44318af8ec7..85491922f30 100644
--- a/libjava/classpath/gnu/java/security/Engine.java
+++ b/libjava/classpath/gnu/java/security/Engine.java
@@ -146,7 +146,7 @@ public final class Engine
throw new IllegalArgumentException("Constructor's parameters MUST NOT be null");
Enumeration enumer = provider.propertyNames();
- String key;
+ String key = null;
String alias;
int count = 0;
boolean algorithmFound = false;
@@ -193,7 +193,7 @@ public final class Engine
Class clazz = null;
ClassLoader loader = provider.getClass().getClassLoader();
Constructor constructor = null;
- String className = provider.getProperty(service + "." + algorithm);
+ String className = provider.getProperty(key);
sb.append("Class [").append(className).append("] for algorithm [")
.append(algorithm).append("] of type [").append(service)
.append("] from provider [").append(provider).append("] ");
diff --git a/libjava/classpath/gnu/javax/sound/AudioSecurityManager.java b/libjava/classpath/gnu/javax/sound/AudioSecurityManager.java
new file mode 100644
index 00000000000..cd10e510665
--- /dev/null
+++ b/libjava/classpath/gnu/javax/sound/AudioSecurityManager.java
@@ -0,0 +1,41 @@
+package gnu.javax.sound;
+
+import javax.sound.sampled.AudioPermission;
+
+public class AudioSecurityManager
+{
+ public static enum Permission
+ {
+ PLAY, RECORD, ALL
+ }
+
+ public static final void checkPermissions()
+ {
+ checkPermissions(Permission.ALL);
+ }
+
+ public static final void checkPermissions(Permission permission)
+ {
+ SecurityManager sm = System.getSecurityManager();
+ if (sm != null)
+ {
+ String perm = null;
+ switch (permission)
+ {
+ case PLAY:
+ perm = "play";
+ break;
+
+ case RECORD:
+ perm = "record";
+ break;
+
+ case ALL: default:
+ perm = "*";
+ break;
+ }
+
+ sm.checkPermission(new AudioPermission(perm));
+ }
+ }
+}
diff --git a/libjava/classpath/gnu/javax/sound/sampled/gstreamer/GStreamerMixer.java b/libjava/classpath/gnu/javax/sound/sampled/gstreamer/GStreamerMixer.java
new file mode 100644
index 00000000000..b32db0f353c
--- /dev/null
+++ b/libjava/classpath/gnu/javax/sound/sampled/gstreamer/GStreamerMixer.java
@@ -0,0 +1,270 @@
+/* GStreamerMixer.java -- Mixer implementation.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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 for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.javax.sound.sampled.gstreamer;
+
+import java.awt.AWTPermission;
+
+import gnu.javax.sound.sampled.gstreamer.lines.GstSourceDataLine;
+
+import javax.sound.sampled.AudioFormat;
+import javax.sound.sampled.AudioPermission;
+import javax.sound.sampled.AudioSystem;
+import javax.sound.sampled.Control;
+import javax.sound.sampled.DataLine;
+import javax.sound.sampled.Line;
+import javax.sound.sampled.LineListener;
+import javax.sound.sampled.LineUnavailableException;
+import javax.sound.sampled.Mixer;
+import javax.sound.sampled.SourceDataLine;
+import javax.sound.sampled.Control.Type;
+import javax.sound.sampled.Line.Info;
+
+/**
+ * @author Mario Torre
+ */
+public class GStreamerMixer
+ implements Mixer
+{
+ public static class GstInfo extends Info
+ {
+ /* Mixer Properties */
+
+ /** Name */
+ private static final String name = "Classpath GStreamer Sound Audio Engine";
+
+ /** Vendor */
+ private static final String vendor = "GNU Classpath";
+
+ /** Description */
+ private static final String desc = "GStreamer-based software mixer";
+
+ /** Version */
+ private static final String vers = "0.0.1";
+
+ protected GstInfo()
+ {
+ super(name, vendor, desc, vers);
+ }
+ }
+
+ public static final String GST_BACKEND = GstInfo.name;
+ public static final String GST_DECODER = "decoder";
+
+ private static AudioFormat[] BASIC_FORMATS =
+ {
+ new AudioFormat(AudioFormat.Encoding.PCM_UNSIGNED,
+ AudioSystem.NOT_SPECIFIED,
+ AudioSystem.NOT_SPECIFIED,
+ AudioSystem.NOT_SPECIFIED,
+ AudioSystem.NOT_SPECIFIED,
+ AudioSystem.NOT_SPECIFIED,
+ true),
+
+ new AudioFormat(AudioFormat.Encoding.PCM_UNSIGNED,
+ AudioSystem.NOT_SPECIFIED,
+ AudioSystem.NOT_SPECIFIED,
+ AudioSystem.NOT_SPECIFIED,
+ AudioSystem.NOT_SPECIFIED,
+ AudioSystem.NOT_SPECIFIED,
+ false),
+ };
+
+ /** Mixer Info */
+ private static final Mixer.Info INFO = new GStreamerMixer.GstInfo();
+
+ public Line getLine(Line.Info info)
+ throws LineUnavailableException
+ {
+ // get all the lines formats supported by this mixer and
+ // and see if there is one matching the given line
+ // if the format comes from the gstreamer backend
+ // gstreamer will be able to deal with it
+ Class clazz = info.getLineClass();
+ DataLine.Info _info = (DataLine.Info) info;
+
+ if (clazz == SourceDataLine.class)
+ {
+ for (AudioFormat format : _info.getFormats())
+ {
+ // see if we are a gstreamer child :)
+ if (format.properties().containsKey(GST_BACKEND));
+ {
+ // we got it
+ return new GstSourceDataLine(format);
+ }
+ }
+ }
+
+ // TODO: we also support basic PCM
+
+ throw new LineUnavailableException("Cannot open a line");
+ }
+
+ public int getMaxLines(Line.Info info)
+ {
+ // TODO
+ return 1;
+ }
+
+ public Info getMixerInfo()
+ {
+ return INFO;
+ }
+
+ public javax.sound.sampled.Line.Info[] getSourceLineInfo()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Line.Info[] getSourceLineInfo(Line.Info info)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Line[] getSourceLines()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public javax.sound.sampled.Line.Info[] getTargetLineInfo()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Line.Info[] getTargetLineInfo(Line.Info info)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Line[] getTargetLines()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public boolean isLineSupported(Line.Info info)
+ {
+ // We support any kind of mixer that comes
+ // from our gstreamer backend.
+ // In addition, we support PCM based audio streams for
+ // direct playback.
+ if (info instanceof DataLine.Info)
+ {
+ DataLine.Info _dinfo = (DataLine.Info) info;
+ _dinfo.getFormats();
+ }
+
+ return true;
+ }
+
+ public boolean isSynchronizationSupported(Line[] lines, boolean sync)
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public void synchronize(Line[] lines, boolean sync)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void unsynchronize(Line[] lines)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void addLineListener(LineListener listener)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void close()
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ public Control getControl(Type what)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Control[] getControls()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public javax.sound.sampled.Line.Info getLineInfo()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public boolean isControlSupported(Type what)
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public boolean isOpen()
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public void open() throws LineUnavailableException
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void removeLineListener(LineListener listener)
+ {
+ // TODO Auto-generated method stub
+ }
+}
diff --git a/libjava/classpath/gnu/javax/sound/sampled/gstreamer/GStreamerMixerProvider.java b/libjava/classpath/gnu/javax/sound/sampled/gstreamer/GStreamerMixerProvider.java
new file mode 100644
index 00000000000..61a8940e2da
--- /dev/null
+++ b/libjava/classpath/gnu/javax/sound/sampled/gstreamer/GStreamerMixerProvider.java
@@ -0,0 +1,71 @@
+/*GStreamerMixerProvider -- GNU Classpath GStreamer Mixer provider.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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 for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.javax.sound.sampled.gstreamer;
+
+import javax.sound.sampled.Mixer;
+import javax.sound.sampled.Mixer.Info;
+import javax.sound.sampled.spi.MixerProvider;
+
+/**
+ * Concrete provider class for GStreamerMixer.
+ *
+ * @author Mario Torre
+ */
+public class GStreamerMixerProvider
+ extends MixerProvider
+{
+ private static final GStreamerMixer mixer = new GStreamerMixer();
+
+ @Override
+ public Mixer getMixer(Info info)
+ {
+ if (info.equals(mixer.getMixerInfo()))
+ return mixer;
+
+ throw new
+ IllegalArgumentException("This provider cannot handle a mixer or type: "
+ + info.getName());
+ }
+
+ @Override
+ public Info[] getMixerInfo()
+ {
+ Info[] info = { mixer.getMixerInfo() };
+ return info;
+ }
+}
diff --git a/libjava/classpath/gnu/javax/sound/sampled/gstreamer/io/GstAudioFileReader.java b/libjava/classpath/gnu/javax/sound/sampled/gstreamer/io/GstAudioFileReader.java
new file mode 100644
index 00000000000..53b2155d8ec
--- /dev/null
+++ b/libjava/classpath/gnu/javax/sound/sampled/gstreamer/io/GstAudioFileReader.java
@@ -0,0 +1,139 @@
+/*GstAudioFileReader -- GNU Classpath GStreamer AudioFileReader.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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 for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.javax.sound.sampled.gstreamer.io;
+
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+
+import javax.sound.sampled.AudioFileFormat;
+import javax.sound.sampled.AudioFormat;
+import javax.sound.sampled.AudioInputStream;
+import javax.sound.sampled.AudioSystem;
+import javax.sound.sampled.UnsupportedAudioFileException;
+import javax.sound.sampled.spi.AudioFileReader;
+
+/**
+ * An implementation of a general AudioFileReader. Uses GStreamer to
+ * parse and retrieve informations about the file passed as input.
+ *
+ * @author Mario Torre
+ */
+public class GstAudioFileReader
+ extends AudioFileReader
+{
+ @Override
+ public AudioFileFormat getAudioFileFormat(File file)
+ throws UnsupportedAudioFileException, IOException
+ {
+ throw new UnsupportedAudioFileException("Unsupported encoding.");
+ }
+
+ @Override
+ public AudioFileFormat getAudioFileFormat(InputStream is)
+ throws UnsupportedAudioFileException, IOException
+ {
+ throw new UnsupportedAudioFileException("Unsupported encoding.");
+ }
+
+ @Override
+ public AudioFileFormat getAudioFileFormat(URL url)
+ throws UnsupportedAudioFileException, IOException
+ {
+ return getAudioFileFormat(new BufferedInputStream(url.openStream()));
+ }
+
+ @Override
+ public AudioInputStream getAudioInputStream(File file)
+ throws UnsupportedAudioFileException, IOException
+ {
+ InputStream stream = new FileInputStream(file);
+ long length = file.length();
+
+ AudioFormat format = null;
+
+ try
+ {
+ format = GstAudioFileReaderNativePeer.getAudioFormat(file);
+ }
+ catch (Exception e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ // get the header size
+ if (format == null)
+ throw new UnsupportedAudioFileException("Unsupported encoding.");
+
+ return new AudioInputStream(stream, format, length);
+ }
+
+ @Override
+ public AudioInputStream getAudioInputStream(InputStream is)
+ throws UnsupportedAudioFileException, IOException
+ {
+ AudioFormat format = null;
+
+ try
+ {
+ format = GstAudioFileReaderNativePeer.getAudioFormat(is);
+ }
+ catch (Exception e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ // get the header size
+ if (format == null)
+ throw new UnsupportedAudioFileException("Unsupported encoding.");
+
+ return new AudioInputStream(is, format, AudioSystem.NOT_SPECIFIED);
+ }
+
+ @Override
+ public AudioInputStream getAudioInputStream(URL url)
+ throws UnsupportedAudioFileException, IOException
+ {
+ return getAudioInputStream(new BufferedInputStream(url.openStream()));
+ }
+}
diff --git a/libjava/classpath/gnu/javax/sound/sampled/gstreamer/io/GstAudioFileReaderNativePeer.java b/libjava/classpath/gnu/javax/sound/sampled/gstreamer/io/GstAudioFileReaderNativePeer.java
new file mode 100644
index 00000000000..45ae4ff8588
--- /dev/null
+++ b/libjava/classpath/gnu/javax/sound/sampled/gstreamer/io/GstAudioFileReaderNativePeer.java
@@ -0,0 +1,276 @@
+/*GstAudioFileReaderNativePeer -- GNU Classpath GStreamer AudioFileReader
+ native peer class.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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 for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.javax.sound.sampled.gstreamer.io;
+
+import gnu.javax.sound.sampled.gstreamer.GStreamerMixer;
+
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.sound.sampled.AudioFormat;
+import javax.sound.sampled.AudioSystem;
+import javax.sound.sampled.AudioFormat.Encoding;
+
+/**
+ * GStreamer native peer for GstAudioFileReader.
+ *
+ * @author Mario Torre
+ */
+final class GstAudioFileReaderNativePeer
+{
+ private static final String GST_ENCODING = "GStreamer Generic Audio Reader";
+
+ private static class GstHeader
+ {
+ /*
+ * NOTE: these properties are accessed by the native code, be careful
+ * if you change them.
+ * Not all the fields are necessarily set.
+ *
+ */
+ public String file = null;
+
+ public String suffix = null;
+
+ public String name = null;
+
+ public String mimetype = null;
+
+ public String endianness = null;
+
+ public String channels = null;
+
+ public String rate = null;
+
+ public String width = null;
+
+ public String depth = null;
+
+ public String isSigned = null;
+
+ public String layer = null;
+ public String bitrate = null;
+ public String framed = null;
+ public String type = null;
+ }
+
+ public static AudioFormat getAudioFormat(File file) throws Exception
+ {
+ GstHeader header = new GstHeader();
+ header.file = file.getAbsolutePath();
+
+ if (!gstreamer_get_audio_format_file(header))
+ return null;
+
+ return getAudioFormat(header);
+ }
+
+ public static AudioFormat getAudioFormat(InputStream is) throws Exception
+ {
+ GstHeader header = new GstHeader();
+
+ BufferedInputStream stream = new BufferedInputStream(is);
+ if(!stream.markSupported())
+ throw new IOException("Stream must support marking.");
+
+ stream.mark(0);
+
+ if (!gstreamer_get_audio_format_stream(header, stream))
+ return null;
+
+ return getAudioFormat(header);
+ }
+
+ public static AudioFormat getAudioFormat(URL url) throws Exception
+ {
+ GstHeader header = new GstHeader();
+ header.file = url.toExternalForm();
+
+ BufferedInputStream stream = new BufferedInputStream(url.openStream());
+ if(!stream.markSupported())
+ throw new IOException("Stream must support marking.");
+
+ stream.mark(0);
+
+ if (!gstreamer_get_audio_format_stream(header, stream))
+ return null;
+
+ return getAudioFormat(header);
+ }
+
+ private static Encoding getEncoding(GstHeader header)
+ {
+ StringBuilder buffer = new StringBuilder();
+
+ if (header.name == null)
+ {
+ buffer.append(GST_ENCODING);
+ if (header.mimetype != null)
+ {
+ buffer.append(" ");
+ buffer.append(header.mimetype);
+ }
+
+ header.name = buffer.toString();
+ }
+ else
+ {
+ // strip the "decoder" word from the name, if any
+ // this is a bit ugly, the alternative would be to still output the
+ // full name of the decoder/demuxer
+ String lowerCase = header.name.toLowerCase();
+ int index = lowerCase.indexOf("decoder");
+ if (index == -1)
+ {
+ index = lowerCase.indexOf("demuxer");
+ }
+
+ if (index == -1)
+ index = lowerCase.length();
+
+ buffer.append(header.name.substring(0, index));
+
+ }
+
+ return new Encoding(buffer.toString().trim());
+ }
+
+ private static AudioFormat getAudioFormat(GstHeader header)
+ throws Exception
+ {
+ int na = AudioSystem.NOT_SPECIFIED;
+
+ /* we use mimetype as an header, but this could have some side effects */
+ Encoding encoding = getEncoding(header);
+
+ float sampleRate = ((header.rate != null) ?
+ new Float(header.rate).floatValue() : na);
+
+ int sampleSizeInBits = ((header.depth != null) ?
+ new Integer(header.depth).intValue() : na);
+
+ int channels = ((header.channels != null) ?
+ new Integer(header.channels).intValue() : na);
+
+ boolean bigEndian = false;
+ if (header.endianness != null)
+ {
+ if (header.endianness.compareTo("4321") == 0)
+ bigEndian = true;
+ }
+
+ int frameSize = na;
+ float frameRate = na;
+ String lowerCase = header.name.toLowerCase();
+
+ // FIXME: frameRate = sampleRate in these cases under all the tests so far
+ // but I'm not sure if this is always correct...
+ if (lowerCase.contains("law") || lowerCase.contains("au") ||
+ lowerCase.contains("x-au"))
+ {
+ frameSize = (sampleSizeInBits >> 3) * channels;
+ frameRate = sampleRate;
+ }
+ else if (lowerCase.contains("wav"))
+ {
+ frameSize = ((sampleSizeInBits + 7) / 8) * channels;
+ frameRate = sampleRate;
+ }
+ else if (lowerCase.contains("iff"))
+ {
+ frameSize = (sampleSizeInBits * channels) / 8;
+ frameRate = sampleRate;
+ }
+
+ // write all the additional properties we got to identify
+ // the gstreamer plugin actually used to deal with this stream
+ Map properties = new HashMap();
+ properties.put(GStreamerMixer.GST_BACKEND, true);
+ properties.put(GStreamerMixer.GST_DECODER, header.name);
+
+ /* now we put in some of the additional properties if we have them */
+ if (header.type != null) properties.put("type", header.type);
+ if (header.framed != null) properties.put("framed", header.framed);
+ if (header.bitrate != null) properties.put("bitrate", header.bitrate);
+ if (header.isSigned != null) properties.put("isSigned", header.isSigned);
+ if (header.depth != null) properties.put("depth", header.depth);
+ if (header.mimetype != null) properties.put("mimetype", header.mimetype);
+
+ AudioFormat format = new AudioFormat(encoding,
+ sampleRate,
+ sampleSizeInBits,
+ channels,
+ frameSize,
+ frameRate,
+ bigEndian,
+ properties);
+ return format;
+ }
+
+ /* ***** native methods ***** */
+
+ /**
+ * Retrieve header information about the file being played.
+ *
+ * @param info
+ * @return
+ */
+ native static final
+ protected boolean gstreamer_get_audio_format_stream(GstHeader info,
+ BufferedInputStream istream);
+
+ /**
+ * Retrieve header information about the file being played.
+ *
+ * @param info
+ * @return
+ */
+ native static final
+ protected boolean gstreamer_get_audio_format_file(GstHeader info);
+
+ static
+ {
+ System.loadLibrary("gstreamerpeer"); //$NON-NLS-1$
+ }
+}
diff --git a/libjava/classpath/native/jni/classpath/native_state.h b/libjava/classpath/gnu/javax/sound/sampled/gstreamer/io/GstAudioFileWriter.java
similarity index 59%
rename from libjava/classpath/native/jni/classpath/native_state.h
rename to libjava/classpath/gnu/javax/sound/sampled/gstreamer/io/GstAudioFileWriter.java
index 641e588827d..9b395dca24a 100644
--- a/libjava/classpath/native/jni/classpath/native_state.h
+++ b/libjava/classpath/gnu/javax/sound/sampled/gstreamer/io/GstAudioFileWriter.java
@@ -1,5 +1,5 @@
-/* Magical NSA API -- Associate a C ptr with an instance of an object
- Copyright (C) 1998 Free Software Foundation, Inc.
+/*GstAudioFileWriter -- GNU Classpath GStreamer AudioFileReader.
+ Copyright (C) 2007 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -7,7 +7,7 @@ GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
-
+
GNU Classpath 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
@@ -34,38 +34,47 @@ or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
+package gnu.javax.sound.sampled.gstreamer.io;
-#ifndef JCL_NATIVE_STATE
-#define JCL_NATIVE_STATE
+import java.io.File;
+import java.io.IOException;
+import java.io.OutputStream;
-#include
+import javax.sound.sampled.AudioInputStream;
+import javax.sound.sampled.AudioFileFormat.Type;
+import javax.sound.sampled.spi.AudioFileWriter;
-struct state_table
+public class GstAudioFileWriter
+ extends AudioFileWriter
{
- jint size; /* number of slots, should be prime */
- jfieldID hash; /* field containing System.identityHashCode(this) */
- jclass clazz; /* lock aquired for reading/writing nodes */
- struct state_node **head;
-};
+ @Override
+ public Type[] getAudioFileTypes()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
-struct state_node
-{
- jint key;
- void *c_state;
- struct state_node *next;
-};
+ @Override
+ public Type[] getAudioFileTypes(AudioInputStream ais)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
-struct state_table *cp_gtk_init_state_table_with_size (JNIEnv *, jclass, jint);
-struct state_table *cp_gtk_init_state_table (JNIEnv *, jclass);
+ @Override
+ public int write(AudioInputStream ais, Type type, File out)
+ throws IOException
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
-/* lowlevel api */
-void cp_gtk_set_state_oid (JNIEnv *, jobject, struct state_table *, jint, void *);
-void *cp_gtk_get_state_oid (JNIEnv *, jobject, struct state_table *, jint);
-void *cp_gtk_remove_state_oid (JNIEnv *, jobject, struct state_table *, jint);
+ @Override
+ public int write(AudioInputStream ais, Type type, OutputStream os)
+ throws IOException
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
-/* highlevel api */
-int cp_gtk_set_state (JNIEnv *, jobject, struct state_table *, void *);
-void *cp_gtk_get_state (JNIEnv *, jobject, struct state_table *);
-void *cp_gtk_remove_state_slot (JNIEnv *, jobject, struct state_table *);
-
-#endif
+}
diff --git a/libjava/classpath/gnu/javax/sound/sampled/gstreamer/lines/GstDataLine.java b/libjava/classpath/gnu/javax/sound/sampled/gstreamer/lines/GstDataLine.java
new file mode 100644
index 00000000000..0467c955905
--- /dev/null
+++ b/libjava/classpath/gnu/javax/sound/sampled/gstreamer/lines/GstDataLine.java
@@ -0,0 +1,145 @@
+/* GstDataLine.java -- Abstract DataLine.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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 for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.javax.sound.sampled.gstreamer.lines;
+
+import javax.sound.sampled.AudioFormat;
+import javax.sound.sampled.Control;
+import javax.sound.sampled.DataLine;
+import javax.sound.sampled.LineListener;
+import javax.sound.sampled.LineUnavailableException;
+import javax.sound.sampled.Control.Type;
+
+public abstract class GstDataLine
+ implements DataLine
+{
+ public static enum State
+ {
+ PLAY, PAUSE, STOP
+ }
+
+ public static final int DEFAULT_BUFFER_SIZE = 1024;
+
+ /** Represents the playing state of this Line. */
+ protected State state = State.STOP;
+
+ /** Represents if this Line is opened or not. */
+ protected Boolean open = false;
+
+ private AudioFormat format = null;
+ private int bufferSize = 0;
+
+ public GstDataLine(AudioFormat format)
+ {
+ this.format = format;
+ this.bufferSize = DEFAULT_BUFFER_SIZE;
+ }
+
+ public GstDataLine(AudioFormat format, int bufferSize)
+ {
+ this.format = format;
+ this.bufferSize = bufferSize;
+ }
+
+ public int getBufferSize()
+ {
+ return this.bufferSize;
+ }
+
+ public AudioFormat getFormat()
+ {
+ return this.format;
+ }
+
+ public float getLevel()
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public boolean isRunning()
+ {
+ return (state == State.PLAY || state == State.PAUSE);
+ }
+
+ public void addLineListener(LineListener listener)
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ public Control getControl(Type what)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Control[] getControls()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public javax.sound.sampled.Line.Info getLineInfo()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public boolean isControlSupported(Type what)
+ {
+ return false;
+ }
+
+ public boolean isOpen()
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public void open() throws LineUnavailableException
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void removeLineListener(LineListener listener)
+ {
+ // TODO Auto-generated method stub
+
+ }
+}
diff --git a/libjava/classpath/gnu/java/awt/peer/x/XLightweightPeer.java b/libjava/classpath/gnu/javax/sound/sampled/gstreamer/lines/GstNativeDataLine.java
similarity index 80%
rename from libjava/classpath/gnu/java/awt/peer/x/XLightweightPeer.java
rename to libjava/classpath/gnu/javax/sound/sampled/gstreamer/lines/GstNativeDataLine.java
index 2613d84d80c..2b41a118672 100644
--- a/libjava/classpath/gnu/java/awt/peer/x/XLightweightPeer.java
+++ b/libjava/classpath/gnu/javax/sound/sampled/gstreamer/lines/GstNativeDataLine.java
@@ -1,5 +1,5 @@
-/* XLightweightPeer.java -- A lightweight peer for X
- Copyright (C) 2006 Free Software Foundation, Inc.
+/* GstNativeDataLine.java -- SourceDataLine implementation.
+ Copyright (C) 2007 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -35,22 +35,14 @@ this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
+package gnu.javax.sound.sampled.gstreamer.lines;
-package gnu.java.awt.peer.x;
-
-import java.awt.Component;
-import java.awt.peer.LightweightPeer;
-
-import gnu.java.awt.peer.swing.SwingContainerPeer;
-
-public class XLightweightPeer
- extends SwingContainerPeer
- implements LightweightPeer
+public class GstNativeDataLine
{
-
- XLightweightPeer(Component c)
+
+
+ static
{
- super(c);
- init(c, null);
+ System.loadLibrary("gstreamerpeer"); //$NON-NLS-1$
}
}
diff --git a/libjava/classpath/gnu/javax/sound/sampled/gstreamer/lines/GstPipeline.java b/libjava/classpath/gnu/javax/sound/sampled/gstreamer/lines/GstPipeline.java
new file mode 100644
index 00000000000..d1460e5090f
--- /dev/null
+++ b/libjava/classpath/gnu/javax/sound/sampled/gstreamer/lines/GstPipeline.java
@@ -0,0 +1,57 @@
+/* GstPipeline.java -- Represents a Gstreamer Pipeline.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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 for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+package gnu.javax.sound.sampled.gstreamer.lines;
+
+import gnu.classpath.Pointer;
+
+/**
+ *
+ * @author Mario Torre
+ */
+public class GstPipeline
+{
+ /**
+ * This is the native GStreamer Pipeline.
+ *
+ * This field is used by the native code, so any change to it must be
+ * followed by similar changes in the native peer.
+ */
+ private Pointer pipeline;
+
+ native private void setState();
+
+}
diff --git a/libjava/classpath/gnu/javax/sound/sampled/gstreamer/lines/GstSourceDataLine.java b/libjava/classpath/gnu/javax/sound/sampled/gstreamer/lines/GstSourceDataLine.java
new file mode 100644
index 00000000000..d1a0262e5b5
--- /dev/null
+++ b/libjava/classpath/gnu/javax/sound/sampled/gstreamer/lines/GstSourceDataLine.java
@@ -0,0 +1,134 @@
+/* GstSourceDataLine.java -- SourceDataLine implementation.
+ Copyright (C) 2007 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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 for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.javax.sound.sampled.gstreamer.lines;
+
+import gnu.javax.sound.AudioSecurityManager;
+
+import javax.sound.sampled.AudioFormat;
+import javax.sound.sampled.LineUnavailableException;
+import javax.sound.sampled.SourceDataLine;
+
+import static gnu.javax.sound.AudioSecurityManager.Permission;
+
+public class GstSourceDataLine
+ extends GstDataLine implements SourceDataLine
+{
+ public GstSourceDataLine(AudioFormat format)
+ {
+ super(format);
+ }
+
+ public void open(AudioFormat fmt) throws LineUnavailableException
+ {
+ AudioSecurityManager.checkPermissions(Permission.PLAY);
+ throw new LineUnavailableException("Line unavailable");
+ }
+
+ public void open(AudioFormat fmt, int size) throws LineUnavailableException
+ {
+ AudioSecurityManager.checkPermissions(Permission.PLAY);
+ throw new LineUnavailableException("Line unavailable");
+ }
+
+ public int write(byte[] buf, int offset, int length)
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public int available()
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public void drain()
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void flush()
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ public int getFramePosition()
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public long getLongFramePosition()
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public long getMicrosecondPosition()
+ {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public boolean isActive()
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public void start()
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void stop()
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void close()
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+}
diff --git a/libjava/classpath/gnu/xml/dom/DomDocument.java b/libjava/classpath/gnu/xml/dom/DomDocument.java
index 5d06a428be4..bcc729335d5 100644
--- a/libjava/classpath/gnu/xml/dom/DomDocument.java
+++ b/libjava/classpath/gnu/xml/dom/DomDocument.java
@@ -87,6 +87,7 @@ public class DomDocument
private final DOMImplementation implementation;
private boolean checkingCharacters = true;
boolean checkingWellformedness = true;
+ private boolean defaultAttributes = true;
boolean building; // if true, skip mutation events in the tree
@@ -155,7 +156,15 @@ public class DomDocument
public void setCheckingCharacters(boolean flag)
{
checkingCharacters = flag;
- }
+ }
+
+ /**
+ * Sets whether to default attributes for new elements.
+ */
+ public void setDefaultAttributes(boolean flag)
+ {
+ defaultAttributes = flag;
+ }
/**
* DOM L1
@@ -607,7 +616,8 @@ public class DomDocument
domElement.localName = null;
element = domElement;
}
- defaultAttributes(element, name);
+ if (defaultAttributes)
+ setDefaultAttributes(element, name);
return element;
}
@@ -652,11 +662,12 @@ public class DomDocument
}
Element element = new DomElement(this, namespaceURI, name);
- defaultAttributes(element, name);
+ if (defaultAttributes)
+ setDefaultAttributes(element, name);
return element;
}
- private void defaultAttributes(Element element, String name)
+ private void setDefaultAttributes(Element element, String name)
{
DomDoctype doctype = (DomDoctype) getDoctype();
if (doctype == null)
@@ -671,9 +682,11 @@ public class DomDocument
for (Iterator i = info.attributes(); i != null && i.hasNext(); )
{
DTDAttributeTypeInfo attr = (DTDAttributeTypeInfo) i.next();
+ String value = attr.value;
+ if ("#IMPLIED".equals(attr.mode) && value == null)
+ continue;
DomAttr node = (DomAttr) createAttribute(attr.name);
- String value = attr.value;
if (value == null)
{
value = "";
diff --git a/libjava/classpath/gnu/xml/dom/DomElement.java b/libjava/classpath/gnu/xml/dom/DomElement.java
index f55b084cc94..9fd81e9705b 100644
--- a/libjava/classpath/gnu/xml/dom/DomElement.java
+++ b/libjava/classpath/gnu/xml/dom/DomElement.java
@@ -124,7 +124,7 @@ public class DomElement
node.attributes = new DomNamedNodeMap(node, Node.ATTRIBUTE_NODE);
for (DomNode ctx = attributes.first; ctx != null; ctx = ctx.next)
{
- node.attributes.setNamedItemNS(ctx.cloneNode(true));
+ node.attributes.setNamedItem(ctx.cloneNode(true), true, true);
}
}
return node;
diff --git a/libjava/classpath/gnu/xml/dom/DomNamedNodeMap.java b/libjava/classpath/gnu/xml/dom/DomNamedNodeMap.java
index e3f08e4b4b7..e37cc3dceb5 100644
--- a/libjava/classpath/gnu/xml/dom/DomNamedNodeMap.java
+++ b/libjava/classpath/gnu/xml/dom/DomNamedNodeMap.java
@@ -148,7 +148,7 @@ public class DomNamedNodeMap
*/
public Node setNamedItem(Node arg)
{
- return setNamedItem(arg, false);
+ return setNamedItem(arg, false, false);
}
/**
@@ -160,10 +160,10 @@ public class DomNamedNodeMap
*/
public Node setNamedItemNS(Node arg)
{
- return setNamedItem(arg, true);
+ return setNamedItem(arg, true, false);
}
- Node setNamedItem(Node arg, boolean ns)
+ Node setNamedItem(Node arg, boolean ns, boolean cloning)
{
if (readonly)
{
@@ -171,7 +171,7 @@ public class DomNamedNodeMap
}
DomNode node = (DomNode) arg;
- if (node.owner != owner.owner)
+ if (!cloning && node.owner != owner.owner)
{
throw new DomDOMException(DOMException.WRONG_DOCUMENT_ERR);
}
diff --git a/libjava/classpath/gnu/xml/dom/DomNode.java b/libjava/classpath/gnu/xml/dom/DomNode.java
index 9af3f3e5498..1cbdc2aecc0 100644
--- a/libjava/classpath/gnu/xml/dom/DomNode.java
+++ b/libjava/classpath/gnu/xml/dom/DomNode.java
@@ -1108,26 +1108,47 @@ public abstract class DomNode
*/
public Node cloneNode(boolean deep)
{
- DomNode node = (DomNode) clone();
-
if (deep)
{
- DomDocument doc = (nodeType == DOCUMENT_NODE) ?
- (DomDocument) node : node.owner;
- boolean building = doc.building;
+ return cloneNodeDeepInternal(true, null);
+ }
+
+ DomNode node = (DomNode) clone();
+ if (nodeType == ENTITY_REFERENCE_NODE)
+ {
+ node.makeReadonly();
+ }
+ notifyUserDataHandlers(UserDataHandler.NODE_CLONED, this, node);
+ return node;
+ }
+
+ /**
+ * Returns a deep clone of this node.
+ */
+ private DomNode cloneNodeDeepInternal(boolean root, DomDocument doc)
+ {
+ DomNode node = (DomNode) clone();
+ boolean building = false; // Never used unless root is true
+ if (root)
+ {
+ doc = (nodeType == DOCUMENT_NODE) ? (DomDocument) node : node.owner;
+ building = doc.building;
doc.building = true; // Permit certain structural rules
- for (DomNode ctx = first; ctx != null; ctx = ctx.next)
- {
- DomNode newChild = (DomNode) ctx.cloneNode(deep);
- newChild.setOwner(doc);
- node.appendChild(newChild);
- }
- doc.building = building;
+ }
+ node.owner = doc;
+ for (DomNode ctx = first; ctx != null; ctx = ctx.next)
+ {
+ DomNode newChild = ctx.cloneNodeDeepInternal(false, doc);
+ node.appendChild(newChild);
}
if (nodeType == ENTITY_REFERENCE_NODE)
{
node.makeReadonly();
}
+ if (root)
+ {
+ doc.building = building;
+ }
notifyUserDataHandlers(UserDataHandler.NODE_CLONED, this, node);
return node;
}
diff --git a/libjava/classpath/gnu/xml/dom/ls/SAXEventSink.java b/libjava/classpath/gnu/xml/dom/ls/SAXEventSink.java
index 364c576d196..0a165aafbad 100644
--- a/libjava/classpath/gnu/xml/dom/ls/SAXEventSink.java
+++ b/libjava/classpath/gnu/xml/dom/ls/SAXEventSink.java
@@ -138,6 +138,7 @@ public class SAXEventSink
doc = new DomDocument();
doc.setStrictErrorChecking(false);
doc.setBuilding(true);
+ doc.setDefaultAttributes(false);
ctx = doc;
final String FEATURES = "http://xml.org/sax/features/";
@@ -185,6 +186,7 @@ public class SAXEventSink
{
doc.setStrictErrorChecking(true);
doc.setBuilding(false);
+ doc.setDefaultAttributes(true);
DomDoctype doctype = (DomDoctype) doc.getDoctype();
if (doctype != null)
{
diff --git a/libjava/classpath/gnu/xml/stream/XMLParser.java b/libjava/classpath/gnu/xml/stream/XMLParser.java
index fae4afec808..c1eee946e69 100644
--- a/libjava/classpath/gnu/xml/stream/XMLParser.java
+++ b/libjava/classpath/gnu/xml/stream/XMLParser.java
@@ -4598,6 +4598,28 @@ public class XMLParser
}
return false;
}
+
+ public String toString()
+ {
+ StringBuffer buf = new StringBuffer(getClass().getName());
+ buf.append('[');
+ buf.append("name=");
+ buf.append(name);
+ if (value != null)
+ {
+ buf.append(",value=");
+ buf.append(value);
+ }
+ if (type != null)
+ {
+ buf.append(",type=");
+ buf.append(type);
+ }
+ if (specified)
+ buf.append(",specified");
+ buf.append(']');
+ return buf.toString();
+ }
}
diff --git a/libjava/classpath/gnu/xml/transform/WithParam.java b/libjava/classpath/gnu/xml/transform/WithParam.java
index 0fb09d61eb9..bcfe1e9b7f0 100644
--- a/libjava/classpath/gnu/xml/transform/WithParam.java
+++ b/libjava/classpath/gnu/xml/transform/WithParam.java
@@ -81,6 +81,10 @@ final class WithParam
{
return select.evaluate(context, pos, len);
}
+ else if (content == null)
+ {
+ return "";
+ }
else
{
Document doc = (context instanceof Document) ? (Document) context :
diff --git a/libjava/classpath/include/Makefile.am b/libjava/classpath/include/Makefile.am
index 9cb9a05cfc2..8f53940490a 100644
--- a/libjava/classpath/include/Makefile.am
+++ b/libjava/classpath/include/Makefile.am
@@ -15,12 +15,14 @@ $(top_srcdir)/include/gnu_javax_sound_midi_alsa_AlsaMidiDeviceProvider.h \
$(top_srcdir)/include/gnu_javax_sound_midi_dssi_DSSIMidiDeviceProvider.h \
$(top_srcdir)/include/gnu_javax_sound_midi_dssi_DSSISynthesizer.h
+GST_PEER_H_FILES = \
+$(top_srcdir)/include/gnu_javax_sound_sampled_gstreamer_io_GstAudioFileReaderNativePeer.h
+
XMLJ_H_FILES = \
$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeDocument.h \
$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeXPathNodeList.h \
$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeDocumentType.h \
$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeProcessingInstruction.h \
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeXPathNSResolver.h \
$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeTypeInfo.h \
$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeNodeList.h \
$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeNotation.h \
@@ -76,7 +78,7 @@ $(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkTextFieldPeer.h \
$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkToolkit.h \
$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkWindowPeer.h \
$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkVolatileImage.h \
-$(top_srcdir)/include/GtkDragSourceContextPeer.h
+$(top_srcdir)/include/gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer.h
QTPEER_H_FILES = \
$(top_srcdir)/include/gnu_java_awt_peer_qt_QtCheckboxPeer.h \
@@ -102,7 +104,6 @@ $(top_srcdir)/include/gnu_java_awt_peer_qt_QtPanelPeer.h \
$(top_srcdir)/include/gnu_java_awt_peer_qt_QPainterPath.h \
$(top_srcdir)/include/gnu_java_awt_peer_qt_QtFontMetrics.h \
$(top_srcdir)/include/gnu_java_awt_peer_qt_QtScrollPanePeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtGraphicsEnvironment.h \
$(top_srcdir)/include/gnu_java_awt_peer_qt_QMatrix.h \
$(top_srcdir)/include/gnu_java_awt_peer_qt_QtLabelPeer.h \
$(top_srcdir)/include/gnu_java_awt_peer_qt_QtPopupMenuPeer.h \
@@ -113,7 +114,6 @@ $(top_srcdir)/include/gnu_java_awt_peer_qt_QtCanvasPeer.h \
$(top_srcdir)/include/gnu_java_awt_peer_qt_QtMenuComponentPeer.h \
$(top_srcdir)/include/gnu_java_awt_peer_qt_MainQtThread.h \
$(top_srcdir)/include/gnu_java_awt_peer_qt_QtFileDialogPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtContainerPeer.h \
$(top_srcdir)/include/gnu_java_awt_peer_qt_QtEmbeddedWindowPeer.h
GCONF_PREFS_FILES = \
@@ -121,6 +121,7 @@ $(top_srcdir)/include/gnu_java_util_prefs_gconf_GConfNativePeer.h
H_FILES = \
$(SOUND_H_FILES) \
+$(GST_PEER_H_FILES) \
$(XMLJ_H_FILES) \
$(GTKPEER_H_FILES) \
$(QTPEER_H_FILES) \
@@ -156,30 +157,204 @@ if CREATE_JNI_HEADERS
all-local: $(H_FILES)
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_%.h: $(top_builddir)/$(CLASSDIR)/gnu/xml/libxmlj/dom/%.class
- $(JAVAH) -o $@ gnu.xml.libxmlj.dom.$*
-
-$(top_srcdir)/include/gnu_xml_libxmlj_sax_%.h: $(top_builddir)/$(CLASSDIR)/gnu/xml/libxmlj/sax/%.class
- $(JAVAH) -o $@ gnu.xml.libxmlj.sax.$*
-
-$(top_srcdir)/include/gnu_xml_libxmlj_transform_%.h: $(top_builddir)/$(CLASSDIR)/gnu/xml/libxmlj/transform/%.class
- $(JAVAH) -o $@ gnu.xml.libxmlj.transform.$*
-
-$(top_srcdir)/include/gnu_java_awt_peer_gtk_%.h: $(top_builddir)/$(CLASSDIR)/gnu/java/awt/peer/gtk/%.class
- $(JAVAH) -o $@ gnu.java.awt.peer.gtk.$*
-
-$(top_srcdir)/include/gnu_java_awt_peer_qt_%.h: $(top_builddir)/$(CLASSDIR)/gnu/java/awt/peer/qt/%.class
- $(JAVAH) -o $@ gnu.java.awt.peer.qt.$*
-
-$(top_srcdir)/include/gnu_javax_sound_midi_alsa_%.h: $(top_builddir)/$(CLASSDIR)/gnu/javax/sound/midi/alsa/%.class
- $(JAVAH) -o $@ gnu.javax.sound.midi.alsa.$*
-
-$(top_srcdir)/include/gnu_javax_sound_midi_dssi_%.h: $(top_builddir)/$(CLASSDIR)/gnu/javax/sound/midi/dssi/%.class
- $(JAVAH) -o $@ gnu.javax.sound.midi.dssi.$*
-
-$(top_srcdir)/include/gnu_java_util_prefs_gconf_%.h: $(top_builddir)/$(CLASSDIR)/gnu/java/util/prefs/gconf/%.class
- $(JAVAH) -o $@ gnu.java.util.prefs.gconf.$*
-
+$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeDocument.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeDocument.java
+ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeDocument
+$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeXPathNodeList.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeXPathNodeList.java
+ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeXPathNodeList
+$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeDocumentType.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeDocumentType.java
+ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeDocumentType
+$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeProcessingInstruction.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeProcessingInstruction.java
+ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeProcessingInstruction
+$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeTypeInfo.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeTypeInfo.java
+ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeTypeInfo
+$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeNodeList.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeNodeList.java
+ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeNodeList
+$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeNotation.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeNotation.java
+ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeNotation
+$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeXPathResult.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeXPathResult.java
+ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeXPathResult
+$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeElement.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeElement.java
+ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeElement
+$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeEntity.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeEntity.java
+ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeEntity
+$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeNode.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeNode.java
+ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeNode
+$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeXPathExpression.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeXPathExpression.java
+ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeXPathExpression
+$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeNamedNodeMap.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeNamedNodeMap.java
+ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeNamedNodeMap
+$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeDocumentBuilder.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeDocumentBuilder.java
+ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeDocumentBuilder
+$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeAttr.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeAttr.java
+ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeAttr
+$(top_srcdir)/include/gnu_xml_libxmlj_sax_GnomeLocator.h: $(top_srcdir)/gnu/xml/libxmlj/sax/GnomeLocator.java
+ $(JAVAH) -o $@ gnu.xml.libxmlj.sax.GnomeLocator
+$(top_srcdir)/include/gnu_xml_libxmlj_sax_GnomeXMLReader.h: $(top_srcdir)/gnu/xml/libxmlj/sax/GnomeXMLReader.java
+ $(JAVAH) -o $@ gnu.xml.libxmlj.sax.GnomeXMLReader
+$(top_srcdir)/include/gnu_xml_libxmlj_transform_GnomeTransformer.h: $(top_srcdir)/gnu/xml/libxmlj/transform/GnomeTransformer.java
+ $(JAVAH) -o $@ gnu.xml.libxmlj.transform.GnomeTransformer
+$(top_srcdir)/include/gnu_xml_libxmlj_transform_GnomeTransformerFactory.h: $(top_srcdir)/gnu/xml/libxmlj/transform/GnomeTransformerFactory.java
+ $(JAVAH) -o $@ gnu.xml.libxmlj.transform.GnomeTransformerFactory
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_CairoSurface.h: $(top_srcdir)/gnu/java/awt/peer/gtk/CairoSurface.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.CairoSurface
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_CairoGraphics2D.h: $(top_srcdir)/gnu/java/awt/peer/gtk/CairoGraphics2D.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.CairoGraphics2D
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_ComponentGraphics.h: $(top_srcdir)/gnu/java/awt/peer/gtk/ComponentGraphics.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.ComponentGraphics
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_ComponentGraphicsCopy.h: $(top_srcdir)/gnu/java/awt/peer/gtk/ComponentGraphicsCopy.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.ComponentGraphicsCopy
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_FreetypeGlyphVector.h: $(top_srcdir)/gnu/java/awt/peer/gtk/FreetypeGlyphVector.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.FreetypeGlyphVector
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkFontPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GdkFontPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GdkFontPeer
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GdkGraphicsEnvironment
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkPixbufDecoder.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GdkPixbufDecoder
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkRobotPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GdkRobotPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GdkRobotPeer
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkScreenGraphicsDevice.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GdkScreenGraphicsDevice.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GdkScreenGraphicsDevice
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkButtonPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkButtonPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkButtonPeer
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkCanvasPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkCanvasPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkCanvasPeer
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkCheckboxMenuItemPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkCheckboxMenuItemPeer
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkCheckboxPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkCheckboxPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkCheckboxPeer
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkChoicePeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkChoicePeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkChoicePeer
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkClipboard.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkClipboard.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkClipboard
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkComponentPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkComponentPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkComponentPeer
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkEmbeddedWindowPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkEmbeddedWindowPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkEmbeddedWindowPeer
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkFileDialogPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkFileDialogPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkFileDialogPeer
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkFramePeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkFramePeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkFramePeer
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkGenericPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkGenericPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkGenericPeer
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkImage.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkImage.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkImage
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkLabelPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkLabelPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkLabelPeer
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkListPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkListPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkListPeer
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkMenuBarPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkMenuBarPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkMenuBarPeer
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkMenuComponentPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkMenuComponentPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkMenuComponentPeer
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkMenuItemPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkMenuItemPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkMenuItemPeer
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkMenuPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkMenuPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkMenuPeer
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkPanelPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkPanelPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkPanelPeer
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkPopupMenuPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkPopupMenuPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkPopupMenuPeer
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkScrollPanePeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkScrollPanePeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkScrollPanePeer
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkScrollbarPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkScrollbarPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkScrollbarPeer
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkSelection.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkSelection.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkSelection
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkTextAreaPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkTextAreaPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkTextAreaPeer
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkTextFieldPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkTextFieldPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkTextFieldPeer
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkToolkit.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkToolkit.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkToolkit
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkWindowPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkWindowPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkWindowPeer
+$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkVolatileImage.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkVolatileImage.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkVolatileImage
+$(top_srcdir)/include/gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer.h: $(top_srcdir)/gnu/java/awt/dnd/peer/gtk/GtkDragSourceContextPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.dnd.peer.gtk.GtkDragSourceContextPeer
+$(top_srcdir)/include/gnu_java_awt_peer_qt_QtCheckboxPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtCheckboxPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtCheckboxPeer
+$(top_srcdir)/include/gnu_java_awt_peer_qt_QtToolkit.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtToolkit.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtToolkit
+$(top_srcdir)/include/gnu_java_awt_peer_qt_QtAudioClip.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtAudioClip.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtAudioClip
+$(top_srcdir)/include/gnu_java_awt_peer_qt_QtScreenDevice.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtScreenDevice.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtScreenDevice
+$(top_srcdir)/include/gnu_java_awt_peer_qt_QtTextFieldPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtTextFieldPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtTextFieldPeer
+$(top_srcdir)/include/gnu_java_awt_peer_qt_QtMenuItemPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtMenuItemPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtMenuItemPeer
+$(top_srcdir)/include/gnu_java_awt_peer_qt_QtButtonPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtButtonPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtButtonPeer
+$(top_srcdir)/include/gnu_java_awt_peer_qt_QtWindowPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtWindowPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtWindowPeer
+$(top_srcdir)/include/gnu_java_awt_peer_qt_QtDialogPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtDialogPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtDialogPeer
+$(top_srcdir)/include/gnu_java_awt_peer_qt_QtImage.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtImage.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtImage
+$(top_srcdir)/include/gnu_java_awt_peer_qt_QtMenuBarPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtMenuBarPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtMenuBarPeer
+$(top_srcdir)/include/gnu_java_awt_peer_qt_QtVolatileImage.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtVolatileImage.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtVolatileImage
+$(top_srcdir)/include/gnu_java_awt_peer_qt_QtFontPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtFontPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtFontPeer
+$(top_srcdir)/include/gnu_java_awt_peer_qt_QtChoicePeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtChoicePeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtChoicePeer
+$(top_srcdir)/include/gnu_java_awt_peer_qt_QtGraphics.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtGraphics.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtGraphics
+$(top_srcdir)/include/gnu_java_awt_peer_qt_QtComponentPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtComponentPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtComponentPeer
+$(top_srcdir)/include/gnu_java_awt_peer_qt_QtMenuPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtMenuPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtMenuPeer
+$(top_srcdir)/include/gnu_java_awt_peer_qt_QtTextAreaPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtTextAreaPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtTextAreaPeer
+$(top_srcdir)/include/gnu_java_awt_peer_qt_QPen.h: $(top_srcdir)/gnu/java/awt/peer/qt/QPen.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QPen
+$(top_srcdir)/include/gnu_java_awt_peer_qt_QtPanelPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtPanelPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtPanelPeer
+$(top_srcdir)/include/gnu_java_awt_peer_qt_QPainterPath.h: $(top_srcdir)/gnu/java/awt/peer/qt/QPainterPath.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QPainterPath
+$(top_srcdir)/include/gnu_java_awt_peer_qt_QtFontMetrics.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtFontMetrics.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtFontMetrics
+$(top_srcdir)/include/gnu_java_awt_peer_qt_QtScrollPanePeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtScrollPanePeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtScrollPanePeer
+$(top_srcdir)/include/gnu_java_awt_peer_qt_QMatrix.h: $(top_srcdir)/gnu/java/awt/peer/qt/QMatrix.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QMatrix
+$(top_srcdir)/include/gnu_java_awt_peer_qt_QtLabelPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtLabelPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtLabelPeer
+$(top_srcdir)/include/gnu_java_awt_peer_qt_QtPopupMenuPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtPopupMenuPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtPopupMenuPeer
+$(top_srcdir)/include/gnu_java_awt_peer_qt_QtFramePeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtFramePeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtFramePeer
+$(top_srcdir)/include/gnu_java_awt_peer_qt_QtListPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtListPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtListPeer
+$(top_srcdir)/include/gnu_java_awt_peer_qt_QtScrollbarPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtScrollbarPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtScrollbarPeer
+$(top_srcdir)/include/gnu_java_awt_peer_qt_QtCanvasPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtCanvasPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtCanvasPeer
+$(top_srcdir)/include/gnu_java_awt_peer_qt_QtMenuComponentPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtMenuComponentPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtMenuComponentPeer
+$(top_srcdir)/include/gnu_java_awt_peer_qt_MainQtThread.h: $(top_srcdir)/gnu/java/awt/peer/qt/MainQtThread.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.qt.MainQtThread
+$(top_srcdir)/include/gnu_java_awt_peer_qt_QtFileDialogPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtFileDialogPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtFileDialogPeer
+$(top_srcdir)/include/gnu_java_awt_peer_qt_QtEmbeddedWindowPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtEmbeddedWindowPeer.java
+ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtEmbeddedWindowPeer
+$(top_srcdir)/include/gnu_javax_sound_midi_alsa_AlsaPortDevice.h: $(top_srcdir)/gnu/javax/sound/midi/alsa/AlsaPortDevice.java
+ $(JAVAH) -o $@ gnu.javax.sound.midi.alsa.AlsaPortDevice
+$(top_srcdir)/include/gnu_javax_sound_midi_alsa_AlsaMidiSequencerDevice.h: $(top_srcdir)/gnu/javax/sound/midi/alsa/AlsaMidiSequencerDevice.java
+ $(JAVAH) -o $@ gnu.javax.sound.midi.alsa.AlsaMidiSequencerDevice
+$(top_srcdir)/include/gnu_javax_sound_midi_alsa_AlsaMidiDeviceProvider.h: $(top_srcdir)/gnu/javax/sound/midi/alsa/AlsaMidiDeviceProvider.java
+ $(JAVAH) -o $@ gnu.javax.sound.midi.alsa.AlsaMidiDeviceProvider
+$(top_srcdir)/include/gnu_javax_sound_midi_dssi_DSSIMidiDeviceProvider.h: $(top_srcdir)/gnu/javax/sound/midi/dssi/DSSIMidiDeviceProvider.java
+ $(JAVAH) -o $@ gnu.javax.sound.midi.dssi.DSSIMidiDeviceProvider
+$(top_srcdir)/include/gnu_javax_sound_midi_dssi_DSSISynthesizer.h: $(top_srcdir)/gnu/javax/sound/midi/dssi/DSSISynthesizer.java
+ $(JAVAH) -o $@ gnu.javax.sound.midi.dssi.DSSISynthesizer
+$(top_srcdir)/include/gnu_java_util_prefs_gconf_GConfNativePeer.h: $(top_srcdir)/gnu/java/util/prefs/gconf/GConfNativePeer.java
+ $(JAVAH) -o $@ gnu.java.util.prefs.gconf.GConfNativePeer
+$(top_srcdir)/include/gnu_javax_sound_sampled_gstreamer_io_GstAudioFileReaderNativePeer.h: $(top_builddir)/gnu/javax/sound/sampled/gstreamer/io/GstAudioFileReaderNativePeer.java
+ $(JAVAH) -o $@ gnu.javax.sound.sampled.gstreamer.io.GstAudioFileReaderNativePeer
$(top_srcdir)/include/gnu_java_net_VMPlainSocketImpl.h: $(top_srcdir)/vm/reference/gnu/java/net/VMPlainSocketImpl.java
$(JAVAH) -o $@ gnu.java.net.VMPlainSocketImpl
$(top_srcdir)/include/gnu_java_net_local_LocalSocketImpl.h: $(top_srcdir)/gnu/java/net/local/LocalSocketImpl.java
diff --git a/libjava/classpath/include/Makefile.in b/libjava/classpath/include/Makefile.in
index d2f0707de2c..a93e9ce7fe2 100644
--- a/libjava/classpath/include/Makefile.in
+++ b/libjava/classpath/include/Makefile.in
@@ -99,6 +99,8 @@ CREATE_DSSI_LIBRARIES_FALSE = @CREATE_DSSI_LIBRARIES_FALSE@
CREATE_DSSI_LIBRARIES_TRUE = @CREATE_DSSI_LIBRARIES_TRUE@
CREATE_GCONF_PEER_LIBRARIES_FALSE = @CREATE_GCONF_PEER_LIBRARIES_FALSE@
CREATE_GCONF_PEER_LIBRARIES_TRUE = @CREATE_GCONF_PEER_LIBRARIES_TRUE@
+CREATE_GSTREAMER_PEER_LIBRARIES_FALSE = @CREATE_GSTREAMER_PEER_LIBRARIES_FALSE@
+CREATE_GSTREAMER_PEER_LIBRARIES_TRUE = @CREATE_GSTREAMER_PEER_LIBRARIES_TRUE@
CREATE_GTK_PEER_LIBRARIES_FALSE = @CREATE_GTK_PEER_LIBRARIES_FALSE@
CREATE_GTK_PEER_LIBRARIES_TRUE = @CREATE_GTK_PEER_LIBRARIES_TRUE@
CREATE_JNI_HEADERS_FALSE = @CREATE_JNI_HEADERS_FALSE@
@@ -137,8 +139,6 @@ EXEEXT = @EXEEXT@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_CACAO_FALSE = @FOUND_CACAO_FALSE@
-FOUND_CACAO_TRUE = @FOUND_CACAO_TRUE@
FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
@@ -162,6 +162,15 @@ GJDOC = @GJDOC@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_LIBS = @GLIB_LIBS@
GREP = @GREP@
+GSTREAMER_BASE_CFLAGS = @GSTREAMER_BASE_CFLAGS@
+GSTREAMER_BASE_LIBS = @GSTREAMER_BASE_LIBS@
+GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
+GSTREAMER_FILE_READER = @GSTREAMER_FILE_READER@
+GSTREAMER_LIBS = @GSTREAMER_LIBS@
+GSTREAMER_MIXER_PROVIDER = @GSTREAMER_MIXER_PROVIDER@
+GSTREAMER_PLUGINS_BASE_CFLAGS = @GSTREAMER_PLUGINS_BASE_CFLAGS@
+GSTREAMER_PLUGINS_BASE_LIBS = @GSTREAMER_PLUGINS_BASE_LIBS@
+GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
GTK_CFLAGS = @GTK_CFLAGS@
GTK_LIBS = @GTK_LIBS@
INIT_LOAD_LIBRARY = @INIT_LOAD_LIBRARY@
@@ -234,8 +243,6 @@ USER_CLASSLIB = @USER_CLASSLIB@
USER_JAVAH = @USER_JAVAH@
USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
-USER_SPECIFIED_JAVAH_FALSE = @USER_SPECIFIED_JAVAH_FALSE@
-USER_SPECIFIED_JAVAH_TRUE = @USER_SPECIFIED_JAVAH_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
@@ -319,12 +326,14 @@ $(top_srcdir)/include/gnu_javax_sound_midi_alsa_AlsaMidiDeviceProvider.h \
$(top_srcdir)/include/gnu_javax_sound_midi_dssi_DSSIMidiDeviceProvider.h \
$(top_srcdir)/include/gnu_javax_sound_midi_dssi_DSSISynthesizer.h
+GST_PEER_H_FILES = \
+$(top_srcdir)/include/gnu_javax_sound_sampled_gstreamer_io_GstAudioFileReaderNativePeer.h
+
XMLJ_H_FILES = \
$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeDocument.h \
$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeXPathNodeList.h \
$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeDocumentType.h \
$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeProcessingInstruction.h \
-$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeXPathNSResolver.h \
$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeTypeInfo.h \
$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeNodeList.h \
$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeNotation.h \
@@ -380,7 +389,7 @@ $(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkTextFieldPeer.h \
$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkToolkit.h \
$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkWindowPeer.h \
$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkVolatileImage.h \
-$(top_srcdir)/include/GtkDragSourceContextPeer.h
+$(top_srcdir)/include/gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer.h
QTPEER_H_FILES = \
$(top_srcdir)/include/gnu_java_awt_peer_qt_QtCheckboxPeer.h \
@@ -406,7 +415,6 @@ $(top_srcdir)/include/gnu_java_awt_peer_qt_QtPanelPeer.h \
$(top_srcdir)/include/gnu_java_awt_peer_qt_QPainterPath.h \
$(top_srcdir)/include/gnu_java_awt_peer_qt_QtFontMetrics.h \
$(top_srcdir)/include/gnu_java_awt_peer_qt_QtScrollPanePeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtGraphicsEnvironment.h \
$(top_srcdir)/include/gnu_java_awt_peer_qt_QMatrix.h \
$(top_srcdir)/include/gnu_java_awt_peer_qt_QtLabelPeer.h \
$(top_srcdir)/include/gnu_java_awt_peer_qt_QtPopupMenuPeer.h \
@@ -417,7 +425,6 @@ $(top_srcdir)/include/gnu_java_awt_peer_qt_QtCanvasPeer.h \
$(top_srcdir)/include/gnu_java_awt_peer_qt_QtMenuComponentPeer.h \
$(top_srcdir)/include/gnu_java_awt_peer_qt_MainQtThread.h \
$(top_srcdir)/include/gnu_java_awt_peer_qt_QtFileDialogPeer.h \
-$(top_srcdir)/include/gnu_java_awt_peer_qt_QtContainerPeer.h \
$(top_srcdir)/include/gnu_java_awt_peer_qt_QtEmbeddedWindowPeer.h
GCONF_PREFS_FILES = \
@@ -425,6 +432,7 @@ $(top_srcdir)/include/gnu_java_util_prefs_gconf_GConfNativePeer.h
H_FILES = \
$(SOUND_H_FILES) \
+$(GST_PEER_H_FILES) \
$(XMLJ_H_FILES) \
$(GTKPEER_H_FILES) \
$(QTPEER_H_FILES) \
@@ -640,30 +648,204 @@ uninstall-am: uninstall-info-am
@CREATE_JNI_HEADERS_TRUE@all-local: $(H_FILES)
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_dom_%.h: $(top_builddir)/$(CLASSDIR)/gnu/xml/libxmlj/dom/%.class
-@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.$*
-
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_sax_%.h: $(top_builddir)/$(CLASSDIR)/gnu/xml/libxmlj/sax/%.class
-@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.sax.$*
-
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_transform_%.h: $(top_builddir)/$(CLASSDIR)/gnu/xml/libxmlj/transform/%.class
-@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.transform.$*
-
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_%.h: $(top_builddir)/$(CLASSDIR)/gnu/java/awt/peer/gtk/%.class
-@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.$*
-
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_%.h: $(top_builddir)/$(CLASSDIR)/gnu/java/awt/peer/qt/%.class
-@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.$*
-
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_javax_sound_midi_alsa_%.h: $(top_builddir)/$(CLASSDIR)/gnu/javax/sound/midi/alsa/%.class
-@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.javax.sound.midi.alsa.$*
-
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_javax_sound_midi_dssi_%.h: $(top_builddir)/$(CLASSDIR)/gnu/javax/sound/midi/dssi/%.class
-@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.javax.sound.midi.dssi.$*
-
-@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_util_prefs_gconf_%.h: $(top_builddir)/$(CLASSDIR)/gnu/java/util/prefs/gconf/%.class
-@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.util.prefs.gconf.$*
-
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeDocument.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeDocument.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeDocument
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeXPathNodeList.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeXPathNodeList.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeXPathNodeList
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeDocumentType.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeDocumentType.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeDocumentType
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeProcessingInstruction.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeProcessingInstruction.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeProcessingInstruction
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeTypeInfo.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeTypeInfo.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeTypeInfo
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeNodeList.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeNodeList.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeNodeList
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeNotation.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeNotation.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeNotation
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeXPathResult.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeXPathResult.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeXPathResult
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeElement.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeElement.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeElement
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeEntity.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeEntity.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeEntity
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeNode.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeNode.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeNode
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeXPathExpression.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeXPathExpression.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeXPathExpression
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeNamedNodeMap.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeNamedNodeMap.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeNamedNodeMap
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeDocumentBuilder.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeDocumentBuilder.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeDocumentBuilder
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_dom_GnomeAttr.h: $(top_srcdir)/gnu/xml/libxmlj/dom/GnomeAttr.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.dom.GnomeAttr
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_sax_GnomeLocator.h: $(top_srcdir)/gnu/xml/libxmlj/sax/GnomeLocator.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.sax.GnomeLocator
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_sax_GnomeXMLReader.h: $(top_srcdir)/gnu/xml/libxmlj/sax/GnomeXMLReader.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.sax.GnomeXMLReader
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_transform_GnomeTransformer.h: $(top_srcdir)/gnu/xml/libxmlj/transform/GnomeTransformer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.transform.GnomeTransformer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_xml_libxmlj_transform_GnomeTransformerFactory.h: $(top_srcdir)/gnu/xml/libxmlj/transform/GnomeTransformerFactory.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.xml.libxmlj.transform.GnomeTransformerFactory
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_CairoSurface.h: $(top_srcdir)/gnu/java/awt/peer/gtk/CairoSurface.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.CairoSurface
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_CairoGraphics2D.h: $(top_srcdir)/gnu/java/awt/peer/gtk/CairoGraphics2D.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.CairoGraphics2D
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_ComponentGraphics.h: $(top_srcdir)/gnu/java/awt/peer/gtk/ComponentGraphics.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.ComponentGraphics
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_ComponentGraphicsCopy.h: $(top_srcdir)/gnu/java/awt/peer/gtk/ComponentGraphicsCopy.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.ComponentGraphicsCopy
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_FreetypeGlyphVector.h: $(top_srcdir)/gnu/java/awt/peer/gtk/FreetypeGlyphVector.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.FreetypeGlyphVector
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkFontPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GdkFontPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GdkFontPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GdkGraphicsEnvironment.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GdkGraphicsEnvironment
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkPixbufDecoder.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GdkPixbufDecoder
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkRobotPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GdkRobotPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GdkRobotPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GdkScreenGraphicsDevice.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GdkScreenGraphicsDevice.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GdkScreenGraphicsDevice
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkButtonPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkButtonPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkButtonPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkCanvasPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkCanvasPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkCanvasPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkCheckboxMenuItemPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkCheckboxMenuItemPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkCheckboxMenuItemPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkCheckboxPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkCheckboxPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkCheckboxPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkChoicePeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkChoicePeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkChoicePeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkClipboard.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkClipboard.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkClipboard
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkComponentPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkComponentPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkComponentPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkEmbeddedWindowPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkEmbeddedWindowPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkEmbeddedWindowPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkFileDialogPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkFileDialogPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkFileDialogPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkFramePeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkFramePeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkFramePeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkGenericPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkGenericPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkGenericPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkImage.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkImage.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkImage
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkLabelPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkLabelPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkLabelPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkListPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkListPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkListPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkMenuBarPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkMenuBarPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkMenuBarPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkMenuComponentPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkMenuComponentPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkMenuComponentPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkMenuItemPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkMenuItemPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkMenuItemPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkMenuPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkMenuPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkMenuPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkPanelPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkPanelPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkPanelPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkPopupMenuPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkPopupMenuPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkPopupMenuPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkScrollPanePeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkScrollPanePeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkScrollPanePeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkScrollbarPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkScrollbarPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkScrollbarPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkSelection.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkSelection.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkSelection
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkTextAreaPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkTextAreaPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkTextAreaPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkTextFieldPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkTextFieldPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkTextFieldPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkToolkit.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkToolkit.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkToolkit
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkWindowPeer.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkWindowPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkWindowPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_gtk_GtkVolatileImage.h: $(top_srcdir)/gnu/java/awt/peer/gtk/GtkVolatileImage.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.gtk.GtkVolatileImage
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer.h: $(top_srcdir)/gnu/java/awt/dnd/peer/gtk/GtkDragSourceContextPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.dnd.peer.gtk.GtkDragSourceContextPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtCheckboxPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtCheckboxPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtCheckboxPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtToolkit.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtToolkit.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtToolkit
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtAudioClip.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtAudioClip.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtAudioClip
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtScreenDevice.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtScreenDevice.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtScreenDevice
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtTextFieldPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtTextFieldPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtTextFieldPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtMenuItemPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtMenuItemPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtMenuItemPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtButtonPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtButtonPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtButtonPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtWindowPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtWindowPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtWindowPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtDialogPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtDialogPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtDialogPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtImage.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtImage.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtImage
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtMenuBarPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtMenuBarPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtMenuBarPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtVolatileImage.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtVolatileImage.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtVolatileImage
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtFontPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtFontPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtFontPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtChoicePeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtChoicePeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtChoicePeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtGraphics.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtGraphics.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtGraphics
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtComponentPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtComponentPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtComponentPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtMenuPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtMenuPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtMenuPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtTextAreaPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtTextAreaPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtTextAreaPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QPen.h: $(top_srcdir)/gnu/java/awt/peer/qt/QPen.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QPen
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtPanelPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtPanelPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtPanelPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QPainterPath.h: $(top_srcdir)/gnu/java/awt/peer/qt/QPainterPath.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QPainterPath
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtFontMetrics.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtFontMetrics.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtFontMetrics
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtScrollPanePeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtScrollPanePeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtScrollPanePeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QMatrix.h: $(top_srcdir)/gnu/java/awt/peer/qt/QMatrix.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QMatrix
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtLabelPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtLabelPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtLabelPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtPopupMenuPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtPopupMenuPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtPopupMenuPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtFramePeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtFramePeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtFramePeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtListPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtListPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtListPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtScrollbarPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtScrollbarPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtScrollbarPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtCanvasPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtCanvasPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtCanvasPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtMenuComponentPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtMenuComponentPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtMenuComponentPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_MainQtThread.h: $(top_srcdir)/gnu/java/awt/peer/qt/MainQtThread.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.MainQtThread
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtFileDialogPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtFileDialogPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtFileDialogPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_awt_peer_qt_QtEmbeddedWindowPeer.h: $(top_srcdir)/gnu/java/awt/peer/qt/QtEmbeddedWindowPeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.awt.peer.qt.QtEmbeddedWindowPeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_javax_sound_midi_alsa_AlsaPortDevice.h: $(top_srcdir)/gnu/javax/sound/midi/alsa/AlsaPortDevice.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.javax.sound.midi.alsa.AlsaPortDevice
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_javax_sound_midi_alsa_AlsaMidiSequencerDevice.h: $(top_srcdir)/gnu/javax/sound/midi/alsa/AlsaMidiSequencerDevice.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.javax.sound.midi.alsa.AlsaMidiSequencerDevice
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_javax_sound_midi_alsa_AlsaMidiDeviceProvider.h: $(top_srcdir)/gnu/javax/sound/midi/alsa/AlsaMidiDeviceProvider.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.javax.sound.midi.alsa.AlsaMidiDeviceProvider
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_javax_sound_midi_dssi_DSSIMidiDeviceProvider.h: $(top_srcdir)/gnu/javax/sound/midi/dssi/DSSIMidiDeviceProvider.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.javax.sound.midi.dssi.DSSIMidiDeviceProvider
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_javax_sound_midi_dssi_DSSISynthesizer.h: $(top_srcdir)/gnu/javax/sound/midi/dssi/DSSISynthesizer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.javax.sound.midi.dssi.DSSISynthesizer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_util_prefs_gconf_GConfNativePeer.h: $(top_srcdir)/gnu/java/util/prefs/gconf/GConfNativePeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.util.prefs.gconf.GConfNativePeer
+@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_javax_sound_sampled_gstreamer_io_GstAudioFileReaderNativePeer.h: $(top_builddir)/gnu/javax/sound/sampled/gstreamer/io/GstAudioFileReaderNativePeer.java
+@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.javax.sound.sampled.gstreamer.io.GstAudioFileReaderNativePeer
@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_net_VMPlainSocketImpl.h: $(top_srcdir)/vm/reference/gnu/java/net/VMPlainSocketImpl.java
@CREATE_JNI_HEADERS_TRUE@ $(JAVAH) -o $@ gnu.java.net.VMPlainSocketImpl
@CREATE_JNI_HEADERS_TRUE@$(top_srcdir)/include/gnu_java_net_local_LocalSocketImpl.h: $(top_srcdir)/gnu/java/net/local/LocalSocketImpl.java
diff --git a/libjava/classpath/include/config.h.in b/libjava/classpath/include/config.h.in
index a0e3150c5c9..e52b7eff732 100644
--- a/libjava/classpath/include/config.h.in
+++ b/libjava/classpath/include/config.h.in
@@ -183,6 +183,9 @@
/* Define this symbol if you have MSG_NOSIGNAL */
#undef HAVE_MSG_NOSIGNAL
+/* Define this symbol if you have MSG_WAITALL */
+#undef HAVE_MSG_WAITALL
+
/* Define to 1 if you have the `msync' function. */
#undef HAVE_MSYNC
diff --git a/libjava/classpath/include/GtkDragSourceContextPeer.h b/libjava/classpath/include/gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer.h
similarity index 74%
rename from libjava/classpath/include/GtkDragSourceContextPeer.h
rename to libjava/classpath/include/gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer.h
index 87606ec1a1c..f9fca115883 100644
--- a/libjava/classpath/include/GtkDragSourceContextPeer.h
+++ b/libjava/classpath/include/gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer.h
@@ -1,7 +1,7 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
-#ifndef __GtkDragSourceContextPeer__
-#define __GtkDragSourceContextPeer__
+#ifndef __gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer__
+#define __gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer__
#include
@@ -13,11 +13,11 @@ extern "C"
JNIEXPORT void JNICALL Java_gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer_nativeStartDrag (JNIEnv *env, jobject, jobject, jint, jint, jint, jstring);
JNIEXPORT void JNICALL Java_gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer_connectSignals (JNIEnv *env, jobject, jobject);
JNIEXPORT void JNICALL Java_gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer_create (JNIEnv *env, jobject, jobject);
-JNIEXPORT void JNICALL Java_gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer_nativeSetCursor (JNIEnv *env, jobject, jint) ;
+JNIEXPORT void JNICALL Java_gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer_nativeSetCursor (JNIEnv *env, jobject, jint);
JNIEXPORT void JNICALL Java_gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer_setTarget (JNIEnv *env, jobject, jobject);
#ifdef __cplusplus
}
#endif
-#endif /* __GtkDragSourceContextPeer__ */
+#endif /* __gnu_java_awt_dnd_peer_gtk_GtkDragSourceContextPeer__ */
diff --git a/libjava/classpath/include/gnu_java_awt_peer_gtk_CairoGraphics2D.h b/libjava/classpath/include/gnu_java_awt_peer_gtk_CairoGraphics2D.h
index 3ae95a283e5..a24f92d196b 100644
--- a/libjava/classpath/include/gnu_java_awt_peer_gtk_CairoGraphics2D.h
+++ b/libjava/classpath/include/gnu_java_awt_peer_gtk_CairoGraphics2D.h
@@ -1,10 +1,10 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
-#include
-
#ifndef __gnu_java_awt_peer_gtk_CairoGraphics2D__
#define __gnu_java_awt_peer_gtk_CairoGraphics2D__
+#include
+
#ifdef __cplusplus
extern "C"
{
@@ -38,7 +38,6 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoFill (JNI
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoClip (JNIEnv *env, jobject, jlong);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoResetClip (JNIEnv *env, jobject, jlong);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetAntialias (JNIEnv *env, jobject, jlong, jboolean);
-
#undef gnu_java_awt_peer_gtk_CairoGraphics2D_INTERPOLATION_NEAREST
#define gnu_java_awt_peer_gtk_CairoGraphics2D_INTERPOLATION_NEAREST 0L
#undef gnu_java_awt_peer_gtk_CairoGraphics2D_INTERPOLATION_BILINEAR
diff --git a/libjava/classpath/include/gnu_java_awt_peer_gtk_ComponentGraphics.h b/libjava/classpath/include/gnu_java_awt_peer_gtk_ComponentGraphics.h
index 3dd8bb43178..2df12469b42 100644
--- a/libjava/classpath/include/gnu_java_awt_peer_gtk_ComponentGraphics.h
+++ b/libjava/classpath/include/gnu_java_awt_peer_gtk_ComponentGraphics.h
@@ -1,10 +1,10 @@
/* DO NOT EDIT THIS FILE - it is machine generated */
-#include
-
#ifndef __gnu_java_awt_peer_gtk_ComponentGraphics__
#define __gnu_java_awt_peer_gtk_ComponentGraphics__
+#include
+
#ifdef __cplusplus
extern "C"
{
diff --git a/libjava/classpath/include/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.h b/libjava/classpath/include/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.h
index 6177a6fb939..aa0bd015689 100644
--- a/libjava/classpath/include/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.h
+++ b/libjava/classpath/include/gnu_java_awt_peer_gtk_GdkGraphicsEnvironment.h
@@ -10,7 +10,7 @@ extern "C"
{
#endif
-JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphicsEnvironment_initStaticState (JNIEnv *env, jclass);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphicsEnvironment_initIDs (JNIEnv *env, jclass);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphicsEnvironment_nativeInitState (JNIEnv *env, jobject);
JNIEXPORT jobjectArray JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphicsEnvironment_nativeGetScreenDevices (JNIEnv *env, jobject);
JNIEXPORT jobject JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphicsEnvironment_nativeGetDefaultScreenDevice (JNIEnv *env, jobject);
diff --git a/libjava/classpath/include/gnu_java_awt_peer_gtk_GdkScreenGraphicsDevice.h b/libjava/classpath/include/gnu_java_awt_peer_gtk_GdkScreenGraphicsDevice.h
index 8037af0825e..37654e4f48d 100644
--- a/libjava/classpath/include/gnu_java_awt_peer_gtk_GdkScreenGraphicsDevice.h
+++ b/libjava/classpath/include/gnu_java_awt_peer_gtk_GdkScreenGraphicsDevice.h
@@ -10,7 +10,7 @@ extern "C"
{
#endif
-JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkScreenGraphicsDevice_initStaticState (JNIEnv *env, jclass);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkScreenGraphicsDevice_initIDs (JNIEnv *env, jclass);
JNIEXPORT jobject JNICALL Java_gnu_java_awt_peer_gtk_GdkScreenGraphicsDevice_nativeGetFixedDisplayMode (JNIEnv *env, jobject, jobject);
JNIEXPORT jstring JNICALL Java_gnu_java_awt_peer_gtk_GdkScreenGraphicsDevice_nativeGetIDString (JNIEnv *env, jobject);
JNIEXPORT jint JNICALL Java_gnu_java_awt_peer_gtk_GdkScreenGraphicsDevice_nativeGetDisplayModeIndex (JNIEnv *env, jobject, jobject);
diff --git a/libjava/classpath/include/gnu_java_awt_peer_gtk_GtkGenericPeer.h b/libjava/classpath/include/gnu_java_awt_peer_gtk_GtkGenericPeer.h
index fd9b10687b1..1a95d70d339 100644
--- a/libjava/classpath/include/gnu_java_awt_peer_gtk_GtkGenericPeer.h
+++ b/libjava/classpath/include/gnu_java_awt_peer_gtk_GtkGenericPeer.h
@@ -10,6 +10,7 @@ extern "C"
{
#endif
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkGenericPeer_initIDs (JNIEnv *env, jclass);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkGenericPeer_dispose (JNIEnv *env, jobject);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkGenericPeer_gtkWidgetModifyFont (JNIEnv *env, jobject, jstring, jint, jint);
diff --git a/libjava/classpath/include/gnu_java_awt_peer_gtk_GtkToolkit.h b/libjava/classpath/include/gnu_java_awt_peer_gtk_GtkToolkit.h
index 5bceda7ad7b..ad6eb394453 100644
--- a/libjava/classpath/include/gnu_java_awt_peer_gtk_GtkToolkit.h
+++ b/libjava/classpath/include/gnu_java_awt_peer_gtk_GtkToolkit.h
@@ -13,6 +13,7 @@ extern "C"
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkToolkit_gtkInit (JNIEnv *env, jclass, jint, jobject);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkToolkit_gtkMain (JNIEnv *env, jclass);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkToolkit_gtkQuit (JNIEnv *env, jclass);
+JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkToolkit_initIDs (JNIEnv *env, jclass);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkToolkit_beep (JNIEnv *env, jobject);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkToolkit_getScreenSizeDimensions (JNIEnv *env, jobject, jintArray);
JNIEXPORT jint JNICALL Java_gnu_java_awt_peer_gtk_GtkToolkit_getScreenResolution (JNIEnv *env, jobject);
diff --git a/libjava/classpath/include/gnu_java_awt_peer_qt_QtContainerPeer.h b/libjava/classpath/include/gnu_java_awt_peer_qt_QtContainerPeer.h
deleted file mode 100644
index 2993e184141..00000000000
--- a/libjava/classpath/include/gnu_java_awt_peer_qt_QtContainerPeer.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-
-#ifndef __gnu_java_awt_peer_qt_QtContainerPeer__
-#define __gnu_java_awt_peer_qt_QtContainerPeer__
-
-#include
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __gnu_java_awt_peer_qt_QtContainerPeer__ */
diff --git a/libjava/classpath/include/gnu_java_awt_peer_qt_QtFontMetrics.h b/libjava/classpath/include/gnu_java_awt_peer_qt_QtFontMetrics.h
index 632167a7662..ebc607ed34e 100644
--- a/libjava/classpath/include/gnu_java_awt_peer_qt_QtFontMetrics.h
+++ b/libjava/classpath/include/gnu_java_awt_peer_qt_QtFontMetrics.h
@@ -14,7 +14,7 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtFontMetrics_init (JNIEnv *env
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtFontMetrics_initGraphics (JNIEnv *env, jobject, jobject, jobject);
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_qt_QtFontMetrics_dispose (JNIEnv *env, jobject);
JNIEXPORT jobject JNICALL Java_gnu_java_awt_peer_qt_QtFontMetrics_getStringBounds (JNIEnv *env, jobject, jstring);
-JNIEXPORT jboolean JNICALL Java_gnu_java_awt_peer_qt_QtFontMetrics_canDisplay (JNIEnv *env, jobject, jchar);
+JNIEXPORT jboolean JNICALL Java_gnu_java_awt_peer_qt_QtFontMetrics_canDisplay (JNIEnv *env, jobject, jint);
JNIEXPORT jint JNICALL Java_gnu_java_awt_peer_qt_QtFontMetrics_getAscent (JNIEnv *env, jobject);
JNIEXPORT jint JNICALL Java_gnu_java_awt_peer_qt_QtFontMetrics_getDescent (JNIEnv *env, jobject);
JNIEXPORT jint JNICALL Java_gnu_java_awt_peer_qt_QtFontMetrics_getHeight (JNIEnv *env, jobject);
diff --git a/libjava/classpath/include/gnu_java_awt_peer_qt_QtGraphicsEnvironment.h b/libjava/classpath/include/gnu_java_awt_peer_qt_QtGraphicsEnvironment.h
deleted file mode 100644
index d964760f306..00000000000
--- a/libjava/classpath/include/gnu_java_awt_peer_qt_QtGraphicsEnvironment.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-
-#ifndef __gnu_java_awt_peer_qt_QtGraphicsEnvironment__
-#define __gnu_java_awt_peer_qt_QtGraphicsEnvironment__
-
-#include
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __gnu_java_awt_peer_qt_QtGraphicsEnvironment__ */
diff --git a/libjava/classpath/include/gnu_javax_sound_sampled_gstreamer_io_GstAudioFileReaderNativePeer.h b/libjava/classpath/include/gnu_javax_sound_sampled_gstreamer_io_GstAudioFileReaderNativePeer.h
new file mode 100644
index 00000000000..509a43cd946
--- /dev/null
+++ b/libjava/classpath/include/gnu_javax_sound_sampled_gstreamer_io_GstAudioFileReaderNativePeer.h
@@ -0,0 +1,20 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#ifndef __gnu_javax_sound_sampled_gstreamer_io_GstAudioFileReaderNativePeer__
+#define __gnu_javax_sound_sampled_gstreamer_io_GstAudioFileReaderNativePeer__
+
+#include
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT jboolean JNICALL Java_gnu_javax_sound_sampled_gstreamer_io_GstAudioFileReaderNativePeer_gstreamer_1get_1audio_1format_1stream (JNIEnv *env, jclass, jobject, jobject);
+JNIEXPORT jboolean JNICALL Java_gnu_javax_sound_sampled_gstreamer_io_GstAudioFileReaderNativePeer_gstreamer_1get_1audio_1format_1file (JNIEnv *env, jclass, jobject);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __gnu_javax_sound_sampled_gstreamer_io_GstAudioFileReaderNativePeer__ */
diff --git a/libjava/classpath/include/gnu_xml_libxmlj_dom_GnomeXPathNSResolver.h b/libjava/classpath/include/gnu_xml_libxmlj_dom_GnomeXPathNSResolver.h
deleted file mode 100644
index 95fa3d839eb..00000000000
--- a/libjava/classpath/include/gnu_xml_libxmlj_dom_GnomeXPathNSResolver.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-
-#ifndef __gnu_xml_libxmlj_dom_GnomeXPathNSResolver__
-#define __gnu_xml_libxmlj_dom_GnomeXPathNSResolver__
-
-#include
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __gnu_xml_libxmlj_dom_GnomeXPathNSResolver__ */
diff --git a/libjava/classpath/include/jni.h b/libjava/classpath/include/jni.h
index 3a0d9c31ec3..1c9be9584c0 100644
--- a/libjava/classpath/include/jni.h
+++ b/libjava/classpath/include/jni.h
@@ -1,5 +1,5 @@
/* jni.h
- Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2005, 2006 Free Software Foundation
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007 Free Software Foundation
This file is part of GNU Classpath.
@@ -117,8 +117,8 @@ typedef jobject jdoubleArray;
#define JNI_TRUE 1
#define JNI_FALSE 0
-typedef const struct JNINativeInterface *JNIEnv;
-typedef const struct JNIInvokeInterface *JavaVM;
+typedef const struct JNINativeInterface_ *JNIEnv;
+typedef const struct JNIInvokeInterface_ *JavaVM;
# endif /* __cplusplus */
@@ -206,7 +206,7 @@ typedef struct
void *fnPtr; /* Sigh. */
} JNINativeMethod;
-struct JNINativeInterface
+struct JNINativeInterface_
{
void *reserved0;
void *reserved1;
@@ -256,7 +256,7 @@ struct JNINativeInterface
jobject (JNICALL *NewObjectV) (JNIEnv *, jclass,
jmethodID, va_list);
jobject (JNICALL *NewObjectA) (JNIEnv *, jclass,
- jmethodID, jvalue *);
+ jmethodID, const jvalue *);
jclass (JNICALL *GetObjectClass) (JNIEnv *, jobject);
jboolean (JNICALL *IsInstanceOf) (JNIEnv *, jobject, jclass);
@@ -267,114 +267,114 @@ struct JNINativeInterface
jobject (JNICALL *CallObjectMethodV) (JNIEnv *, jobject, jmethodID,
va_list);
jobject (JNICALL *CallObjectMethodA) (JNIEnv *, jobject, jmethodID,
- jvalue *);
+ const jvalue *);
jboolean (JNICALL *CallBooleanMethod) (JNIEnv *, jobject, jmethodID,
...);
jboolean (JNICALL *CallBooleanMethodV) (JNIEnv *, jobject, jmethodID,
va_list);
jboolean (JNICALL *CallBooleanMethodA) (JNIEnv *, jobject, jmethodID,
- jvalue *);
+ const jvalue *);
jbyte (JNICALL *CallByteMethod) (JNIEnv *, jobject, jmethodID, ...);
jbyte (JNICALL *CallByteMethodV) (JNIEnv *, jobject, jmethodID,
va_list);
jbyte (JNICALL *CallByteMethodA) (JNIEnv *, jobject, jmethodID,
- jvalue *);
+ const jvalue *);
jchar (JNICALL *CallCharMethod) (JNIEnv *, jobject, jmethodID, ...);
jchar (JNICALL *CallCharMethodV) (JNIEnv *, jobject, jmethodID,
va_list);
jchar (JNICALL *CallCharMethodA) (JNIEnv *, jobject, jmethodID,
- jvalue *);
+ const jvalue *);
jshort (JNICALL *CallShortMethod) (JNIEnv *, jobject, jmethodID, ...);
jshort (JNICALL *CallShortMethodV) (JNIEnv *, jobject, jmethodID,
va_list);
jshort (JNICALL *CallShortMethodA) (JNIEnv *, jobject, jmethodID,
- jvalue *);
+ const jvalue *);
jint (JNICALL *CallIntMethod) (JNIEnv *, jobject, jmethodID, ...);
jint (JNICALL *CallIntMethodV) (JNIEnv *, jobject, jmethodID,
va_list);
jint (JNICALL *CallIntMethodA) (JNIEnv *, jobject, jmethodID,
- jvalue *);
+ const jvalue *);
jlong (JNICALL *CallLongMethod) (JNIEnv *, jobject, jmethodID, ...);
jlong (JNICALL *CallLongMethodV) (JNIEnv *, jobject, jmethodID,
va_list);
jlong (JNICALL *CallLongMethodA) (JNIEnv *, jobject, jmethodID,
- jvalue *);
+ const jvalue *);
jfloat (JNICALL *CallFloatMethod) (JNIEnv *, jobject, jmethodID, ...);
jfloat (JNICALL *CallFloatMethodV) (JNIEnv *, jobject, jmethodID,
va_list);
jfloat (JNICALL *CallFloatMethodA) (JNIEnv *, jobject, jmethodID,
- jvalue *);
+ const jvalue *);
jdouble (JNICALL *CallDoubleMethod) (JNIEnv *, jobject, jmethodID, ...);
jdouble (JNICALL *CallDoubleMethodV) (JNIEnv *, jobject, jmethodID,
va_list);
jdouble (JNICALL *CallDoubleMethodA) (JNIEnv *, jobject, jmethodID,
- jvalue *);
+ const jvalue *);
void (JNICALL *CallVoidMethod) (JNIEnv *, jobject, jmethodID, ...);
void (JNICALL *CallVoidMethodV) (JNIEnv *, jobject, jmethodID,
va_list);
void (JNICALL *CallVoidMethodA) (JNIEnv *, jobject, jmethodID,
- jvalue *);
+ const jvalue *);
jobject (JNICALL *CallNonvirtualObjectMethod) (JNIEnv *, jobject, jclass,
jmethodID, ...);
jobject (JNICALL *CallNonvirtualObjectMethodV) (JNIEnv *, jobject, jclass,
jmethodID, va_list);
jobject (JNICALL *CallNonvirtualObjectMethodA) (JNIEnv *, jobject, jclass,
- jmethodID, jvalue *);
+ jmethodID, const jvalue *);
jboolean (JNICALL *CallNonvirtualBooleanMethod) (JNIEnv *, jobject, jclass,
jmethodID, ...);
jboolean (JNICALL *CallNonvirtualBooleanMethodV) (JNIEnv *, jobject, jclass,
jmethodID, va_list);
jboolean (JNICALL *CallNonvirtualBooleanMethodA) (JNIEnv *, jobject, jclass,
- jmethodID, jvalue *);
+ jmethodID, const jvalue *);
jbyte (JNICALL *CallNonvirtualByteMethod) (JNIEnv *, jobject, jclass,
jmethodID, ...);
jbyte (JNICALL *CallNonvirtualByteMethodV) (JNIEnv *, jobject, jclass,
jmethodID, va_list);
jbyte (JNICALL *CallNonvirtualByteMethodA) (JNIEnv *, jobject, jclass,
- jmethodID, jvalue *);
+ jmethodID, const jvalue *);
jchar (JNICALL *CallNonvirtualCharMethod) (JNIEnv *, jobject, jclass,
jmethodID, ...);
jchar (JNICALL *CallNonvirtualCharMethodV) (JNIEnv *, jobject, jclass,
jmethodID, va_list);
jchar (JNICALL *CallNonvirtualCharMethodA) (JNIEnv *, jobject, jclass,
- jmethodID, jvalue *);
+ jmethodID, const jvalue *);
jshort (JNICALL *CallNonvirtualShortMethod) (JNIEnv *, jobject, jclass,
jmethodID, ...);
jshort (JNICALL *CallNonvirtualShortMethodV) (JNIEnv *, jobject, jclass,
jmethodID, va_list);
jshort (JNICALL *CallNonvirtualShortMethodA) (JNIEnv *, jobject, jclass,
- jmethodID, jvalue *);
+ jmethodID, const jvalue *);
jint (JNICALL *CallNonvirtualIntMethod) (JNIEnv *, jobject, jclass,
jmethodID, ...);
jint (JNICALL *CallNonvirtualIntMethodV) (JNIEnv *, jobject, jclass,
jmethodID, va_list);
jint (JNICALL *CallNonvirtualIntMethodA) (JNIEnv *, jobject, jclass,
- jmethodID, jvalue *);
+ jmethodID, const jvalue *);
jlong (JNICALL *CallNonvirtualLongMethod) (JNIEnv *, jobject, jclass,
jmethodID, ...);
jlong (JNICALL *CallNonvirtualLongMethodV) (JNIEnv *, jobject, jclass,
jmethodID, va_list);
jlong (JNICALL *CallNonvirtualLongMethodA) (JNIEnv *, jobject, jclass,
- jmethodID, jvalue *);
+ jmethodID, const jvalue *);
jfloat (JNICALL *CallNonvirtualFloatMethod) (JNIEnv *, jobject, jclass,
jmethodID, ...);
jfloat (JNICALL *CallNonvirtualFloatMethodV) (JNIEnv *, jobject, jclass,
jmethodID, va_list);
jfloat (JNICALL *CallNonvirtualFloatMethodA) (JNIEnv *, jobject, jclass,
- jmethodID, jvalue *);
+ jmethodID, const jvalue *);
jdouble (JNICALL *CallNonvirtualDoubleMethod) (JNIEnv *, jobject, jclass,
jmethodID, ...);
jdouble (JNICALL *CallNonvirtualDoubleMethodV) (JNIEnv *, jobject, jclass,
jmethodID, va_list);
jdouble (JNICALL *CallNonvirtualDoubleMethodA) (JNIEnv *, jobject, jclass,
- jmethodID, jvalue *);
+ jmethodID, const jvalue *);
void (JNICALL *CallNonvirtualVoidMethod) (JNIEnv *, jobject, jclass,
jmethodID, ...);
void (JNICALL *CallNonvirtualVoidMethodV) (JNIEnv *, jobject, jclass,
jmethodID, va_list);
void (JNICALL *CallNonvirtualVoidMethodA) (JNIEnv *, jobject, jclass,
- jmethodID, jvalue *);
+ jmethodID, const jvalue *);
jfieldID (JNICALL *GetFieldID) (JNIEnv *, jclass, const char *,
const char *);
@@ -416,61 +416,61 @@ struct JNINativeInterface
jobject (JNICALL *CallStaticObjectMethodV) (JNIEnv *, jclass, jmethodID,
va_list);
jobject (JNICALL *CallStaticObjectMethodA) (JNIEnv *, jclass, jmethodID,
- jvalue *);
+ const jvalue *);
jboolean (JNICALL *CallStaticBooleanMethod) (JNIEnv *, jclass, jmethodID,
...);
jboolean (JNICALL *CallStaticBooleanMethodV) (JNIEnv *, jclass, jmethodID,
va_list);
jboolean (JNICALL *CallStaticBooleanMethodA) (JNIEnv *, jclass, jmethodID,
- jvalue *);
+ const jvalue *);
jbyte (JNICALL *CallStaticByteMethod) (JNIEnv *, jclass, jmethodID,
...);
jbyte (JNICALL *CallStaticByteMethodV) (JNIEnv *, jclass, jmethodID,
va_list);
jbyte (JNICALL *CallStaticByteMethodA) (JNIEnv *, jclass, jmethodID,
- jvalue *);
+ const jvalue *);
jchar (JNICALL *CallStaticCharMethod) (JNIEnv *, jclass, jmethodID,
...);
jchar (JNICALL *CallStaticCharMethodV) (JNIEnv *, jclass, jmethodID,
va_list);
jchar (JNICALL *CallStaticCharMethodA) (JNIEnv *, jclass, jmethodID,
- jvalue *);
+ const jvalue *);
jshort (JNICALL *CallStaticShortMethod) (JNIEnv *, jclass, jmethodID,
...);
jshort (JNICALL *CallStaticShortMethodV) (JNIEnv *, jclass, jmethodID,
va_list);
jshort (JNICALL *CallStaticShortMethodA) (JNIEnv *, jclass, jmethodID,
- jvalue *);
+ const jvalue *);
jint (JNICALL *CallStaticIntMethod) (JNIEnv *, jclass, jmethodID,
...);
jint (JNICALL *CallStaticIntMethodV) (JNIEnv *, jclass, jmethodID,
va_list);
jint (JNICALL *CallStaticIntMethodA) (JNIEnv *, jclass, jmethodID,
- jvalue *);
+ const jvalue *);
jlong (JNICALL *CallStaticLongMethod) (JNIEnv *, jclass, jmethodID,
...);
jlong (JNICALL *CallStaticLongMethodV) (JNIEnv *, jclass, jmethodID,
va_list);
jlong (JNICALL *CallStaticLongMethodA) (JNIEnv *, jclass, jmethodID,
- jvalue *);
+ const jvalue *);
jfloat (JNICALL *CallStaticFloatMethod) (JNIEnv *, jclass, jmethodID,
...);
jfloat (JNICALL *CallStaticFloatMethodV) (JNIEnv *, jclass, jmethodID,
va_list);
jfloat (JNICALL *CallStaticFloatMethodA) (JNIEnv *, jclass, jmethodID,
- jvalue *);
+ const jvalue *);
jdouble (JNICALL *CallStaticDoubleMethod) (JNIEnv *, jclass, jmethodID,
...);
jdouble (JNICALL *CallStaticDoubleMethodV) (JNIEnv *, jclass, jmethodID,
va_list);
jdouble (JNICALL *CallStaticDoubleMethodA) (JNIEnv *, jclass, jmethodID,
- jvalue *);
+ const jvalue *);
void (JNICALL *CallStaticVoidMethod) (JNIEnv *, jclass, jmethodID,
...);
void (JNICALL *CallStaticVoidMethodV) (JNIEnv *, jclass, jmethodID,
va_list);
void (JNICALL *CallStaticVoidMethodA) (JNIEnv *, jclass, jmethodID,
- jvalue *);
+ const jvalue *);
jfieldID (JNICALL *GetStaticFieldID) (JNIEnv *, jclass, const char *,
const char *);
@@ -579,21 +579,29 @@ struct JNINativeInterface
jsize, jsize, jdouble *);
void (JNICALL *SetBooleanArrayRegion) (JNIEnv *, jbooleanArray,
- jsize, jsize, jboolean *);
+ jsize, jsize,
+ const jboolean *);
void (JNICALL *SetByteArrayRegion) (JNIEnv *, jbyteArray,
- jsize, jsize, jbyte *);
+ jsize, jsize,
+ const jbyte *);
void (JNICALL *SetCharArrayRegion) (JNIEnv *, jcharArray,
- jsize, jsize, jchar *);
+ jsize, jsize,
+ const jchar *);
void (JNICALL *SetShortArrayRegion) (JNIEnv *, jshortArray,
- jsize, jsize, jshort *);
+ jsize, jsize,
+ const jshort *);
void (JNICALL *SetIntArrayRegion) (JNIEnv *, jintArray,
- jsize, jsize, jint *);
+ jsize, jsize,
+ const jint *);
void (JNICALL *SetLongArrayRegion) (JNIEnv *, jlongArray,
- jsize, jsize, jlong *);
+ jsize, jsize,
+ const jlong *);
void (JNICALL *SetFloatArrayRegion) (JNIEnv *, jfloatArray,
- jsize, jsize, jfloat *);
+ jsize, jsize,
+ const jfloat *);
void (JNICALL *SetDoubleArrayRegion) (JNIEnv *, jdoubleArray,
- jsize, jsize, jdouble *);
+ jsize, jsize,
+ const jdouble *);
jint (JNICALL *RegisterNatives) (JNIEnv *, jclass,
const JNINativeMethod *,
@@ -636,7 +644,7 @@ class _Jv_JNIEnv
{
public:
/* The method table. */
- struct JNINativeInterface *p;
+ struct JNINativeInterface_ *p;
#ifdef _CLASSPATH_JNIENV_CONTENTS
_CLASSPATH_JNIENV_CONTENTS
@@ -766,7 +774,8 @@ public:
jboolean CallBooleanMethodV (jobject obj0, jmethodID meth1, va_list val2)
{ return p->CallBooleanMethodV (this, obj0, meth1, val2); }
- jboolean CallBooleanMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
+ jboolean CallBooleanMethodA (jobject obj0, jmethodID meth1,
+ const jvalue * val2)
{ return p->CallBooleanMethodA (this, obj0, meth1, val2); }
jbyte CallByteMethod (jobject obj0, jmethodID meth1, ...)
@@ -781,7 +790,7 @@ public:
jbyte CallByteMethodV (jobject obj0, jmethodID meth1, va_list val2)
{ return p->CallByteMethodV (this, obj0, meth1, val2); }
- jbyte CallByteMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
+ jbyte CallByteMethodA (jobject obj0, jmethodID meth1, const jvalue * val2)
{ return p->CallByteMethodA (this, obj0, meth1, val2); }
jchar CallCharMethod (jobject obj0, jmethodID meth1, ...)
@@ -796,7 +805,7 @@ public:
jchar CallCharMethodV (jobject obj0, jmethodID meth1, va_list val2)
{ return p->CallCharMethodV (this, obj0, meth1, val2); }
- jchar CallCharMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
+ jchar CallCharMethodA (jobject obj0, jmethodID meth1, const jvalue * val2)
{ return p->CallCharMethodA (this, obj0, meth1, val2); }
jshort CallShortMethod (jobject obj0, jmethodID meth1, ...)
@@ -811,7 +820,7 @@ public:
jshort CallShortMethodV (jobject obj0, jmethodID meth1, va_list val2)
{ return p->CallShortMethodV (this, obj0, meth1, val2); }
- jshort CallShortMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
+ jshort CallShortMethodA (jobject obj0, jmethodID meth1, const jvalue * val2)
{ return p->CallShortMethodA (this, obj0, meth1, val2); }
jint CallIntMethod (jobject obj0, jmethodID meth1, ...)
@@ -841,7 +850,7 @@ public:
jlong CallLongMethodV (jobject obj0, jmethodID meth1, va_list val2)
{ return p->CallLongMethodV (this, obj0, meth1, val2); }
- jlong CallLongMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
+ jlong CallLongMethodA (jobject obj0, jmethodID meth1, const jvalue * val2)
{ return p->CallLongMethodA (this, obj0, meth1, val2); }
jfloat CallFloatMethod (jobject obj0, jmethodID meth1, ...)
@@ -856,7 +865,7 @@ public:
jfloat CallFloatMethodV (jobject obj0, jmethodID meth1, va_list val2)
{ return p->CallFloatMethodV (this, obj0, meth1, val2); }
- jfloat CallFloatMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
+ jfloat CallFloatMethodA (jobject obj0, jmethodID meth1, const jvalue * val2)
{ return p->CallFloatMethodA (this, obj0, meth1, val2); }
jdouble CallDoubleMethod (jobject obj0, jmethodID meth1, ...)
@@ -871,7 +880,7 @@ public:
jdouble CallDoubleMethodV (jobject obj0, jmethodID meth1, va_list val2)
{ return p->CallDoubleMethodV (this, obj0, meth1, val2); }
- jdouble CallDoubleMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
+ jdouble CallDoubleMethodA (jobject obj0, jmethodID meth1, const jvalue * val2)
{ return p->CallDoubleMethodA (this, obj0, meth1, val2); }
void CallVoidMethod (jobject obj0, jmethodID meth1, ...)
@@ -885,7 +894,7 @@ public:
void CallVoidMethodV (jobject obj0, jmethodID meth1, va_list val2)
{ p->CallVoidMethodV (this, obj0, meth1, val2); }
- void CallVoidMethodA (jobject obj0, jmethodID meth1, jvalue * val2)
+ void CallVoidMethodA (jobject obj0, jmethodID meth1, const jvalue * val2)
{ p->CallVoidMethodA (this, obj0, meth1, val2); }
jobject CallNonvirtualObjectMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
@@ -900,7 +909,7 @@ public:
jobject CallNonvirtualObjectMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
{ return p->CallNonvirtualObjectMethodV (this, obj0, cl1, meth2, val3); }
- jobject CallNonvirtualObjectMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
+ jobject CallNonvirtualObjectMethodA (jobject obj0, jclass cl1, jmethodID meth2, const jvalue * val3)
{ return p->CallNonvirtualObjectMethodA (this, obj0, cl1, meth2, val3); }
jboolean CallNonvirtualBooleanMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
@@ -915,7 +924,7 @@ public:
jboolean CallNonvirtualBooleanMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
{ return p->CallNonvirtualBooleanMethodV (this, obj0, cl1, meth2, val3); }
- jboolean CallNonvirtualBooleanMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
+ jboolean CallNonvirtualBooleanMethodA (jobject obj0, jclass cl1, jmethodID meth2, const jvalue * val3)
{ return p->CallNonvirtualBooleanMethodA (this, obj0, cl1, meth2, val3); }
jbyte CallNonvirtualByteMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
@@ -930,7 +939,7 @@ public:
jbyte CallNonvirtualByteMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
{ return p->CallNonvirtualByteMethodV (this, obj0, cl1, meth2, val3); }
- jbyte CallNonvirtualByteMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
+ jbyte CallNonvirtualByteMethodA (jobject obj0, jclass cl1, jmethodID meth2, const jvalue * val3)
{ return p->CallNonvirtualByteMethodA (this, obj0, cl1, meth2, val3); }
jchar CallNonvirtualCharMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
@@ -945,7 +954,7 @@ public:
jchar CallNonvirtualCharMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
{ return p->CallNonvirtualCharMethodV (this, obj0, cl1, meth2, val3); }
- jchar CallNonvirtualCharMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
+ jchar CallNonvirtualCharMethodA (jobject obj0, jclass cl1, jmethodID meth2, const jvalue * val3)
{ return p->CallNonvirtualCharMethodA (this, obj0, cl1, meth2, val3); }
jshort CallNonvirtualShortMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
@@ -960,7 +969,7 @@ public:
jshort CallNonvirtualShortMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
{ return p->CallNonvirtualShortMethodV (this, obj0, cl1, meth2, val3); }
- jshort CallNonvirtualShortMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
+ jshort CallNonvirtualShortMethodA (jobject obj0, jclass cl1, jmethodID meth2, const jvalue * val3)
{ return p->CallNonvirtualShortMethodA (this, obj0, cl1, meth2, val3); }
jint CallNonvirtualIntMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
@@ -975,7 +984,7 @@ public:
jint CallNonvirtualIntMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
{ return p->CallNonvirtualIntMethodV (this, obj0, cl1, meth2, val3); }
- jint CallNonvirtualIntMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
+ jint CallNonvirtualIntMethodA (jobject obj0, jclass cl1, jmethodID meth2, const jvalue * val3)
{ return p->CallNonvirtualIntMethodA (this, obj0, cl1, meth2, val3); }
jlong CallNonvirtualLongMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
@@ -990,7 +999,7 @@ public:
jlong CallNonvirtualLongMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
{ return p->CallNonvirtualLongMethodV (this, obj0, cl1, meth2, val3); }
- jlong CallNonvirtualLongMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
+ jlong CallNonvirtualLongMethodA (jobject obj0, jclass cl1, jmethodID meth2, const jvalue * val3)
{ return p->CallNonvirtualLongMethodA (this, obj0, cl1, meth2, val3); }
jfloat CallNonvirtualFloatMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
@@ -1005,7 +1014,7 @@ public:
jfloat CallNonvirtualFloatMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
{ return p->CallNonvirtualFloatMethodV (this, obj0, cl1, meth2, val3); }
- jfloat CallNonvirtualFloatMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
+ jfloat CallNonvirtualFloatMethodA (jobject obj0, jclass cl1, jmethodID meth2, const jvalue * val3)
{ return p->CallNonvirtualFloatMethodA (this, obj0, cl1, meth2, val3); }
jdouble CallNonvirtualDoubleMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
@@ -1020,7 +1029,7 @@ public:
jdouble CallNonvirtualDoubleMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
{ return p->CallNonvirtualDoubleMethodV (this, obj0, cl1, meth2, val3); }
- jdouble CallNonvirtualDoubleMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
+ jdouble CallNonvirtualDoubleMethodA (jobject obj0, jclass cl1, jmethodID meth2, const jvalue * val3)
{ return p->CallNonvirtualDoubleMethodA (this, obj0, cl1, meth2, val3); }
void CallNonvirtualVoidMethod (jobject obj0, jclass cl1, jmethodID meth2, ...)
@@ -1034,7 +1043,7 @@ public:
void CallNonvirtualVoidMethodV (jobject obj0, jclass cl1, jmethodID meth2, va_list val3)
{ p->CallNonvirtualVoidMethodV (this, obj0, cl1, meth2, val3); }
- void CallNonvirtualVoidMethodA (jobject obj0, jclass cl1, jmethodID meth2, jvalue * val3)
+ void CallNonvirtualVoidMethodA (jobject obj0, jclass cl1, jmethodID meth2, const jvalue * val3)
{ p->CallNonvirtualVoidMethodA (this, obj0, cl1, meth2, val3); }
jfieldID GetFieldID (jclass cl0, const char * val1, const char * val2)
@@ -1109,7 +1118,8 @@ public:
jobject CallStaticObjectMethodV (jclass cl0, jmethodID meth1, va_list val2)
{ return p->CallStaticObjectMethodV (this, cl0, meth1, val2); }
- jobject CallStaticObjectMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
+ jobject CallStaticObjectMethodA (jclass cl0, jmethodID meth1,
+ const jvalue * val2)
{ return p->CallStaticObjectMethodA (this, cl0, meth1, val2); }
jboolean CallStaticBooleanMethod (jclass cl0, jmethodID meth1, ...)
@@ -1124,7 +1134,8 @@ public:
jboolean CallStaticBooleanMethodV (jclass cl0, jmethodID meth1, va_list val2)
{ return p->CallStaticBooleanMethodV (this, cl0, meth1, val2); }
- jboolean CallStaticBooleanMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
+ jboolean CallStaticBooleanMethodA (jclass cl0, jmethodID meth1,
+ const jvalue * val2)
{ return p->CallStaticBooleanMethodA (this, cl0, meth1, val2); }
jbyte CallStaticByteMethod (jclass cl0, jmethodID meth1, ...)
@@ -1139,7 +1150,7 @@ public:
jbyte CallStaticByteMethodV (jclass cl0, jmethodID meth1, va_list val2)
{ return p->CallStaticByteMethodV (this, cl0, meth1, val2); }
- jbyte CallStaticByteMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
+ jbyte CallStaticByteMethodA (jclass cl0, jmethodID meth1, const jvalue * val2)
{ return p->CallStaticByteMethodA (this, cl0, meth1, val2); }
jchar CallStaticCharMethod (jclass cl0, jmethodID meth1, ...)
@@ -1154,7 +1165,7 @@ public:
jchar CallStaticCharMethodV (jclass cl0, jmethodID meth1, va_list val2)
{ return p->CallStaticCharMethodV (this, cl0, meth1, val2); }
- jchar CallStaticCharMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
+ jchar CallStaticCharMethodA (jclass cl0, jmethodID meth1, const jvalue * val2)
{ return p->CallStaticCharMethodA (this, cl0, meth1, val2); }
jshort CallStaticShortMethod (jclass cl0, jmethodID meth1, ...)
@@ -1169,7 +1180,8 @@ public:
jshort CallStaticShortMethodV (jclass cl0, jmethodID meth1, va_list val2)
{ return p->CallStaticShortMethodV (this, cl0, meth1, val2); }
- jshort CallStaticShortMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
+ jshort CallStaticShortMethodA (jclass cl0, jmethodID meth1,
+ const jvalue * val2)
{ return p->CallStaticShortMethodA (this, cl0, meth1, val2); }
jint CallStaticIntMethod (jclass cl0, jmethodID meth1, ...)
@@ -1184,7 +1196,7 @@ public:
jint CallStaticIntMethodV (jclass cl0, jmethodID meth1, va_list val2)
{ return p->CallStaticIntMethodV (this, cl0, meth1, val2); }
- jint CallStaticIntMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
+ jint CallStaticIntMethodA (jclass cl0, jmethodID meth1, const jvalue * val2)
{ return p->CallStaticIntMethodA (this, cl0, meth1, val2); }
jlong CallStaticLongMethod (jclass cl0, jmethodID meth1, ...)
@@ -1199,7 +1211,7 @@ public:
jlong CallStaticLongMethodV (jclass cl0, jmethodID meth1, va_list val2)
{ return p->CallStaticLongMethodV (this, cl0, meth1, val2); }
- jlong CallStaticLongMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
+ jlong CallStaticLongMethodA (jclass cl0, jmethodID meth1, const jvalue * val2)
{ return p->CallStaticLongMethodA (this, cl0, meth1, val2); }
jfloat CallStaticFloatMethod (jclass cl0, jmethodID meth1, ...)
@@ -1214,7 +1226,8 @@ public:
jfloat CallStaticFloatMethodV (jclass cl0, jmethodID meth1, va_list val2)
{ return p->CallStaticFloatMethodV (this, cl0, meth1, val2); }
- jfloat CallStaticFloatMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
+ jfloat CallStaticFloatMethodA (jclass cl0, jmethodID meth1,
+ const jvalue * val2)
{ return p->CallStaticFloatMethodA (this, cl0, meth1, val2); }
jdouble CallStaticDoubleMethod (jclass cl0, jmethodID meth1, ...)
@@ -1229,7 +1242,8 @@ public:
jdouble CallStaticDoubleMethodV (jclass cl0, jmethodID meth1, va_list val2)
{ return p->CallStaticDoubleMethodV (this, cl0, meth1, val2); }
- jdouble CallStaticDoubleMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
+ jdouble CallStaticDoubleMethodA (jclass cl0, jmethodID meth1,
+ const jvalue * val2)
{ return p->CallStaticDoubleMethodA (this, cl0, meth1, val2); }
void CallStaticVoidMethod (jclass cl0, jmethodID meth1, ...)
@@ -1243,7 +1257,7 @@ public:
void CallStaticVoidMethodV (jclass cl0, jmethodID meth1, va_list val2)
{ p->CallStaticVoidMethodV (this, cl0, meth1, val2); }
- void CallStaticVoidMethodA (jclass cl0, jmethodID meth1, jvalue * val2)
+ void CallStaticVoidMethodA (jclass cl0, jmethodID meth1, const jvalue * val2)
{ p->CallStaticVoidMethodA (this, cl0, meth1, val2); }
jfieldID GetStaticFieldID (jclass cl0, const char * val1, const char * val2)
@@ -1517,7 +1531,7 @@ public:
* Invocation API.
*/
-struct JNIInvokeInterface
+struct JNIInvokeInterface_
{
void *reserved0;
void *reserved1;
@@ -1535,7 +1549,7 @@ struct JNIInvokeInterface
class _Jv_JavaVM
{
public:
- const struct JNIInvokeInterface *functions;
+ const struct JNIInvokeInterface_ *functions;
jint DestroyJavaVM ()
{ return functions->DestroyJavaVM (this); }
@@ -1626,13 +1640,15 @@ typedef struct JDK1_1AttachArgs
/* Keep c-font-lock-extra-types in alphabetical order. */
-/* Local Variables: */
-/* c-font-lock-extra-types: ("\\sw+_t"
- "JNIEnv" "JNINativeMethod" "JavaVM" "JavaVMOption" "jarray"
- "jboolean" "jbooleanArray" "jbyte" "jbyteArray" "jchar" "jcharArray"
- "jclass" "jdouble" "jdoubleArray" "jfieldID" "jfloat" "jfloatArray"
- "jint" "jintArray" "jlong" "jlongArray" "jmethodID" "jobject" "jstring" "jthrowable"
- "jvalue" "jweak") */
-/* End: */
+/*
+Local Variables:
+c-font-lock-extra-types: ("\\sw+_t" \
+ "JNIEnv" "JNINativeMethod" "JavaVM" "JavaVMOption" "jarray" \
+ "jboolean" "jbooleanArray" "jbyte" "jbyteArray" "jchar" "jcharArray" \
+ "jclass" "jdouble" "jdoubleArray" "jfieldID" "jfloat" "jfloatArray" \
+ "jint" "jintArray" "jlong" "jlongArray" "jmethodID" "jobject" \
+ "jstring" "jthrowable" "jvalue" "jweak")
+End:
+*/
#endif /* _CLASSPATH_JNI_H */
diff --git a/libjava/classpath/include/jvmti.h b/libjava/classpath/include/jvmti.h
index b26f7932e54..c455838f126 100644
--- a/libjava/classpath/include/jvmti.h
+++ b/libjava/classpath/include/jvmti.h
@@ -637,7 +637,7 @@ typedef void (JNICALL *jvmtiStartFunction)
/*
* JVM Tool Interface Base Types
*/
-typedef struct JNINativeInterface jniNativeInterface;
+typedef struct JNINativeInterface_ jniNativeInterface;
struct _Jv_jvmtiEnv
{
diff --git a/libjava/classpath/install-sh b/libjava/classpath/install-sh
index 4fbbae7b7ff..4d4a9519eaf 100755
--- a/libjava/classpath/install-sh
+++ b/libjava/classpath/install-sh
@@ -1,7 +1,7 @@
#!/bin/sh
# install - install a program, script, or datafile
-scriptversion=2006-10-14.15
+scriptversion=2005-05-14.22
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
@@ -39,24 +39,15 @@ scriptversion=2006-10-14.15
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
-# from scratch.
-
-nl='
-'
-IFS=" "" $nl"
+# from scratch. It can only install one file at a time, a restriction
+# shared with many OS's install programs.
# set DOITPROG to echo to test this script
# Don't use :- since 4.3BSD and earlier shells don't like it.
doit="${DOITPROG-}"
-if test -z "$doit"; then
- doit_exec=exec
-else
- doit_exec=$doit
-fi
-# Put in absolute file names if you don't have them in your path;
-# or use environment vars.
+# put in absolute paths if you don't have them in your path; or use env. vars.
mvprog="${MVPROG-mv}"
cpprog="${CPPROG-cp}"
@@ -67,13 +58,7 @@ stripprog="${STRIPPROG-strip}"
rmprog="${RMPROG-rm}"
mkdirprog="${MKDIRPROG-mkdir}"
-posix_glob=
-posix_mkdir=
-
-# Desired mode of installed file.
-mode=0755
-
-chmodcmd=$chmodprog
+chmodcmd="$chmodprog 0755"
chowncmd=
chgrpcmd=
stripcmd=
@@ -110,7 +95,7 @@ Environment variables override the default commands:
CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
"
-while test $# -ne 0; do
+while test -n "$1"; do
case $1 in
-c) shift
continue;;
@@ -126,15 +111,9 @@ while test $# -ne 0; do
--help) echo "$usage"; exit $?;;
- -m) mode=$2
+ -m) chmodcmd="$chmodprog $2"
shift
shift
- case $mode in
- *' '* | *' '* | *'
-'* | *'*'* | *'?'* | *'['*)
- echo "$0: invalid mode: $mode" >&2
- exit 1;;
- esac
continue;;
-o) chowncmd="$chownprog $2"
@@ -157,33 +136,25 @@ while test $# -ne 0; do
--version) echo "$0 $scriptversion"; exit $?;;
- --) shift
+ *) # When -d is used, all remaining arguments are directories to create.
+ # When -t is used, the destination is already specified.
+ test -n "$dir_arg$dstarg" && break
+ # Otherwise, the last argument is the destination. Remove it from $@.
+ for arg
+ do
+ if test -n "$dstarg"; then
+ # $@ is not empty: it contains at least $arg.
+ set fnord "$@" "$dstarg"
+ shift # fnord
+ fi
+ shift # arg
+ dstarg=$arg
+ done
break;;
-
- -*) echo "$0: invalid option: $1" >&2
- exit 1;;
-
- *) break;;
esac
done
-if test $# -ne 0 && test -z "$dir_arg$dstarg"; then
- # When -d is used, all remaining arguments are directories to create.
- # When -t is used, the destination is already specified.
- # Otherwise, the last argument is the destination. Remove it from $@.
- for arg
- do
- if test -n "$dstarg"; then
- # $@ is not empty: it contains at least $arg.
- set fnord "$@" "$dstarg"
- shift # fnord
- fi
- shift # arg
- dstarg=$arg
- done
-fi
-
-if test $# -eq 0; then
+if test -z "$1"; then
if test -z "$dir_arg"; then
echo "$0: no input file specified." >&2
exit 1
@@ -193,33 +164,6 @@ if test $# -eq 0; then
exit 0
fi
-if test -z "$dir_arg"; then
- trap '(exit $?); exit' 1 2 13 15
-
- # Set umask so as not to create temps with too-generous modes.
- # However, 'strip' requires both read and write access to temps.
- case $mode in
- # Optimize common cases.
- *644) cp_umask=133;;
- *755) cp_umask=22;;
-
- *[0-7])
- if test -z "$stripcmd"; then
- u_plus_rw=
- else
- u_plus_rw='% 200'
- fi
- cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
- *)
- if test -z "$stripcmd"; then
- u_plus_rw=
- else
- u_plus_rw=,u+rw
- fi
- cp_umask=$mode$u_plus_rw;;
- esac
-fi
-
for src
do
# Protect names starting with `-'.
@@ -229,11 +173,15 @@ do
if test -n "$dir_arg"; then
dst=$src
- dstdir=$dst
- test -d "$dstdir"
- dstdir_status=$?
- else
+ src=
+ if test -d "$dst"; then
+ mkdircmd=:
+ chmodcmd=
+ else
+ mkdircmd=$mkdirprog
+ fi
+ else
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
# might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
@@ -260,188 +208,53 @@ do
echo "$0: $dstarg: Is a directory" >&2
exit 1
fi
- dstdir=$dst
- dst=$dstdir/`basename "$src"`
- dstdir_status=0
- else
- # Prefer dirname, but fall back on a substitute if dirname fails.
- dstdir=`
- (dirname "$dst") 2>/dev/null ||
- expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
- X"$dst" : 'X\(//\)[^/]' \| \
- X"$dst" : 'X\(//\)$' \| \
- X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
- echo X"$dst" |
- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
- s//\1/
- q
- }
- /^X\(\/\/\)[^/].*/{
- s//\1/
- q
- }
- /^X\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'
- `
-
- test -d "$dstdir"
- dstdir_status=$?
+ dst=$dst/`basename "$src"`
fi
fi
- obsolete_mkdir_used=false
+ # This sed command emulates the dirname command.
+ dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'`
- if test $dstdir_status != 0; then
- case $posix_mkdir in
- '')
- # Create intermediate dirs using mode 755 as modified by the umask.
- # This is like FreeBSD 'install' as of 1997-10-28.
- umask=`umask`
- case $stripcmd.$umask in
- # Optimize common cases.
- *[2367][2367]) mkdir_umask=$umask;;
- .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+ # Make sure that the destination directory exists.
- *[0-7])
- mkdir_umask=`expr $umask + 22 \
- - $umask % 100 % 40 + $umask % 20 \
- - $umask % 10 % 4 + $umask % 2
- `;;
- *) mkdir_umask=$umask,go-w;;
- esac
+ # Skip lots of stat calls in the usual case.
+ if test ! -d "$dstdir"; then
+ defaultIFS='
+ '
+ IFS="${IFS-$defaultIFS}"
- # With -d, create the new directory with the user-specified mode.
- # Otherwise, rely on $mkdir_umask.
- if test -n "$dir_arg"; then
- mkdir_mode=-m$mode
- else
- mkdir_mode=
- fi
+ oIFS=$IFS
+ # Some sh's can't handle IFS=/ for some reason.
+ IFS='%'
+ set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
+ shift
+ IFS=$oIFS
- posix_mkdir=false
- case $umask in
- *[123567][0-7][0-7])
- # POSIX mkdir -p sets u+wx bits regardless of umask, which
- # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
- ;;
- *)
- tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
- trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+ pathcomp=
- if (umask $mkdir_umask &&
- exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
- then
- if test -z "$dir_arg" || {
- # Check for POSIX incompatibilities with -m.
- # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
- # other-writeable bit of parent directory when it shouldn't.
- # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
- ls_ld_tmpdir=`ls -ld "$tmpdir"`
- case $ls_ld_tmpdir in
- d????-?r-*) different_mode=700;;
- d????-?--*) different_mode=755;;
- *) false;;
- esac &&
- $mkdirprog -m$different_mode -p -- "$tmpdir" && {
- ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
- test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
- }
- }
- then posix_mkdir=:
- fi
- rmdir "$tmpdir/d" "$tmpdir"
- else
- # Remove any dirs left behind by ancient mkdir implementations.
- rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
- fi
- trap '' 0;;
- esac;;
- esac
-
- if
- $posix_mkdir && (
- umask $mkdir_umask &&
- $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
- )
- then :
- else
-
- # The umask is ridiculous, or mkdir does not conform to POSIX,
- # or it failed possibly due to a race condition. Create the
- # directory the slow way, step by step, checking for races as we go.
-
- case $dstdir in
- /*) prefix=/ ;;
- -*) prefix=./ ;;
- *) prefix= ;;
- esac
-
- case $posix_glob in
- '')
- if (set -f) 2>/dev/null; then
- posix_glob=true
- else
- posix_glob=false
- fi ;;
- esac
-
- oIFS=$IFS
- IFS=/
- $posix_glob && set -f
- set fnord $dstdir
+ while test $# -ne 0 ; do
+ pathcomp=$pathcomp$1
shift
- $posix_glob && set +f
- IFS=$oIFS
-
- prefixes=
-
- for d
- do
- test -z "$d" && continue
-
- prefix=$prefix$d
- if test -d "$prefix"; then
- prefixes=
- else
- if $posix_mkdir; then
- (umask=$mkdir_umask &&
- $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
- # Don't fail if two instances are running concurrently.
- test -d "$prefix" || exit 1
- else
- case $prefix in
- *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
- *) qprefix=$prefix;;
- esac
- prefixes="$prefixes '$qprefix'"
- fi
- fi
- prefix=$prefix/
- done
-
- if test -n "$prefixes"; then
- # Don't fail if two instances are running concurrently.
- (umask $mkdir_umask &&
- eval "\$doit_exec \$mkdirprog $prefixes") ||
- test -d "$dstdir" || exit 1
- obsolete_mkdir_used=true
+ if test ! -d "$pathcomp"; then
+ $mkdirprog "$pathcomp"
+ # mkdir can fail with a `File exist' error in case several
+ # install-sh are creating the directory concurrently. This
+ # is OK.
+ test -d "$pathcomp" || exit
fi
- fi
+ pathcomp=$pathcomp/
+ done
fi
if test -n "$dir_arg"; then
- { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
- { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
- { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
- test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
+ $doit $mkdircmd "$dst" \
+ && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
+ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
+ && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
+ && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
+
else
+ dstfile=`basename "$dst"`
# Make a couple of temp file names in the proper directory.
dsttmp=$dstdir/_inst.$$_
@@ -449,9 +262,10 @@ do
# Trap to clean up those temp files at exit.
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+ trap '(exit $?); exit' 1 2 13 15
# Copy the file name to the temp name.
- (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
+ $doit $cpprog "$src" "$dsttmp" &&
# and set any options; do chmod last to preserve setuid bits.
#
@@ -462,10 +276,10 @@ do
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
&& { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
&& { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
- && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+ && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
# Now rename the file to the real destination.
- { $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null \
+ { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \
|| {
# The rename failed, perhaps because mv can't rename something else
# to itself, or perhaps because mv is so ancient that it does not
@@ -477,12 +291,11 @@ do
# reasons. In this case, the final cleanup might fail but the new
# file should still install successfully.
{
- if test -f "$dst"; then
- $doit $rmcmd -f "$dst" 2>/dev/null \
- || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null \
- && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }; }\
+ if test -f "$dstdir/$dstfile"; then
+ $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
+ || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
|| {
- echo "$0: cannot unlink or rename $dst" >&2
+ echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
(exit 1); exit 1
}
else
@@ -491,14 +304,17 @@ do
} &&
# Now rename the file to the real destination.
- $doit $mvcmd "$dsttmp" "$dst"
+ $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
}
- } || exit 1
-
- trap '' 0
- fi
+ }
+ fi || { (exit 1); exit 1; }
done
+# The final little trick to "correctly" pass the exit status to the exit trap.
+{
+ (exit 0); exit 0
+}
+
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
diff --git a/libjava/classpath/java/awt/AWTKeyStroke.java b/libjava/classpath/java/awt/AWTKeyStroke.java
index e0b34e99238..0fc44287a16 100644
--- a/libjava/classpath/java/awt/AWTKeyStroke.java
+++ b/libjava/classpath/java/awt/AWTKeyStroke.java
@@ -93,7 +93,7 @@ public class AWTKeyStroke implements Serializable
private static final int MAX_CACHE_SIZE = 2048;
/** Prune stale entries. */
- protected boolean removeEldestEntry(Entry
+ protected boolean removeEldestEntry(Map.Entry
eldest)
{
return size() > MAX_CACHE_SIZE;
diff --git a/libjava/classpath/java/awt/AlphaComposite.java b/libjava/classpath/java/awt/AlphaComposite.java
index 90df2e66d8c..addd1e71327 100644
--- a/libjava/classpath/java/awt/AlphaComposite.java
+++ b/libjava/classpath/java/awt/AlphaComposite.java
@@ -61,7 +61,7 @@ public final class AlphaComposite implements Composite
private static final int MAX_CACHE_SIZE = 2048;
/** Prune stale entries. */
- protected boolean removeEldestEntry(Entry eldest)
+ protected boolean removeEldestEntry(Map.Entry eldest)
{
return size() > MAX_CACHE_SIZE;
}
diff --git a/libjava/classpath/java/awt/Dialog.java b/libjava/classpath/java/awt/Dialog.java
index 7df2f523c86..83fb52d89d7 100644
--- a/libjava/classpath/java/awt/Dialog.java
+++ b/libjava/classpath/java/awt/Dialog.java
@@ -61,6 +61,21 @@ import javax.accessibility.AccessibleStateSet;
*/
public class Dialog extends Window
{
+ public enum ModalExclusionType
+ {
+ APPLICATION_EXCLUDE,
+ NO_EXCLUDE,
+ TOOLKIT_EXCLUDE
+ }
+
+ public enum ModalityType
+ {
+ APPLICATION_MODAL,
+ DOCUMENT_MODAL,
+ MODELESS,
+ TOOLKIT_MODAL
+ }
+
// Serialization constant
private static final long serialVersionUID = 5920926903803293709L;
diff --git a/libjava/classpath/java/awt/Font.java b/libjava/classpath/java/awt/Font.java
index 29b87d6af99..d6892a626dc 100644
--- a/libjava/classpath/java/awt/Font.java
+++ b/libjava/classpath/java/awt/Font.java
@@ -169,6 +169,31 @@ public class Font implements Serializable
*/
public static final int LAYOUT_NO_LIMIT_CONTEXT = 4;
+ /**
+ * @since 1.6
+ */
+ public static final String DIALOG = "Dialog";
+
+ /**
+ * @since 1.6
+ */
+ public static final String DIALOG_INPUT = "DialogInput";
+
+ /**
+ * @since 1.6
+ */
+ public static final String MONOSPACED = "Monospaced";
+
+ /**
+ * @since 1.6
+ */
+ public static final String SANS_SERIF = "SansSerif";
+
+ /**
+ * @since 1.6
+ */
+ public static final String SERIF = "Serif";
+
/**
* The logical name of this font.
*
@@ -330,6 +355,11 @@ public class Font implements Serializable
return getFont(propname, (Font) null);
}
+ protected Font(Font font)
+ {
+ this(font.getName(), font.getAttributes());
+ }
+
/**
* Initializes a new instance of Font
with the specified
* attributes.
@@ -491,7 +521,12 @@ public class Font implements Serializable
*/
public boolean canDisplay(char c)
{
- return peer.canDisplay(this, c);
+ return canDisplay((int) c);
+ }
+
+ public boolean canDisplay(int codePoint)
+ {
+ return peer.canDisplay(this, codePoint);
}
/**
@@ -1373,6 +1408,12 @@ public class Font implements Serializable
return getLineMetrics(str, 0, str.length() - 1, frc);
}
+ public boolean hasLayoutAttributes()
+ {
+ // TODO: Implement properly.
+ return false;
+ }
+
/**
* Reads the normal fields from the stream and then constructs the
* peer from the style and size through getPeerFromToolkit().
diff --git a/libjava/classpath/java/awt/Toolkit.java b/libjava/classpath/java/awt/Toolkit.java
index 305402e9541..b12e9e10dc0 100644
--- a/libjava/classpath/java/awt/Toolkit.java
+++ b/libjava/classpath/java/awt/Toolkit.java
@@ -1287,6 +1287,12 @@ public abstract class Toolkit
public abstract Map
mapInputMethodHighlight(InputMethodHighlight highlight);
+ public abstract boolean isModalExclusionTypeSupported
+ (Dialog.ModalExclusionType modalExclusionType);
+
+ public abstract boolean isModalityTypeSupported
+ (Dialog.ModalityType modalityType);
+
/**
* Initializes the accessibility framework. In particular, this loads the
* properties javax.accessibility.screen_magnifier_present and
diff --git a/libjava/classpath/java/awt/event/MouseEvent.java b/libjava/classpath/java/awt/event/MouseEvent.java
index f2bcfbcc65f..ad777e8f433 100644
--- a/libjava/classpath/java/awt/event/MouseEvent.java
+++ b/libjava/classpath/java/awt/event/MouseEvent.java
@@ -163,6 +163,16 @@ public class MouseEvent extends InputEvent
*/
private int y;
+ /**
+ * The screen position of that mouse event, X coordinate.
+ */
+ private int absX;
+
+ /**
+ * The screen position of that mouse event, Y coordinate.
+ */
+ private int absY;
+
/**
* The number of clicks that took place. For MOUSE_CLICKED, MOUSE_PRESSED,
* and MOUSE_RELEASED, this will be at least 1; otherwise it is 0.
@@ -212,6 +222,7 @@ public class MouseEvent extends InputEvent
int button)
{
super(source, id, when, modifiers);
+
this.x = x;
this.y = y;
this.clickCount = clickCount;
@@ -234,6 +245,13 @@ public class MouseEvent extends InputEvent
this.modifiersEx &= ~(BUTTON1_DOWN_MASK
| BUTTON2_DOWN_MASK
| BUTTON3_DOWN_MASK);
+
+ if (source != null)
+ {
+ Point screenLoc = source.getLocationOnScreen();
+ absX = screenLoc.x + x;
+ absY = screenLoc.y + y;
+ }
}
/**
@@ -257,6 +275,59 @@ public class MouseEvent extends InputEvent
NOBUTTON);
}
+ /**
+ * Creates a new MouseEvent. This is like the other constructors and adds
+ * specific absolute coordinates.
+ *
+ * @param source the source of the event
+ * @param id the event id
+ * @param when the timestamp of when the event occurred
+ * @param modifiers the modifier keys during the event, in old or new style
+ * @param x the X coordinate of the mouse point
+ * @param y the Y coordinate of the mouse point
+ * @param absX the absolute X screen coordinate of this event
+ * @param absY the absolute Y screen coordinate of this event
+ * @param clickCount the number of mouse clicks for this event
+ * @param popupTrigger true if this event triggers a popup menu
+ * @param button the most recent mouse button to change state
+ *
+ * @throws IllegalArgumentException if source is null or button is invalid
+ *
+ * @since 1.6
+ */
+ public MouseEvent(Component source, int id, long when, int modifiers,
+ int x, int y, int absX, int absY, int clickCount,
+ boolean popupTrigger, int button)
+ {
+ super(source, id, when, modifiers);
+
+ this.x = x;
+ this.y = y;
+ this.clickCount = clickCount;
+ this.popupTrigger = popupTrigger;
+ this.button = button;
+ if (button < NOBUTTON || button > BUTTON3)
+ throw new IllegalArgumentException();
+ if ((modifiers & EventModifier.OLD_MASK) != 0)
+ {
+ if ((modifiers & BUTTON1_MASK) != 0)
+ this.button = BUTTON1;
+ else if ((modifiers & BUTTON2_MASK) != 0)
+ this.button = BUTTON2;
+ else if ((modifiers & BUTTON3_MASK) != 0)
+ this.button = BUTTON3;
+ }
+ // clear the mouse button modifier masks if this is a button
+ // release event.
+ if (id == MOUSE_RELEASED)
+ this.modifiersEx &= ~(BUTTON1_DOWN_MASK
+ | BUTTON2_DOWN_MASK
+ | BUTTON3_DOWN_MASK);
+
+ this.absX = absX;
+ this.absY = absY;
+ }
+
/**
* This method returns the X coordinate of the mouse position. This is
* relative to the source component.
@@ -279,6 +350,30 @@ public class MouseEvent extends InputEvent
return y;
}
+ /**
+ * @since 1.6
+ */
+ public Point getLocationOnScreen()
+ {
+ return new Point(absX, absY);
+ }
+
+ /**
+ * @since 1.6
+ */
+ public int getXOnScreen()
+ {
+ return absX;
+ }
+
+ /**
+ * @since 1.6
+ */
+ public int getYOnScreen()
+ {
+ return absY;
+ }
+
/**
* This method returns a Point
for the x,y position of
* the mouse pointer. This is relative to the source component.
diff --git a/libjava/classpath/java/awt/peer/ComponentPeer.java b/libjava/classpath/java/awt/peer/ComponentPeer.java
index bc6e3a457f3..b498ddf664e 100644
--- a/libjava/classpath/java/awt/peer/ComponentPeer.java
+++ b/libjava/classpath/java/awt/peer/ComponentPeer.java
@@ -59,6 +59,8 @@ import java.awt.image.ImageObserver;
import java.awt.image.ImageProducer;
import java.awt.image.VolatileImage;
+import sun.awt.CausedFocusEvent;
+
/**
* Defines the methods that a component peer is required to implement.
*/
@@ -264,7 +266,7 @@ public interface ComponentPeer
/**
* Requests that this component receives the focus. This is called from
* {@link Component#requestFocus()}.
- *
+ *
* @specnote Part of the earlier 1.1 API, apparently replaced by argument
* form of the same method.
*/
@@ -518,4 +520,13 @@ public interface ComponentPeer
* @since 1.5
*/
void layout();
+
+
+ /**
+ * Requests the focus on the component.
+ */
+ boolean requestFocus(Component lightweightChild, boolean temporary,
+ boolean focusedWindowChangeAllowed, long time,
+ CausedFocusEvent.Cause cause);
+
}
diff --git a/libjava/classpath/java/awt/peer/FramePeer.java b/libjava/classpath/java/awt/peer/FramePeer.java
index 13435f8e4c5..929791489ac 100644
--- a/libjava/classpath/java/awt/peer/FramePeer.java
+++ b/libjava/classpath/java/awt/peer/FramePeer.java
@@ -71,5 +71,8 @@ public interface FramePeer extends WindowPeer
* @since 1.5
*/
void setBoundsPrivate(int x, int y, int width, int height);
+
+ Rectangle getBoundsPrivate();
+
} // interface FramePeer
diff --git a/libjava/classpath/java/awt/peer/RobotPeer.java b/libjava/classpath/java/awt/peer/RobotPeer.java
index db81c809d72..a11bfc7343d 100644
--- a/libjava/classpath/java/awt/peer/RobotPeer.java
+++ b/libjava/classpath/java/awt/peer/RobotPeer.java
@@ -50,5 +50,7 @@ public interface RobotPeer
void keyRelease (int keycode);
int getRGBPixel (int x, int y);
int[] getRGBPixels (Rectangle screen);
+ void dispose();
+
} // interface RobotPeer
diff --git a/libjava/classpath/java/awt/peer/WindowPeer.java b/libjava/classpath/java/awt/peer/WindowPeer.java
index 00d1035791a..e8b7d72015b 100644
--- a/libjava/classpath/java/awt/peer/WindowPeer.java
+++ b/libjava/classpath/java/awt/peer/WindowPeer.java
@@ -38,6 +38,8 @@ exception statement from your version. */
package java.awt.peer;
+import java.awt.Dialog;
+
public interface WindowPeer extends ContainerPeer
{
void toBack();
@@ -57,5 +59,12 @@ public interface WindowPeer extends ContainerPeer
* @since 1.5
*/
boolean requestWindowFocus();
+
+ void setAlwaysOnTop(boolean alwaysOnTop);
+ void updateFocusableWindowState();
+ void setModalBlocked(Dialog blocker, boolean blocked);
+ void updateMinimumSize();
+ void updateIconImages();
+
} // interface WindowPeer
diff --git a/libjava/classpath/java/io/ObjectStreamClass.java b/libjava/classpath/java/io/ObjectStreamClass.java
index cc3d0a9e31f..1f3ba73dc99 100644
--- a/libjava/classpath/java/io/ObjectStreamClass.java
+++ b/libjava/classpath/java/io/ObjectStreamClass.java
@@ -799,6 +799,14 @@ outer:
result = cache.longValue();
else
{
+ // Note that we can't use Class.isEnum() here, because that returns
+ // false for java.lang.Enum and enum value sub classes.
+ if (Enum.class.isAssignableFrom(cl) || Proxy.isProxyClass(cl))
+ {
+ // Spec says that enums and dynamic proxies have
+ // a serialVersionUID of 0L.
+ return 0L;
+ }
try
{
result = getClassUIDFromField(cl);
diff --git a/libjava/classpath/java/lang/Float.java b/libjava/classpath/java/lang/Float.java
index 1e85922be72..dc39ec2af20 100644
--- a/libjava/classpath/java/lang/Float.java
+++ b/libjava/classpath/java/lang/Float.java
@@ -181,7 +181,7 @@ public final class Float extends Number implements Comparable
*/
public static String toString(float f)
{
- return VMDouble.toString(f, true);
+ return VMFloat.toString(f);
}
/**
@@ -331,9 +331,9 @@ public final class Float extends Number implements Comparable
*
* @param str the String
to convert
* @return the float
value of s
- * @throws NumberFormatException if s
cannot be parsed as a
+ * @throws NumberFormatException if str
cannot be parsed as a
* float
- * @throws NullPointerException if s
is null
+ * @throws NullPointerException if str
is null
* @see #MIN_VALUE
* @see #MAX_VALUE
* @see #POSITIVE_INFINITY
@@ -342,9 +342,7 @@ public final class Float extends Number implements Comparable
*/
public static float parseFloat(String str)
{
- // XXX Rounding parseDouble() causes some errors greater than 1 ulp from
- // the infinitely precise decimal.
- return (float) Double.parseDouble(str);
+ return VMFloat.parseFloat(str);
}
/**
diff --git a/libjava/classpath/java/lang/Integer.java b/libjava/classpath/java/lang/Integer.java
index e38eb53edd3..62907ff7753 100644
--- a/libjava/classpath/java/lang/Integer.java
+++ b/libjava/classpath/java/lang/Integer.java
@@ -705,10 +705,13 @@ public final class Integer extends Number implements Comparable
if (len == 0)
throw new NumberFormatException("string length is null");
int ch = str.charAt(index);
- if (ch == '-')
+ if (ch == '-' || ch == '+')
{
if (len == 1)
- throw new NumberFormatException("pure '-'");
+ if (ch == '-')
+ throw new NumberFormatException("pure '-'");
+ else if (ch == '+')
+ throw new NumberFormatException("pure '+'");
isNeg = true;
ch = str.charAt(++index);
}
diff --git a/libjava/classpath/java/lang/reflect/Array.java b/libjava/classpath/java/lang/reflect/Array.java
index 373bf204c8e..fee9f0172ee 100644
--- a/libjava/classpath/java/lang/reflect/Array.java
+++ b/libjava/classpath/java/lang/reflect/Array.java
@@ -147,8 +147,7 @@ public final class Array
{
if (dimensions.length <= 0)
throw new IllegalArgumentException ("Empty dimensions array.");
- return createMultiArray(componentType, dimensions,
- dimensions.length - 1);
+ return createMultiArray(componentType, dimensions, 0);
}
/**
@@ -638,10 +637,10 @@ public final class Array
private static Object createMultiArray(Class type, int[] dimensions,
int index)
{
- if (index == 0)
- return newInstance(type, dimensions[0]);
+ if (index == dimensions.length - 1)
+ return newInstance(type, dimensions[index]);
- Object toAdd = createMultiArray(type, dimensions, index - 1);
+ Object toAdd = createMultiArray(type, dimensions, index + 1);
Class thisType = toAdd.getClass();
Object[] retval
= (Object[]) VMArray.createObjectArray(thisType, dimensions[index]);
@@ -649,7 +648,7 @@ public final class Array
retval[0] = toAdd;
int i = dimensions[index];
while (--i > 0)
- retval[i] = createMultiArray(type, dimensions, index - 1);
+ retval[i] = createMultiArray(type, dimensions, index + 1);
return retval;
}
diff --git a/libjava/classpath/java/net/URLClassLoader.java b/libjava/classpath/java/net/URLClassLoader.java
index 6df2818c5c9..346f51c5dfa 100644
--- a/libjava/classpath/java/net/URLClassLoader.java
+++ b/libjava/classpath/java/net/URLClassLoader.java
@@ -262,10 +262,9 @@ public class URLClassLoader extends SecureClassLoader
super(parent);
this.securityContext = null;
this.factory = factory;
- addURLs(urls);
-
- // If this factory is still not in factoryCache, add it.
+ // If this factory is not yet in factoryCache, add it.
factoryCache.add(factory);
+ addURLs(urls);
}
// Methods
@@ -624,10 +623,7 @@ public class URLClassLoader extends SecureClassLoader
}
catch (IOException ioe)
{
- ClassNotFoundException cnfe;
- cnfe = new ClassNotFoundException(className + " not found in " + this);
- cnfe.initCause(ioe);
- throw cnfe;
+ throw new ClassNotFoundException(className + " not found in " + this, ioe);
}
}
diff --git a/libjava/classpath/java/nio/Buffer.java b/libjava/classpath/java/nio/Buffer.java
index 2c7e00dcb6e..c2569eea975 100644
--- a/libjava/classpath/java/nio/Buffer.java
+++ b/libjava/classpath/java/nio/Buffer.java
@@ -358,4 +358,65 @@ public abstract class Buffer
(arraylength < length + offset))
throw new IndexOutOfBoundsException ();
}
+
+ /**
+ * Returns the backing array of this buffer, if this buffer has one.
+ * Modification to the array are directly visible in this buffer and vice
+ * versa.
+ *
+ *
+ * If this is a read-only buffer, then a {@link ReadOnlyBufferException} is
+ * thrown because exposing the array would allow to circumvent the read-only
+ * property. If this buffer doesn't have an array, then an
+ * {@link UnsupportedOperationException} is thrown. Applications should check
+ * if this buffer supports a backing array by calling {@link #hasArray}
+ * first.
+ *
+ * @return the backing array of this buffer
+ *
+ * @throws ReadOnlyBufferException when this buffer is read only
+ * @throws UnsupportedOperationException when this buffer does not provide
+ * a backing array
+ *
+ * @since 1.6
+ */
+ public abstract Object array();
+
+ /**
+ * Returns true
if this buffer can provide a backing array,
+ * false
otherwise. When true
, application code
+ * can call {@link #array()} to access this backing array.
+ *
+ * @return true
if this buffer can provide a backing array,
+ * false
otherwise
+ *
+ * @since 1.6
+ */
+ public abstract boolean hasArray();
+
+ /**
+ * For buffers that are backed by a Java array, this returns the offset
+ * into that array at which the buffer content starts.
+ *
+ * @return the offset into the backing array at which the buffer content
+ * starts
+ * @throws ReadOnlyBufferException when this buffer is read only
+ * @throws UnsupportedOperationException when this buffer does not provide
+ * a backing array
+ *
+ * @since 1.6
+ */
+ public abstract int arrayOffset();
+
+ /**
+ * Returns true
when this buffer is direct, false
+ * otherwise. A direct buffer is usually backed by a raw memory area instead
+ * of a Java array.
+ *
+ * @return true
when this buffer is direct, false
+ * otherwise
+ *
+ * @since 1.6
+ */
+ public abstract boolean isDirect();
}
diff --git a/libjava/classpath/java/nio/CharBuffer.java b/libjava/classpath/java/nio/CharBuffer.java
index 34f429f62f7..2feada4c817 100644
--- a/libjava/classpath/java/nio/CharBuffer.java
+++ b/libjava/classpath/java/nio/CharBuffer.java
@@ -107,20 +107,7 @@ public abstract class CharBuffer extends Buffer
*/
public static final CharBuffer wrap(CharSequence seq, int start, int end)
{
- // FIXME: implement better handling of java.lang.String.
- // Probably share data with String via reflection.
-
- int len = end - start;
-
- if( len < 0 )
- throw new IndexOutOfBoundsException();
-
- char[] buffer = new char[len];
-
- for (int i = 0; i < len; i++)
- buffer[i] = seq.charAt(i + start);
-
- return wrap(buffer, 0, len).asReadOnlyBuffer();
+ return new CharSequenceBuffer(seq, start, end);
}
/**
diff --git a/libjava/classpath/java/nio/CharSequenceBuffer.java b/libjava/classpath/java/nio/CharSequenceBuffer.java
new file mode 100644
index 00000000000..26aad1c38ac
--- /dev/null
+++ b/libjava/classpath/java/nio/CharSequenceBuffer.java
@@ -0,0 +1,208 @@
+/* CharBuffer.java --
+ Copyright (C) 2007 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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 for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package java.nio;
+
+/**
+ * A CharBuffer that wraps a {@link CharSequence}.
+ */
+final class CharSequenceBuffer
+ extends CharBuffer
+{
+
+ /**
+ * The wrapped char sequence.
+ */
+ private CharSequence charSequence;
+
+ /**
+ * Creates a new CharSequenceBuffer.
+ *
+ * @param charSeq the CharSequence to wrap
+ * @param capacity the capacity
+ * @param limit the limit
+ * @param position the position
+ * @param mark the mark
+ * @param offs the offset
+ */
+ CharSequenceBuffer(CharSequence charSeq, int capacity, int limit,
+ int position, int mark, int offs)
+ {
+ super(capacity, limit, position, mark);
+ charSequence = charSeq;
+ array_offset = offs;
+ }
+
+ /**
+ * Creates a new instance of CharSequenceBuffer, wrapping the specified
+ * {@link CharSequence}.
+ *
+ * @param charSeq the char sequence to wrap
+ * @param start the start index in the char sequence
+ * @param end the end index in the char sequence
+ */
+ CharSequenceBuffer(CharSequence charSeq, int start, int end)
+ {
+ this(charSeq, charSeq.length(), end, start, -1, 0);
+ }
+
+ /**
+ * Returns a read-only view of this buffer.
+ */
+ public CharBuffer asReadOnlyBuffer()
+ {
+ return duplicate();
+ }
+
+ /**
+ * This buffer class is not writable by definition and thus throws
+ * a ReadOnlyBufferException here.
+ */
+ public CharBuffer compact()
+ {
+ throw new ReadOnlyBufferException();
+ }
+
+ /**
+ * Returns a duplicate of this buffer.
+ *
+ * @return a duplicate of this buffer
+ */
+ public CharBuffer duplicate()
+ {
+ return new CharSequenceBuffer(charSequence, cap, limit, pos, mark, 0);
+ }
+
+ /**
+ * Returns the character at the current position.
+ *
+ * @return the character at the current position
+ */
+ public char get()
+ {
+ if (pos >= limit)
+ throw new BufferUnderflowException();
+
+ return charSequence.charAt(array_offset + pos++);
+ }
+
+ /**
+ * Returns the character at the specified position.
+ *
+ * @return the character at the specified position
+ */
+ public char get(int index)
+ {
+ if (index < 0 || index >= limit)
+ throw new IndexOutOfBoundsException();
+
+ return charSequence.charAt(array_offset + index);
+ }
+
+ /**
+ * Cannot be direct, return false
here.
+ *
+ * @return false
+ */
+ public boolean isDirect()
+ {
+ return false;
+ }
+
+ /**
+ * Returns the byte order of this buffer. This is always the native byte
+ * order.
+ *
+ * @return the byte order of this buffer
+ */
+ public ByteOrder order()
+ {
+ return ByteOrder.nativeOrder();
+ }
+
+ /**
+ * This buffer class is not writable by definition and thus throws
+ * a ReadOnlyBufferException here.
+ */
+ public CharBuffer put(char b)
+ {
+ throw new ReadOnlyBufferException();
+ }
+
+ /**
+ * This buffer class is not writable by definition and thus throws
+ * a ReadOnlyBufferException here.
+ */
+ public CharBuffer put(int index, char b)
+ {
+ throw new ReadOnlyBufferException();
+ }
+
+ /**
+ * Returns a slice of this buffer, exposing the current position and limit.
+ */
+ public CharBuffer slice()
+ {
+ int newCapacity = limit - pos;
+ return new CharSequenceBuffer(charSequence, newCapacity, newCapacity, 0,
+ -1, pos);
+ }
+
+ /**
+ * Returns a sub sequence from the specified start index and with the
+ * specified length.
+ *
+ * @param start the start index
+ * @param length the length of the sub sequence
+ */
+ public CharSequence subSequence(int start, int length)
+ {
+ int begin = array_offset + start + pos;
+ return charSequence.subSequence(begin, begin + length);
+ }
+
+ /**
+ * This kind of CharBuffer is read-only, so we return true
+ * here.
+ */
+ public boolean isReadOnly()
+ {
+ return true;
+ }
+
+}
diff --git a/libjava/classpath/java/nio/CharViewBufferImpl.java b/libjava/classpath/java/nio/CharViewBufferImpl.java
index 31983154461..33bbac8b000 100644
--- a/libjava/classpath/java/nio/CharViewBufferImpl.java
+++ b/libjava/classpath/java/nio/CharViewBufferImpl.java
@@ -133,7 +133,7 @@ class CharViewBufferImpl extends CharBuffer
public CharBuffer slice ()
{
// Create a sliced copy of this object that shares its content.
- return new CharViewBufferImpl (bb, (position () >> 1) + offset,
+ return new CharViewBufferImpl (bb, (position () << 1) + offset,
remaining (), remaining (), 0, -1,
isReadOnly (), endian);
}
diff --git a/libjava/classpath/java/nio/DoubleViewBufferImpl.java b/libjava/classpath/java/nio/DoubleViewBufferImpl.java
index e860f2f808d..d1399154a71 100644
--- a/libjava/classpath/java/nio/DoubleViewBufferImpl.java
+++ b/libjava/classpath/java/nio/DoubleViewBufferImpl.java
@@ -130,7 +130,7 @@ final class DoubleViewBufferImpl extends DoubleBuffer
public DoubleBuffer slice ()
{
- return new DoubleViewBufferImpl (bb, (position () >> 3) + offset,
+ return new DoubleViewBufferImpl (bb, (position () << 3) + offset,
remaining(), remaining(), 0, -1,
readOnly, endian);
}
diff --git a/libjava/classpath/java/nio/FloatViewBufferImpl.java b/libjava/classpath/java/nio/FloatViewBufferImpl.java
index 55770d52a29..8bb342d103d 100644
--- a/libjava/classpath/java/nio/FloatViewBufferImpl.java
+++ b/libjava/classpath/java/nio/FloatViewBufferImpl.java
@@ -131,7 +131,7 @@ final class FloatViewBufferImpl extends FloatBuffer
public FloatBuffer slice ()
{
// Create a sliced copy of this object that shares its content.
- return new FloatViewBufferImpl (bb, (position () >> 2) + offset,
+ return new FloatViewBufferImpl (bb, (position () << 2) + offset,
remaining(), remaining(), 0, -1,
readOnly, endian);
}
diff --git a/libjava/classpath/java/nio/IntViewBufferImpl.java b/libjava/classpath/java/nio/IntViewBufferImpl.java
index d0b0057c117..cd8307f3ebd 100644
--- a/libjava/classpath/java/nio/IntViewBufferImpl.java
+++ b/libjava/classpath/java/nio/IntViewBufferImpl.java
@@ -131,7 +131,7 @@ final class IntViewBufferImpl extends IntBuffer
public IntBuffer slice ()
{
// Create a sliced copy of this object that shares its content.
- return new IntViewBufferImpl (bb, (position () >> 2) + offset,
+ return new IntViewBufferImpl (bb, (position () << 2) + offset,
remaining(), remaining(), 0, -1,
readOnly, endian);
}
diff --git a/libjava/classpath/java/nio/LongViewBufferImpl.java b/libjava/classpath/java/nio/LongViewBufferImpl.java
index 9c3452ae809..eefbcbdc8dd 100644
--- a/libjava/classpath/java/nio/LongViewBufferImpl.java
+++ b/libjava/classpath/java/nio/LongViewBufferImpl.java
@@ -131,7 +131,7 @@ final class LongViewBufferImpl extends LongBuffer
public LongBuffer slice ()
{
// Create a sliced copy of this object that shares its content.
- return new LongViewBufferImpl (bb, (position () >> 3) + offset,
+ return new LongViewBufferImpl (bb, (position () << 3) + offset,
remaining(), remaining(), 0, -1,
readOnly, endian);
}
diff --git a/libjava/classpath/java/nio/ShortViewBufferImpl.java b/libjava/classpath/java/nio/ShortViewBufferImpl.java
index cdd559522ff..df7133612d2 100644
--- a/libjava/classpath/java/nio/ShortViewBufferImpl.java
+++ b/libjava/classpath/java/nio/ShortViewBufferImpl.java
@@ -131,7 +131,7 @@ final class ShortViewBufferImpl extends ShortBuffer
public ShortBuffer slice ()
{
// Create a sliced copy of this object that shares its content.
- return new ShortViewBufferImpl (bb, (position () >> 1) + offset,
+ return new ShortViewBufferImpl (bb, (position () << 1) + offset,
remaining(), remaining(), 0, -1,
readOnly, endian);
}
diff --git a/libjava/classpath/java/rmi/MarshalledObject.java b/libjava/classpath/java/rmi/MarshalledObject.java
index e1a30f5f005..180c0a9be29 100644
--- a/libjava/classpath/java/rmi/MarshalledObject.java
+++ b/libjava/classpath/java/rmi/MarshalledObject.java
@@ -58,7 +58,7 @@ import java.io.Serializable;
*
* @author unknown
*/
-public final class MarshalledObject
+public final class MarshalledObject
implements Serializable
{
// The following fields are from Java API Documentation "Serialized form"
@@ -74,7 +74,7 @@ public final class MarshalledObject
* @param obj the object to marshal
* @throws IOException if an I/O error during serialization occurs.
*/
- public MarshalledObject(Object obj) throws IOException
+ public MarshalledObject(T obj) throws IOException
{
ByteArrayOutputStream objStream = new ByteArrayOutputStream();
RMIMarshalledObjectOutputStream stream =
@@ -136,14 +136,14 @@ public final class MarshalledObject
* @throws ClassNotFoundException if the class of the deserialized object
* cannot be found.
*/
- public Object get() throws IOException, ClassNotFoundException
+ public T get() throws IOException, ClassNotFoundException
{
if (objBytes == null)
return null;
RMIMarshalledObjectInputStream stream =
new RMIMarshalledObjectInputStream(objBytes, locBytes);
- return stream.readObject();
+ return (T) stream.readObject();
}
public int hashCode()
diff --git a/libjava/classpath/java/rmi/activation/Activatable.java b/libjava/classpath/java/rmi/activation/Activatable.java
index 472c65c1110..0f201cacf63 100644
--- a/libjava/classpath/java/rmi/activation/Activatable.java
+++ b/libjava/classpath/java/rmi/activation/Activatable.java
@@ -103,7 +103,7 @@ public abstract class Activatable
* @throws ActivationException if the activation failed
* @throws RemoteException if the remote call failed.
*/
- protected Activatable(String codebase, MarshalledObject data,
+ protected Activatable(String codebase, MarshalledObject> data,
boolean restart, int port) throws ActivationException,
RemoteException
{
@@ -133,7 +133,7 @@ public abstract class Activatable
* @throws ActivationException if the activation failed
* @throws RemoteException if the remote call failed.
*/
- protected Activatable(String codebase, MarshalledObject data,
+ protected Activatable(String codebase, MarshalledObject> data,
boolean restart, int port, RMIClientSocketFactory csf,
RMIServerSocketFactory ssf) throws ActivationException,
RemoteException
@@ -314,7 +314,7 @@ public abstract class Activatable
* @throws RemoteException if the registration or export fails
*/
public static ActivationID exportObject(Remote obj, String location,
- MarshalledObject data,
+ MarshalledObject> data,
boolean restart, int port)
throws ActivationException, RemoteException
{
diff --git a/libjava/classpath/java/rmi/activation/ActivationDesc.java b/libjava/classpath/java/rmi/activation/ActivationDesc.java
index b8616562fa5..ae2b78eca8e 100644
--- a/libjava/classpath/java/rmi/activation/ActivationDesc.java
+++ b/libjava/classpath/java/rmi/activation/ActivationDesc.java
@@ -80,7 +80,7 @@ public final class ActivationDesc
/**
* The object specific intitalization data.
*/
- private MarshalledObject data;
+ private MarshalledObject> data;
/**
* The start mode.
@@ -95,7 +95,7 @@ public final class ActivationDesc
* @param location the code base URL
* @param data the object initialization data, contained in a marshalled form
*/
- public ActivationDesc(String className, String location, MarshalledObject data)
+ public ActivationDesc(String className, String location, MarshalledObject> data)
throws ActivationException
{
this(ActivationGroup.currentGroupID(), className, location, data, false);
@@ -115,7 +115,7 @@ public final class ActivationDesc
* object is normally activated on demand).
*/
public ActivationDesc(String className, String location,
- MarshalledObject data, boolean restart)
+ MarshalledObject> data, boolean restart)
throws ActivationException
{
this(ActivationGroup.currentGroupID(), className, location, data, restart);
@@ -131,7 +131,7 @@ public final class ActivationDesc
* @param data the object initialization data, contained in a marshalled form
*/
public ActivationDesc(ActivationGroupID groupID, String className,
- String location, MarshalledObject data)
+ String location, MarshalledObject> data)
{
this(groupID, className, location, data, false);
}
@@ -150,7 +150,7 @@ public final class ActivationDesc
* object is normally activated on demand).
*/
public ActivationDesc(ActivationGroupID groupID, String className,
- String location, MarshalledObject data, boolean restart)
+ String location, MarshalledObject> data, boolean restart)
{
this.groupid = groupID;
this.classname = className;
@@ -184,7 +184,7 @@ public final class ActivationDesc
return location;
}
- public MarshalledObject getData()
+ public MarshalledObject> getData()
{
return data;
}
diff --git a/libjava/classpath/java/rmi/activation/ActivationGroup.java b/libjava/classpath/java/rmi/activation/ActivationGroup.java
index 5e7bbd20998..ad5a05d01a9 100644
--- a/libjava/classpath/java/rmi/activation/ActivationGroup.java
+++ b/libjava/classpath/java/rmi/activation/ActivationGroup.java
@@ -314,7 +314,8 @@ public abstract class ActivationGroup
* @throws UnknownObjectException if such object is not registered
* @throws RemoteException on remote call (to monitor) error
*/
- protected void activeObject(ActivationID id, MarshalledObject mObject)
+ protected void activeObject(ActivationID id,
+ MarshalledObject extends Remote> mObject)
throws ActivationException, UnknownObjectException, RemoteException
{
if (monitor!=null)
diff --git a/libjava/classpath/java/rmi/activation/ActivationGroupDesc.java b/libjava/classpath/java/rmi/activation/ActivationGroupDesc.java
index 76ac63b6391..bf7445f17bb 100644
--- a/libjava/classpath/java/rmi/activation/ActivationGroupDesc.java
+++ b/libjava/classpath/java/rmi/activation/ActivationGroupDesc.java
@@ -199,7 +199,7 @@ public final class ActivationGroupDesc
/**
* The group initialization data.
*/
- final MarshalledObject data;
+ final MarshalledObject> data;
/**
* The path to the group jre and the parameters of this jre, may be
@@ -252,7 +252,7 @@ public final class ActivationGroupDesc
* options.
*/
public ActivationGroupDesc(String aClassName, String aLocation,
- MarshalledObject aData, Properties aProperties,
+ MarshalledObject> aData, Properties aProperties,
ActivationGroupDesc.CommandEnvironment environment)
{
className = aClassName;
@@ -288,7 +288,7 @@ public final class ActivationGroupDesc
*
* @return the group intialization data in the marshalled form.
*/
- public MarshalledObject getData()
+ public MarshalledObject> getData()
{
return data;
}
diff --git a/libjava/classpath/java/rmi/activation/ActivationInstantiator.java b/libjava/classpath/java/rmi/activation/ActivationInstantiator.java
index a0f04ed36cd..3f4b557cb91 100644
--- a/libjava/classpath/java/rmi/activation/ActivationInstantiator.java
+++ b/libjava/classpath/java/rmi/activation/ActivationInstantiator.java
@@ -68,6 +68,6 @@ public interface ActivationInstantiator
* @throws ActivationException if the activation fails
* @throws RemoteException if the remote call fails
*/
- MarshalledObject newInstance (ActivationID id, ActivationDesc desc)
+ MarshalledObject extends Remote> newInstance (ActivationID id, ActivationDesc desc)
throws ActivationException, RemoteException;
}
diff --git a/libjava/classpath/java/rmi/activation/ActivationMonitor.java b/libjava/classpath/java/rmi/activation/ActivationMonitor.java
index e9f43ae1a94..93def8c441a 100644
--- a/libjava/classpath/java/rmi/activation/ActivationMonitor.java
+++ b/libjava/classpath/java/rmi/activation/ActivationMonitor.java
@@ -59,7 +59,7 @@ public interface ActivationMonitor extends Remote
* @throws UnknownObjectException is such object is not known in this group
* @throws RemoteException if remote call fails
*/
- void activeObject (ActivationID id, MarshalledObject obj)
+ void activeObject (ActivationID id, MarshalledObject extends Remote> obj)
throws UnknownObjectException, RemoteException;
/**
diff --git a/libjava/classpath/java/rmi/activation/Activator.java b/libjava/classpath/java/rmi/activation/Activator.java
index 57a4d16a723..d0de12d8c97 100644
--- a/libjava/classpath/java/rmi/activation/Activator.java
+++ b/libjava/classpath/java/rmi/activation/Activator.java
@@ -67,6 +67,6 @@ public interface Activator
* @throws ActivationException if the activation has failed due other reason
* @throws RemoteException if the remote call has failed.
*/
- MarshalledObject activate (ActivationID id, boolean force)
+ MarshalledObject extends Remote> activate (ActivationID id, boolean force)
throws ActivationException, UnknownObjectException, RemoteException;
}
diff --git a/libjava/classpath/java/util/Arrays.java b/libjava/classpath/java/util/Arrays.java
index 9443ced5bdd..e5f772778c2 100644
--- a/libjava/classpath/java/util/Arrays.java
+++ b/libjava/classpath/java/util/Arrays.java
@@ -3941,7 +3941,8 @@ public class Arrays
if (from > to)
throw new IllegalArgumentException("The initial index is after " +
"the final index.");
- T[] newArray = (T[]) new Object[to - from];
+ Class elemType = original.getClass().getComponentType();
+ T[] newArray = (T[]) Array.newInstance(elemType, to - from);
if (to > original.length)
{
System.arraycopy(original, from, newArray, 0,
diff --git a/libjava/classpath/java/util/Currency.java b/libjava/classpath/java/util/Currency.java
index a0933eca2f6..b5da13c37f1 100644
--- a/libjava/classpath/java/util/Currency.java
+++ b/libjava/classpath/java/util/Currency.java
@@ -273,6 +273,11 @@ public final class Currency
throw new
NullPointerException("The locale or its country is null.");
}
+
+ /* Check that country of locale given is valid. */
+ if (country.length() != 2)
+ throw new IllegalArgumentException();
+
/* Attempt to get the currency from the cache */
String code = (String) countryMap.get(country);
if (code == null)
diff --git a/libjava/classpath/java/util/EnumMap.java b/libjava/classpath/java/util/EnumMap.java
index 477dff8e0ab..b7187b935f2 100644
--- a/libjava/classpath/java/util/EnumMap.java
+++ b/libjava/classpath/java/util/EnumMap.java
@@ -1,5 +1,5 @@
/* EnumMap.java - Map where keys are enum constants
- Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -140,7 +140,8 @@ public class EnumMap, V>
Enum e = (Enum) key;
if (e.getDeclaringClass() != enumClass)
return null;
- return store[e.ordinal()];
+ V o = store[e.ordinal()];
+ return o == emptySlot ? null : o;
}
public V put(K key, V value)
@@ -387,8 +388,18 @@ public class EnumMap, V>
public EnumMap clone()
{
- /* This constructor provides this functionality */
- return new EnumMap(this);
+ EnumMap result;
+ try
+ {
+ result = (EnumMap) super.clone();
+ }
+ catch (CloneNotSupportedException ignore)
+ {
+ // Can't happen.
+ result = null;
+ }
+ result.store = (V[]) store.clone();
+ return result;
}
}
diff --git a/libjava/classpath/javax/management/ObjectName.java b/libjava/classpath/javax/management/ObjectName.java
index a3f30efffb4..4ea21cdc7ae 100644
--- a/libjava/classpath/javax/management/ObjectName.java
+++ b/libjava/classpath/javax/management/ObjectName.java
@@ -71,7 +71,7 @@ import java.io.ObjectOutputStream;
* is separated by commas, and largely consists of unordered key-value
* pairs, separated by an equals sign ('='). At most one element may
* be an asterisk ('*'), which turns the {@link ObjectName} instance
- * into a property pattern. In this situation, the pattern
+ * into a property list pattern. In this situation, the pattern
* matches a name if the name contains at least those key-value pairs
* given and has the same domain.
*
@@ -89,6 +89,13 @@ import java.io.ObjectOutputStream;
* (after expansion) are considered part of the value.
*
*
+ * Both quoted and unquoted values may contain the wildcard characters
+ * '?' and '*'. A name with at least one value containing a wildcard
+ * character is known as a property value pattern. A
+ * name is generally a property pattern if it is either
+ * a property list pattern or property value pattern.
+ *
+ *
* Spaces are maintained within the different parts of the name. Thus,
* 'domain: key1 = value1
' has a key ' key1 ' with value
* ' value1 '. Newlines are disallowed, except where escaped in quoted
@@ -127,9 +134,14 @@ public class ObjectName
private transient String propertyListString;
/**
- * True if this object name is a property pattern.
+ * True if this object name is a property list pattern.
*/
- private transient boolean propertyPattern;
+ private transient boolean propertyListPattern;
+
+ /**
+ * True if this object name is a property value pattern.
+ */
+ private transient boolean propertyValuePattern;
/**
* The management server associated with this object name.
@@ -202,10 +214,10 @@ public class ObjectName
{
if (pairs[a].equals("*"))
{
- if (propertyPattern)
+ if (propertyListPattern)
throw new MalformedObjectNameException("Multiple wildcards " +
"in properties.");
- propertyPattern = true;
+ propertyListPattern = true;
continue;
}
int sep = pairs[a].indexOf('=');
@@ -291,16 +303,17 @@ public class ObjectName
if (domain.indexOf('\n') != -1)
throw new MalformedObjectNameException("The domain includes a newline " +
"character.");
- char[] chars = new char[] { '\n', ':', ',', '*', '?', '=' };
+ char[] keychars = new char[] { '\n', ':', ',', '*', '?', '=' };
+ char[] valchars = new char[] { '\n', ':', ',', '=' };
Iterator i = properties.entrySet().iterator();
while (i.hasNext())
{
Map.Entry entry = (Map.Entry) i.next();
String key = (String) entry.getKey();
- for (int a = 0; a < chars.length; ++a)
- if (key.indexOf(chars[a]) != -1)
+ for (int a = 0; a < keychars.length; ++a)
+ if (key.indexOf(keychars[a]) != -1)
throw new MalformedObjectNameException("A key contains a '" +
- chars[a] + "' " +
+ keychars[a] + "' " +
"character.");
String value = (String) entry.getValue();
int quote = value.indexOf('"');
@@ -322,12 +335,15 @@ public class ObjectName
"a '\"' character.");
else
{
- for (int a = 0; a < chars.length; ++a)
- if (value.indexOf(chars[a]) != -1)
+ for (int a = 0; a < valchars.length; ++a)
+ if (value.indexOf(valchars[a]) != -1)
throw new MalformedObjectNameException("A value contains " +
- "a '" + chars[a] + "' " +
+ "a '" + valchars[a] + "' " +
"character.");
+
}
+ if (value.indexOf('*') != -1 || value.indexOf('?') != -1)
+ propertyValuePattern = true;
}
}
@@ -690,14 +706,60 @@ public class ObjectName
}
/**
- * Returns true if this object name is a property pattern. This is
- * the case if the list of properties contains an '*'.
+ * Returns true if this object name is a property list
+ * pattern, a property value pattern or both.
*
- * @return true if this is a property pattern.
+ * @return true if the properties of this name contain a pattern.
+ * @see #isPropertyListPattern
+ * @see #isPropertyValuePattern
*/
public boolean isPropertyPattern()
{
- return propertyPattern;
+ return propertyListPattern || propertyValuePattern;
+ }
+
+ /**
+ * Returns true if this object name is a property list pattern. This is
+ * the case if the list of properties contains an '*'.
+ *
+ * @return true if this is a property list pattern.
+ * @since 1.6
+ */
+ public boolean isPropertyListPattern()
+ {
+ return propertyListPattern;
+ }
+
+ /**
+ * Returns true if this object name is a property value pattern. This is
+ * the case if one of the values contains a wildcard character,
+ * '?' or '*'.
+ *
+ * @return true if this is a property value pattern.
+ * @since 1.6
+ */
+ public boolean isPropertyValuePattern()
+ {
+ return propertyValuePattern;
+ }
+
+ /**
+ * Returns true if the value of the given key is a pattern. This is
+ * the case if the value contains a wildcard character, '?' or '*'.
+ *
+ * @param key the key whose value should be checked.
+ * @return true if the value of the given key is a pattern.
+ * @since 1.6
+ * @throws NullPointerException if {@code key} is {@code null}.
+ * @throws IllegalArgumentException if {@code key} is not a valid
+ * property.
+ */
+ public boolean isPropertyValuePattern(String key)
+ {
+ String value = getKeyProperty(key);
+ if (value == null)
+ throw new IllegalArgumentException(key + " is not a valid property.");
+ return value.indexOf('?') != -1 || value.indexOf('*') != -1;
}
/**
diff --git a/libjava/classpath/javax/sound/sampled/AudioFormat.java b/libjava/classpath/javax/sound/sampled/AudioFormat.java
index 6296784426c..7b6ebc4b03b 100644
--- a/libjava/classpath/javax/sound/sampled/AudioFormat.java
+++ b/libjava/classpath/javax/sound/sampled/AudioFormat.java
@@ -330,16 +330,35 @@ public class AudioFormat
public String toString()
{
StringBuffer result = new StringBuffer();
+
+ // usually at least encoding should be somewhat specified
result.append(encoding);
- result.append(" ");
- result.append(sampleRate);
- result.append(" Hz ");
- result.append(sampleSizeInBits);
- result.append(" bits ");
- result.append(channels);
- result.append(" channels");
+
+ if (sampleRate != AudioSystem.NOT_SPECIFIED)
+ {
+ result.append(" ");
+ result.append(sampleRate);
+ result.append(" Hz");
+ }
+
+ if (sampleSizeInBits != AudioSystem.NOT_SPECIFIED)
+ {
+ result.append(" ");
+ result.append(sampleSizeInBits);
+ result.append(" bits");
+ }
+
+ if (channels != AudioSystem.NOT_SPECIFIED)
+ {
+ result.append(" ");
+ result.append(channels);
+ result.append(" channel");
+ if (channels > 1) result.append("s");
+ }
+
if (sampleSizeInBits > 8)
result.append(bigEndian ? " big endian" : " little endian");
+
return result.toString();
}
}
diff --git a/libjava/classpath/javax/sound/sampled/DataLine.java b/libjava/classpath/javax/sound/sampled/DataLine.java
index aa99a046ce4..b7cb70e4931 100644
--- a/libjava/classpath/javax/sound/sampled/DataLine.java
+++ b/libjava/classpath/javax/sound/sampled/DataLine.java
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2005 Free Software Foundation, Inc.
+ Copyright (C) 2005-2007 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -35,7 +35,6 @@ this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
-
package javax.sound.sampled;
/**
@@ -138,10 +137,10 @@ public interface DataLine extends Line
public boolean isFormatSupported(AudioFormat fmt)
{
for (int i = 0; i < formats.length; ++i)
- {
- if (fmt.matches(formats[i]))
- return true;
- }
+ {
+ if (fmt.matches(formats[i]))
+ return true;
+ }
return false;
}
@@ -151,25 +150,28 @@ public interface DataLine extends Line
public boolean matches(Line.Info o)
{
if (! super.matches(o) || ! (o instanceof Info))
- return false;
+ return false;
+
Info other = (Info) o;
- if (minBufferSize < other.minBufferSize
- || maxBufferSize > other.maxBufferSize)
- return false;
+ if (minBufferSize < other.minBufferSize ||
+ maxBufferSize > other.maxBufferSize)
+ return false;
+
for (int i = 0; i < formats.length; ++i)
- {
- boolean ok = false;
- for (int j = 0; j < other.formats.length; ++j)
- {
- if (formats[i].matches(other.formats[j]))
- {
- ok = true;
- break;
- }
- }
- if (! ok)
- return false;
- }
+ {
+ boolean ok = false;
+ for (int j = 0; j < other.formats.length; ++j)
+ {
+ if (formats[i].matches(other.formats[j]))
+ {
+ ok = true;
+ break;
+ }
+ }
+ if (! ok)
+ return false;
+ }
+
return true;
}
@@ -181,18 +183,20 @@ public interface DataLine extends Line
StringBuffer result = new StringBuffer();
result.append("formats: [");
for (int i = 0; i < formats.length; ++i)
- {
- if (i > 0)
- result.append(", ");
- result.append(formats[i].toString());
- }
+ {
+ if (i > 0)
+ result.append(", ");
+ result.append(formats[i].toString());
+ }
+
result.append("]; minBufferSize: ");
result.append(minBufferSize);
result.append("; maxBufferSize: ");
result.append(maxBufferSize);
return result.toString();
}
- }
+
+ } // end class: Info
/**
* Return the number of bytes currently available on this DataLine.
diff --git a/libjava/classpath/javax/sound/sampled/spi/MixerProvider.java b/libjava/classpath/javax/sound/sampled/spi/MixerProvider.java
index 1ae7b3bb7d8..72b972497e1 100644
--- a/libjava/classpath/javax/sound/sampled/spi/MixerProvider.java
+++ b/libjava/classpath/javax/sound/sampled/spi/MixerProvider.java
@@ -78,8 +78,8 @@ public abstract class MixerProvider
Mixer.Info[] infos = getMixerInfo();
for (int i = 0; i < infos.length; ++i)
{
- if (info.equals(infos[i]))
- return true;
+ if (info.equals(infos[i]))
+ return true;
}
return false;
}
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicProgressBarUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicProgressBarUI.java
index df4c3aebdfd..12bbe013c5e 100644
--- a/libjava/classpath/javax/swing/plaf/basic/BasicProgressBarUI.java
+++ b/libjava/classpath/javax/swing/plaf/basic/BasicProgressBarUI.java
@@ -600,8 +600,13 @@ public class BasicProgressBarUI extends ProgressBarUI
int y, int width, int height)
{
Rectangle tr = new Rectangle();
- Rectangle vr = new Rectangle(x, y, width, height);
+ Rectangle vr = new Rectangle();
Rectangle ir = new Rectangle();
+
+ if (progressBar.getOrientation() == JProgressBar.HORIZONTAL)
+ vr.setBounds(x, y, width, height);
+ else
+ vr.setBounds(y, x, height, width);
Font f = g.getFont();
FontMetrics fm = g.getFontMetrics(f);
@@ -611,7 +616,11 @@ public class BasicProgressBarUI extends ProgressBarUI
SwingConstants.CENTER,
SwingConstants.CENTER,
SwingConstants.CENTER, vr, ir, tr, 0);
- return new Point(tr.x, tr.y);
+
+ if (progressBar.getOrientation() == JProgressBar.HORIZONTAL)
+ return new Point(tr.x, tr.y);
+ else
+ return new Point(tr.y, tr.x);
}
/**
@@ -741,14 +750,19 @@ public class BasicProgressBarUI extends ProgressBarUI
{
AffineTransform rotate = AffineTransform.getRotateInstance(Math.PI / 2);
g.setFont(progressBar.getFont().deriveFont(rotate));
+ placement.x = width - placement.x - fm.getAscent();
+ }
+ else
+ {
+ placement.y += fm.getAscent();
}
g.setColor(getSelectionForeground());
g.setClip(0, 0, full + b.left, height);
- g.drawString(str, placement.x, placement.y + fm.getAscent());
+ g.drawString(str, placement.x, placement.y);
g.setColor(getSelectionBackground());
g.setClip(full + b.left, 0, width - full, height);
- g.drawString(str, placement.x, placement.y + fm.getAscent());
+ g.drawString(str, placement.x, placement.y);
g.setClip(savedClip);
g.setColor(savedColor);
}
diff --git a/libjava/classpath/javax/swing/text/html/parser/AttributeList.java b/libjava/classpath/javax/swing/text/html/parser/AttributeList.java
index d48266d4730..a943f056de1 100644
--- a/libjava/classpath/javax/swing/text/html/parser/AttributeList.java
+++ b/libjava/classpath/javax/swing/text/html/parser/AttributeList.java
@@ -253,7 +253,7 @@ public final class AttributeList
*/
public Enumeration> getValues()
{
- return values.elements();
+ return (values != null) ? values.elements() : null;
}
/**
diff --git a/libjava/classpath/lib/Makefile.am b/libjava/classpath/lib/Makefile.am
index 3f2de4187c8..f2089f243d6 100644
--- a/libjava/classpath/lib/Makefile.am
+++ b/libjava/classpath/lib/Makefile.am
@@ -5,13 +5,6 @@ JAVA_DEPEND = java.dep
## this file and restart the make process again
sinclude $(JAVA_DEPEND)
-propertyfiles := $(shell cd $(top_srcdir)/resource && $(FIND) gnu java javax org -name \*\.properties -print)
-cssfiles := $(shell cd $(top_srcdir) && $(FIND) gnu java javax org -name \*\.css -print)
-## GCJ LOCAL: prune .svn directories
-metafiles := $(shell cd $(top_srcdir)/resource && $(FIND) META-INF -name CVS -prune -o -name \*\.in -prune -o -type f -print | fgrep -v .svn)
-## END GCJ LOCAL
-iconfiles := $(shell cd $(top_srcdir) && $(FIND) gnu/javax/swing/plaf/gtk/icons -name *.png -type f -print)
-
compile_classpath = $(vm_classes):$(top_srcdir):$(top_srcdir)/external/w3c_dom:$(top_srcdir)/external/sax:$(top_srcdir)/external/relaxngDatatype:$(top_srcdir)/external/jsr166:.:$(USER_CLASSLIB):$(PATH_TO_ESCHER)
# handling source to bytecode compiler programs like gcj, jikes and kjc
@@ -35,8 +28,6 @@ endif # FOUND_KJC
endif # FOUND_GCJ
endif # FOUND_JIKES
-JAVAH = $(USER_JAVAH) -jni -classpath .:$(USER_CLASSLIB)
-
if CREATE_COLLECTIONS
COLLECTIONS = collections.jar
@@ -100,23 +91,18 @@ glibj.zip: classes compile-classes resources
endif # USE_PREBUILT_GLIBJ_ZIP
resources: copy-vmresources.sh
- @list='$(propertyfiles)'; for p in $$list; do \
+ @list=`cd $(top_srcdir)/resource && $(FIND) gnu java javax org -name \*\.properties -print -o -name \*\.css -print`; for p in $$list; do \
dirname=`dirname $$p`; \
if ! test -d "$$dirname"; then mkdir -p "$$dirname"; fi; \
cp $(top_srcdir)/resource/$$p $$p; \
done
- @list='$(cssfiles)'; for p in $$list; do \
- dirname=`dirname $$p`; \
- if ! test -d "$$dirname"; then mkdir -p "$$dirname"; fi; \
- cp $(top_srcdir)/$$p $$p; \
- done
- @list='$(metafiles)'; for p in $$list; do \
+ @list=`cd $(top_srcdir)/resource && $(FIND) META-INF -name CVS -prune -o -name \*\.in -prune -o -type f -print`; for p in $$list; do \
dirname=`dirname $$p`; \
if ! test -d "$$dirname"; then mkdir -p "$$dirname"; fi; \
cp $(top_srcdir)/resource/$$p $$p; \
done
@$(SHELL) ./copy-vmresources.sh
- @list='$(iconfiles)'; for p in $$list; do \
+ @list=`cd $(top_srcdir) && $(FIND) gnu/javax/swing/plaf/gtk/icons -name *.png -type f -print`; for p in $$list; do \
dirname=`dirname $$p`; \
if ! test -d "$$dirname"; then mkdir -p "$$dirname"; fi; \
cp $(top_srcdir)/$$p $$p; \
diff --git a/libjava/classpath/lib/Makefile.in b/libjava/classpath/lib/Makefile.in
index eef968cacc2..bb2dac45e55 100644
--- a/libjava/classpath/lib/Makefile.in
+++ b/libjava/classpath/lib/Makefile.in
@@ -103,6 +103,8 @@ CREATE_DSSI_LIBRARIES_FALSE = @CREATE_DSSI_LIBRARIES_FALSE@
CREATE_DSSI_LIBRARIES_TRUE = @CREATE_DSSI_LIBRARIES_TRUE@
CREATE_GCONF_PEER_LIBRARIES_FALSE = @CREATE_GCONF_PEER_LIBRARIES_FALSE@
CREATE_GCONF_PEER_LIBRARIES_TRUE = @CREATE_GCONF_PEER_LIBRARIES_TRUE@
+CREATE_GSTREAMER_PEER_LIBRARIES_FALSE = @CREATE_GSTREAMER_PEER_LIBRARIES_FALSE@
+CREATE_GSTREAMER_PEER_LIBRARIES_TRUE = @CREATE_GSTREAMER_PEER_LIBRARIES_TRUE@
CREATE_GTK_PEER_LIBRARIES_FALSE = @CREATE_GTK_PEER_LIBRARIES_FALSE@
CREATE_GTK_PEER_LIBRARIES_TRUE = @CREATE_GTK_PEER_LIBRARIES_TRUE@
CREATE_JNI_HEADERS_FALSE = @CREATE_JNI_HEADERS_FALSE@
@@ -141,8 +143,6 @@ EXEEXT = @EXEEXT@
FASTJAR = @FASTJAR@
FGREP = @FGREP@
FIND = @FIND@
-FOUND_CACAO_FALSE = @FOUND_CACAO_FALSE@
-FOUND_CACAO_TRUE = @FOUND_CACAO_TRUE@
FOUND_ECJ_FALSE = @FOUND_ECJ_FALSE@
FOUND_ECJ_TRUE = @FOUND_ECJ_TRUE@
FOUND_GCJ_FALSE = @FOUND_GCJ_FALSE@
@@ -166,6 +166,15 @@ GJDOC = @GJDOC@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_LIBS = @GLIB_LIBS@
GREP = @GREP@
+GSTREAMER_BASE_CFLAGS = @GSTREAMER_BASE_CFLAGS@
+GSTREAMER_BASE_LIBS = @GSTREAMER_BASE_LIBS@
+GSTREAMER_CFLAGS = @GSTREAMER_CFLAGS@
+GSTREAMER_FILE_READER = @GSTREAMER_FILE_READER@
+GSTREAMER_LIBS = @GSTREAMER_LIBS@
+GSTREAMER_MIXER_PROVIDER = @GSTREAMER_MIXER_PROVIDER@
+GSTREAMER_PLUGINS_BASE_CFLAGS = @GSTREAMER_PLUGINS_BASE_CFLAGS@
+GSTREAMER_PLUGINS_BASE_LIBS = @GSTREAMER_PLUGINS_BASE_LIBS@
+GST_PLUGIN_LDFLAGS = @GST_PLUGIN_LDFLAGS@
GTK_CFLAGS = @GTK_CFLAGS@
GTK_LIBS = @GTK_LIBS@
INIT_LOAD_LIBRARY = @INIT_LOAD_LIBRARY@
@@ -238,8 +247,6 @@ USER_CLASSLIB = @USER_CLASSLIB@
USER_JAVAH = @USER_JAVAH@
USER_SPECIFIED_CLASSLIB_FALSE = @USER_SPECIFIED_CLASSLIB_FALSE@
USER_SPECIFIED_CLASSLIB_TRUE = @USER_SPECIFIED_CLASSLIB_TRUE@
-USER_SPECIFIED_JAVAH_FALSE = @USER_SPECIFIED_JAVAH_FALSE@
-USER_SPECIFIED_JAVAH_TRUE = @USER_SPECIFIED_JAVAH_TRUE@
USE_ESCHER_FALSE = @USE_ESCHER_FALSE@
USE_ESCHER_TRUE = @USE_ESCHER_TRUE@
USE_PREBUILT_GLIBJ_ZIP_FALSE = @USE_PREBUILT_GLIBJ_ZIP_FALSE@
@@ -312,10 +319,6 @@ target_vendor = @target_vendor@
toolexeclibdir = @toolexeclibdir@
vm_classes = @vm_classes@
JAVA_DEPEND = java.dep
-propertyfiles := $(shell cd $(top_srcdir)/resource && $(FIND) gnu java javax org -name \*\.properties -print)
-cssfiles := $(shell cd $(top_srcdir) && $(FIND) gnu java javax org -name \*\.css -print)
-metafiles := $(shell cd $(top_srcdir)/resource && $(FIND) META-INF -name CVS -prune -o -name \*\.in -prune -o -type f -print | fgrep -v .svn)
-iconfiles := $(shell cd $(top_srcdir) && $(FIND) gnu/javax/swing/plaf/gtk/icons -name *.png -type f -print)
compile_classpath = $(vm_classes):$(top_srcdir):$(top_srcdir)/external/w3c_dom:$(top_srcdir)/external/sax:$(top_srcdir)/external/relaxngDatatype:$(top_srcdir)/external/jsr166:.:$(USER_CLASSLIB):$(PATH_TO_ESCHER)
@FOUND_ECJ_TRUE@@FOUND_GCJ_FALSE@@FOUND_JIKES_FALSE@@FOUND_KJC_FALSE@JCOMPILER = $(ECJ) -source 1.4 -encoding UTF-8 -warn:-deprecation,serial,unused -proceedOnError -bootclasspath '' -classpath $(compile_classpath) -d . @classes
@FOUND_GCJ_FALSE@@FOUND_JIKES_FALSE@@FOUND_KJC_TRUE@JCOMPILER = $(KJC) -classpath .:$(USER_CLASSLIB) -d . @classes
@@ -323,7 +326,6 @@ compile_classpath = $(vm_classes):$(top_srcdir):$(top_srcdir)/external/w3c_dom:$
# handling source to bytecode compiler programs like gcj, jikes and kjc
@FOUND_GCJ_TRUE@JCOMPILER = $(GCJ) -C -g -w --encoding=UTF-8 -bootclasspath '' --classpath $(compile_classpath) -d $(srcdir) @classes
-JAVAH = $(USER_JAVAH) -jni -classpath .:$(USER_CLASSLIB)
@CREATE_COLLECTIONS_TRUE@COLLECTIONS = collections.jar
@BUILD_CLASS_FILES_TRUE@noinst_DATA = genclasses compile-classes resources
# endif
@@ -548,23 +550,18 @@ sinclude $(JAVA_DEPEND)
@USE_PREBUILT_GLIBJ_ZIP_FALSE@ if test "$(FASTJAR)" != ""; then $(FASTJAR) cf glibj.zip gnu java javax org sun META-INF; fi
resources: copy-vmresources.sh
- @list='$(propertyfiles)'; for p in $$list; do \
+ @list=`cd $(top_srcdir)/resource && $(FIND) gnu java javax org -name \*\.properties -print -o -name \*\.css -print`; for p in $$list; do \
dirname=`dirname $$p`; \
if ! test -d "$$dirname"; then mkdir -p "$$dirname"; fi; \
cp $(top_srcdir)/resource/$$p $$p; \
done
- @list='$(cssfiles)'; for p in $$list; do \
- dirname=`dirname $$p`; \
- if ! test -d "$$dirname"; then mkdir -p "$$dirname"; fi; \
- cp $(top_srcdir)/$$p $$p; \
- done
- @list='$(metafiles)'; for p in $$list; do \
+ @list=`cd $(top_srcdir)/resource && $(FIND) META-INF -name CVS -prune -o -name \*\.in -prune -o -type f -print`; for p in $$list; do \
dirname=`dirname $$p`; \
if ! test -d "$$dirname"; then mkdir -p "$$dirname"; fi; \
cp $(top_srcdir)/resource/$$p $$p; \
done
@$(SHELL) ./copy-vmresources.sh
- @list='$(iconfiles)'; for p in $$list; do \
+ @list=`cd $(top_srcdir) && $(FIND) gnu/javax/swing/plaf/gtk/icons -name *.png -type f -print`; for p in $$list; do \
dirname=`dirname $$p`; \
if ! test -d "$$dirname"; then mkdir -p "$$dirname"; fi; \
cp $(top_srcdir)/$$p $$p; \
diff --git a/libjava/classpath/lib/gnu/awt/xlib/XCanvasPeer$DoMap.class b/libjava/classpath/lib/gnu/awt/xlib/XCanvasPeer$DoMap.class
index 85e366de3816d6410b43762c3cce0e719fc17e0d..07a969a8199e0729b28e935434a0c290bedb8ddb 100644
GIT binary patch
delta 31
ncmaFN@|b1A14d3^1{Nk!22Lii$uAi_S)~}*nWQJ1GwA>Tf=&jx
delta 31
ncmaFN@|b1A14d3R1{NkB22Lj4$uAi_Sp^x`nS>^rGwA>Tf6oSt
diff --git a/libjava/classpath/lib/gnu/awt/xlib/XCanvasPeer.class b/libjava/classpath/lib/gnu/awt/xlib/XCanvasPeer.class
index 5bd9bfd44b5a0802b6e5704917c6c3012f5c7ad5..1cf8cd7bf85abb63203fdecfbd717e0753e7c2e8 100644
GIT binary patch
delta 1339
zcmah}dr*{h6g>x6RvrNr3(I4HU7pLbAdj4QtV9M<0_K#2=vWMqA_Ve^v`n3Jnz1R2
zD^`OwIAuyTp^_>1NQDwjG|CrciaJd*&Q#M(_RyxfyZv4LbMO6rzkAO)_kQ>Lc078j
zCgjAQ!-oK5@~RPDgjrgQ=3Ob?bU>#)_q6B{a^CnxG8`C(B4YlV(a0%P
z`ENNY#-mI8Bg$DQRS{W+Yy={6uqz^us|(?S0tBN7p(ut4C5TWTi&7+E4l+@J8JLSg
zJcQY(L>a2^Fcx9~YOok}sKpalf_gM!8QRc*l^U(ZlUR?Xcmd0?5iRINE8a#Y`tdw=
z<3$|AOPIjRnAG@M5Cq?$2R~pl{=lnJ8Ff6d57V#}0eA~$Elk8Vr0R2~0_5UdxbU7z
z*(vu$S8`Z-qw{%4&PNv-MqtFKL|Ffg&zm73a+qw2b@E3!8rx+086mi#Gx$Y`e^cV$aTjh%aoh@D0>Pw=#^uwu
z+giW?aaju)BC9ku$*|f;`PJHEkA;C&L^B0e+L1;FvYCdNOh*Z)qnuf&U=HRpSN7QI
z>5|y^yE#iPr-Vy$d=5)hZGlY1+YRN4Qz1bKjixG0;{pV*8WF5Q3>PAmi=-=I6(7@1
zOkzuHaMr}Tcvq_aw%|^_
z2@CraXR9)9Q^t2NgWHkEe(6pr3Sh*potX8UZz
zF-0Gft9F;+q(KS+m
zHjQV(SNc-3Z__*O=AiqIA4-TLp4Z%%sz_rQa0JQ*r@!|{+$*%l@q4#UzbdvX61h+2
zWmvuVlk9YuyoYq_#vE4Okn0XR_j{mjx}ky(@Su{o{~SJA^sy{TvvfO+vL-D$;0TYZ
zHgbfcl9_I$!Cm0}2|tx9X>s)TupQ%=hwZqs*%;&|;|Ybgd3nWqq<$tnP8%Jv&*|bx
zPg0g9g^DvhQJ2XLIL=cZz#;_<3)JbJb|a#apUVg7ak^Wl(+mA3@E{DT<%@r?=X$We
xbmO@m@r*1`OLTtNf;ZHA@r=iw9!#eRbdPGOyed@i$`hVv+y=
delta 1181
zcmZuwZBUd|7(Hj>6&4UkU06Q%0~XljW5Gb=W2Fsep#rO!B&8Xh#uQfwP)U<1&1sr&
z`k3IcX)Mz*ZLl9U16!Gfq?S}D8YYzfs2?_EQ`$^5>P(LH?Au@G&imeT?|trb&Ux;=
zXP-E@GG*fS(J=t!yc7!yVVCu>_Tj=ITcj%0N*;>@)210SLljD9TBan~XU~e|_e5rN
zm`o&wI>S8;-Cez_yLvauXnG45Nqok9qa2CwM}iqO+!jC#YLJY2%tHfgSd4V-9S9*G
z_oE!mSb!E?eFTkoR7b7)U#@K>R$!I3C(*906Kk;%Vf0}gwxa_tVhvtG7hXp<-bN1&
z;Ay~UrxdReu3Z`cH$P^khrX`J$n#`y-2`5*zqnr*bkqM%Q1v%
z97I49HR1!gp4G}vq$RtSqp~Br-Z+6+oRrDzI*v!>pC5+=UFvfHzHCc@+$)>N*+B^BNCoo@P0o*J*1-93Mjhmm!_4$l-GM
z*d{^Gb6la8Y;wWVQL+j#TmviHk;1h|V_4(X!OhjkrhYB}%
z-qantG|yX@%iYN49?i8^S@$dJ0W9EqsNs+-_BQj7y1b7O)9Y{ECfi}vd_;X6#T<^Q
zx6gF<32E{*8mBb-xa{-=j0r`jWyV*{b9z`d@f788S{^70a9B!Qsu8^naMMug)w;+
zDo<*n7V=D#2(6ryGkz!Q<*L8ldKM4EP?6{UrwEx8-$b=kF1dpi3#Zhoh3EOL_H)$V
QfNs8^H*lKY@gmay0~>EACjbBd
diff --git a/libjava/classpath/lib/gnu/awt/xlib/XFontPeer.class b/libjava/classpath/lib/gnu/awt/xlib/XFontPeer.class
index 49be95c498466bd2d81b68feb03b05c5b30c1436..9a5b14fb4f5d9bbb26346e8e08244bd09edf91f5 100644
GIT binary patch
delta 321
zcmew>^;c>`A|s>c87!j*lu@6o
zz^Npv50^DyFa*mQF&Iz2peXj#Gux1Z=x0gV|($ZuQBRI1gxo%z)TvgJvVh6}CXr
zSb;X!G1!C6c*Lc`sI!@!Tc1%8zeb=VCx`RAH%B^;c>`A|s>oB8z{J4Fpu(UEB-t4l7@~lD*2#=q
z(vzb&l;qVI)PZ~k1`Y-d24MzfFiR82VgahwV$hyEo5NF7hd~#rMh~c(87!j@lu@6o
zz^No^0GBmnFapaOGnh=ipeXj#GsbV!J7W*<^lh^~skw4`_nSfY@k*W+TWIwm{QZ
zfi~DN*n`b@#HGThyP2I^pHUINMxY}nhx5EQM>y7>Apq(jkk?q?USkEb0)b*|K#PKa
IJSK)<0H=v2tN;K2
diff --git a/libjava/classpath/lib/gnu/awt/xlib/XFramePeer.class b/libjava/classpath/lib/gnu/awt/xlib/XFramePeer.class
index 43e9b4bcb847d026adb6c34d900b1d6ff043f7c1..8cb0234114067c2f25c3623a47fc8732280fca21 100644
GIT binary patch
delta 669
zcmZvYOD_Xa6vxkLJ!(4W(5YvoA%sXgf(2sX5s$=UK?sS()w!u*9*s^lY#QG{%-ZWC
zh=qiNtyoBG>}+goY-}vWnQ6(0ZcfhQcmMx$?sex=kMQtyeG34+*mNOCVp9Ms5W@4O
z72D%hOx2Sb*STSFr3)dHutjkwTan_{sFq=SsRd)nOdIvPb1+e6|n6GD`No+*0@A;e7d>5UXIvE|WU&)y_(hTC9cu2_c5T
z5p-7QcUG{O6m5O;2nfFdGDh;`G?9LX9DH}ln0wX_2_Rq%*1Bs7SVulS@~JQ2^HI>J
P;XfJuEJ!vwAB53w+Uj|i
delta 157
zcmca;uuGfk)W2Q(7#J7~83i|T3Gz(#;L)C}!E41RwKOI
zr9(fU-_WI7r%s)t*>x>i2?u80cjkScXP$ZH_2jJ-dHH&JCZbg|dy#XcGbL1eTW_(p
zI5vvh1dXRlnNtuhLGzk8;uWUv-IjGnXxu2aO|{^dCbw+00$NHR)>xC}Sj*1sYE0+V
z)Nub+rUZ&LhIl|JiSCSqgJyjhn%xcvNd6NmHa*`GC7&*r2&UYv0wM
zCqzAy{cZP7S;OYTqmrDdf)Qv&e(t)QAvw|Wl8js@WQp)j%QBDmi?kw7-2wU87qSkN
zQSm7@WOOM)WB2Y#zZ@Ukg+x3H6;~dlitCY(PZyGghMLQYy2}V14H;uHGho8XD-bd|
GdF2}~{=jUW+mgr?AmL*PB
UmNsTI-5f5hD98rX!Niyd0Qra$r~m)}
diff --git a/libjava/classpath/lib/gnu/java/awt/font/FontDelegate.class b/libjava/classpath/lib/gnu/java/awt/font/FontDelegate.class
index dbfaf4b1f18734618b669be479e7a6de513a3e09..9123146a2c101a40b7af8810d0285272313c75d1 100644
GIT binary patch
delta 86
zcmdnTahHSZ)W2Q(7#J7~8MHTY&1MwlO;0UxfP@XSj|tzcwe(eT{7kkN>Vk$3VH
kW?fDh1_l;J23ZEF$y_YzqUvCt1_O|0U}Vq)l1vO*01+_}xBvhE
delta 58
zcmcc1v5$l6)W2Q(7#J7~88kO?&1T%Zhf$A-k!SL2W?fDx1_l;J1{ns~$%-uMysAJ&
Mj11~Pl8HeB0O05g#sB~S
diff --git a/libjava/classpath/lib/gnu/java/awt/font/opentype/OpenTypeFont.class b/libjava/classpath/lib/gnu/java/awt/font/opentype/OpenTypeFont.class
index 14a8ff0b17fb1d8d282721873153cb43f1dffb3e..37fce044ea6373e5d5b65ec5bf19e9367e5d4364 100644
GIT binary patch
delta 1148
zcmbW0OK?+F9LB%zoHhx~P4gPdBafRjO`BW_p$`Q?lu%o!h+B6GpjN|`aASg>W=lx&QPt|Jhb>;CS*o
zF>Q*S8l)io2`+3T~Ax+Mou@D-fniV%n?5i5_xkc
zl5e;8EJw{pk!qmKLl*b(DZ}V)*?z?0VUC*v(bTRCU$l6X<3zAosZA|SHs6}B*E(>C
z6Bhb7NwgQ{Mv60pniK6Ab0Jy`PGe_~vz+tu6-nHyU*!q&OLUKYk`+H+C*lj0cPpjE
zO1)MZJ%75|XwEOyEuJ#vSeI{>XDn8)o`^-rEm!OD!JsCS=C`Didk60et}ZB9H{k<(
zC{L-l4FM2Yx==2qv&;6Xv=vrl?LxbhAH%OcK}dayu+%a2nI|+M+kkjWD9)TGBt7;Z
z<=MoUXD_t-9s5{7n^zU35?$#zQu(}UJNx065Ie}7X3Xx%l^*l0ao~!)ycZ?rZdTvJ
zr`9FPZERNS=7OCadSI1kStVLl2|ln&@No&}6N4vYus_*bVtXD+`{ejgKbl}ByX@vw
z@|jFiy8U9`kgP7Uf^&`gZz170*RbHk`OF$-oLEfOuXx}(_q(qXYaDy1yUjhD+7Nno
zVW~e5SAQZYwXOd8*C+}tf(7O}Bqhb(y+3=isq}M~{|i8;;L~Yr(l&xRWq!?U_5etJ
zggpRm(lDPFt}gYk2f(Es_E@)zwA@Bd`h`cO%OZVHq(?-${6C}vJSM-uciF?eFFnFQ
zPoPatBBG~|)YB;F84T#-W=Hqd54HR_)
hLxcKFZxoq(rmay7d-sLN$p3McHIXCFNi4j$M+{2D2Y7zNsrrmGs-
zZoBDC)Hdm&NgH=YqEfX@t1A;%>VMF#y6__|YLhOS{_dk_>av^rPJX|4&+nXbe-C#2
zIgq^j_syRHba2XnB3jIRMRsA$e3kjBYH!q|?=WZXry5LgWlYzx-t?|~mTY&?jC>_M
zcDP*6PO~-fTg+pR%U*6Yh2-Yy*IYEBNzcxFI9JJSe8b`EMBe+p~$UaiM?*!-31@s9Gi!(&9|ROzEq`{~kjxqaZ{@rl{F
zshMe)C9^+W9UbMk%lEFFNhisgE1zW6$0I()?w6i_wqZf?QJ9yr8WDl#;iwC!QePn<
zIIX_Mr_wusn4B4WhR@|Ih>cQVh?-C@47S$HJamXwvjr6)Y852B(k%#zhA7|~IPlp<
zt~K9!%}vEs(M7JiEX^e;X?t1yf~dMBQf{M0-7>#>e&_P2?DJ7sE|1D`c~q8NA}%Te
zHpq+hu;X
z{|9x9Z^(gOG#?3`y8z30YVaA|xOL!V)1s*&|dKl7U1*60@)AcMt-GzYezn!M+Sc!X?tSy-%_J&azWO8YzWeUG
z_w4tabI+ST`OgO*BBBZE4x6N)Q5##k$DI}35*-)a+NB#OH;$`b-`Uj>ZRncY5p8d3
zZs&Z33O
z1Z6MqW}eg5+Epbe)Y%kmkIjlUG{poBFpu^8%bGf3(Z&UB4bc`1%Us&Lu{GM&-GNb4
zdLK1)L2ocD^`@^n4fEu7Hbh%nnp7->NU+BV^NPV)Iu
z-Nn;1v^2M;ETAchCw)6&t&Opc=GKk#06NGRNxr@$%lPS8Dt
zPR*O68)M^Eb~JafM4172E33J4QF~YOX2=kb6lXwymM*JaSW~^EX6@2tOBT(aEhs;^
z>da_obAtzYUvKEV+J(!OLU_%{?ylyRar2^`O?AXk68hXXSFp#
zsK*NGlOn7cG@j)UY+eeiH-xC1PIl-Nng|L`b!Qk*Y}U{c3`jtns@mEyD>6w?g+rMX
zvT3rQu%0+w%tLf4Rq~9bJbbD{S>$l*G>5Xuv1tZ4=t1PeHAK^?k_XOmXcUdM2~^3^
z1O2FmsD?+)qtk7wgJz%hpyeTvl7XptgEx?ZUax^CY!X
z-y1PMw!Mm{U+B;xS}dq=MfHN^v(x5STQhr3_3{PFpol&~En0t8tf8xlAzb3nQo>`^
z-VNcM>?fx?s^@!SdUi1&D;!$MsPto0{8;eAdWX(nCB>t%!Cs^S#>{Y+^MCkuuC!@6ZSuX%hsu$fI>{_8>$J=8cUGOhYG1E1ah6jVtFnQcNwAui}lBd_IVBsrD0H=uBK)f
zg5q8+anHR5+81c-h;D^yy7RJ~GxlZ7iY)pfU1ZaRV1P#mqudVdq+I}}0Xsxj%=9(t
z*8~mkIa5+(&D0^Fc8Nom(q+)+4b3er?yLQKym|)PgJ36bA+XGy+9oCz%4EoE*=`A1
z?0ZvpRVCN#jpe?_#`5Wx7On4$b$~%tW6rSYD&Xg#y#(rkJ+~zmqHE|&HeKr%4*jk}
zU#9C|%r?flRyH?wH3=H#gQ?d=YI(A~4(;O?Gx6fQSo6lFt`O~^8<^cULS%|-@xL)E
zm||aX=w>_djdI;a(
zvhmIJoJ-dB~yr=`c)05>D^Afi&6!(vP3<
z-vb*)y(0#4&+4(#%-{uD572`)9qY-Wl+g|yr*A@JA>7)8
z)?sId$QBj5TLzmOvq%O*VD9&n`y
zua5`4sxX_y9(tAvpCH-RE@)`FHl~aMH{sT8!#{W=Vms^?%rUDadwX43bSM4Hq5q+0
zVTr)Py5`nZ+DWVBC(pCxdX`(iVB?1|Js?WODHDe6R}TG{p5oT89eSFc;@4kt=w;s$
z^-S4U9eRykhXdNs*4hBN!f^#{{d>#D(1l-q)1lwe?;v(YFlsr_=)~*8{9@PZ`!@X^
z^5jXK9y2%A8taI*ERJ?Hh3GB%1Dod0bL)TEU3lH5cY%3tk&hNZ9W;dKkMw7L?@8X(
z-*+gF`rGtZLFK7SEo^IT)=?2lu@|q*-qsL<6W-PemNr9wRkW>HP(hNh>0mNXHS0ea
zDhvyCMz_QoHH`29l5*pm=Gp-z#b#|IUCySxwQ7>W+>mR5egMX7wxtL1Ks_h6*@;IR^W=E!*3hR={CtgQw}YGam!N
z>RCQZr^onafSD8GBu9)8BjE-zU3?Fju1QYycy-Pk9nG0I+8=Hh(n9=HLlZF-K6D`;?&>SKWokaD8`ItdZ%7^h>Ox7XP9knY+7{
zi}6g=34&Iqqu3KX1HYcR=X{?;Tu2@A0(xCRqkYqS5`g~#E-nYy#RjpP*mxBC&`J6<
zNe&nf{S0`(VhUhNO5*a?&hGa1He_rX7qv6YFi4(d$`IgY-om!7q1$6!L!053#x}>`
z-!+EBWHAkvPawJv_rf48AsrA_kfN>CL=x=jv%lb_O%j}CZ^7$E764<3rSG}h3KyvFvrXe(j`=!EBe7)eQeTxE;XVMsi?T)lGH;#kM#=FU#w
zn;{lJ%{VPq)7;tK65Xy7Y@H$Op3_2Nk@$=)5Yn3cqqoT&u|yybl8szj!=~i443gnM
zrwh!u|b^EAeVatf5knq`SQl
zo2i@D(QJe*X#lmMWu3^Lxf@Gw@Po-2U`=Ab@QIS{0;uqXFd)Illz`48w0MXBp#3n+
zGtivB5_Ga}zLZCuI=5jcq`^uchPY@RErD~wkw5YuSe;udqAlIn?)!oHDf0-L@X1TK
zy6Rs8D+owat7wA;VM63_-8uZDdU+9ol8z#B6Z1reBRZK6!G@Mtw1a!P9kGRDdkZO-
zYSvUYN$bV0jEyTX-j59Xux`#w
zeBPnKG=$~ni;lREJ`Y+0t64}%a^Frz>|!r1WMqoF!Ck0WA5L0&4h#f~?L4#<4KT^-
zXzSAcT%cIH$_-+VBd!p;v2a&YtSgEUaH8Eu*YcyQ@d$}yj=vkkb&mKFd)=1qfk$c@
zPy=KNG))`C4UX7n#&C}w!wvYBe-Sr3;sA3XyB+C4$STsf0JQ<+kTHNcE@=$4WA!Oc
z8FYfpm4_@tc)KHRWx68*bt(@iHo(CLpjC-sm
zH+><*aYuYpd<#1Qn-y%cwH)fhwizdOtWIhqshr$~e0ycG(-w#Xlc^Zvx5Ea9#6$E4
z{1M-A#COG`03X~m%OsrvrmXjdrbq^hCeIF0#>UWrZ7L-LksNJ{?;}Uh9tr
z6ObW=E1VXCBv{7pW8?25VB+9NdvK6DnE3YXA+cQSK!QmiWIILtGL=qAk~5SI0qLiUqo0?lZX)UgW*;
zMe(X5UK7v>aH+X#REntq;zd+O~4wQRTO$$zEH$2@)qA5`F#!mt$$dE%Ce&
z*l6Eo@$ut8I~D7IcDM%<%!LGgc*dHlRRgB0!R&ncmM!1^I%1uGp<>n7+RT{^j;CT>
zs}?OWHykpvynuXu#&8#AXFF=1CUUyGynd+n$PGx8xf9gI;I1~nypQ$?m>HSWBEEMA
zR)xfe;vcs7d%|JhnU}S-wQOqca>PHyM`rVI!zA~CZ!_=>=cyz@tG|lB86(0rekPxJ
z0h|=ul$4$<8I-myEq{(wyOoa2kcjR$)tQ(=tOqq^7Vk2=w=l)^CX&I@S`977aBVK!
zEU4_~$Q;=hu@FL$S?(B~BF~Zix!*~=XtHXu5f)uGV$;ds;DrwoAlfqG$U(BeV5AK+
z=Weh|-~g(IpBFiDaF6HMJcJzT$YGqB<@GrjG&2f$k|RgRk!D7Xtb3w59IWpx3{Q@!
z%9Nw!7+V&9Od26M(vc++`&Pi%0^hltHZ}~&$u(8BEEhD$(^uc45p!DFqFo_bMwKBs
zUY=}Agg40pE#F8-o+2k25#?FY;{Dj9wIq(wE?{QKZFpU7=Rey{<`)0ygrW@nG=yDd
zu*5J)r#o_npQPN+G@0p$>2wFD!z=Me&UWM+9>xx)Cq6j35XiM>aEOzbZ@wcJB<7pr
z>tE=INepV?H_c)02o+eOgXOz0+7F%{>Z%U<=H`tL|SvolqnbQ&7
zj8!%J87P3lYF^#Zz~G(h$Q|-LXf^P`?wCe<4ANkI&c6w3p!JgkNar(1Uyv8t@{8Cg
zQbE!K9eI)5$xdjj3-{OqT%zLG#!wX=W(RoB1g_>YBml`o)q@=dcX3lgy(Co$;ITk={*eo1~AP;7475?cnA1dBQN
z=SSB&a<6{GOYkFm+u}C3N-*GZHPXKJ_Qb8-+U`CONHAt4K-<{X%G5mI$Xn!BF`mIe
zAH0zyMHvP3!TQ|h-*nvWki3{g4Z)C?Z
zi>c+#B{$k-&|Fu6V5zbJW{$Eth3BM-~_jGotk=z0u4h&!~Kt^}Fe+!q8*
z>Sc{jUnTWqr6+90&Hgl4L6`L#8;sXJ`%~aJ(HW=oIu9Q$ei}3(`H+0rmhiyMVYv3x
z>W~U|9_6fB4Z>R3>
z)cu{hztij@ylHo0)0Uku@UjyYUN&;85v|%2K<2~$+{3o{cPsY}~i{XkKCA&=XN=
z64%s~0Lw6SlC6gO-3zmzwoV!$M~zS;4Vt#b7%5YS9BGT)<=%}%395w*t2jKdQJ<)ZSzz>draud`k
zw!#ikazcyhw;VN*#W@QSlaOVer@~RECUj}l;qpa2oIrp3W=^^6nvpBh()z0<9iG_Ss
z!zsWs!(BtG^&RhRPTF4VNDavYn51Fxi2(aR>%B9Y6xxc
z3IKuzP4I#wF6lA`OtTPku_Z9V8{nKH>N?d{M{UzJoHG|x&zcV{Rp&V3J@LMA)VOXa
ztwcJdWW=yCP2hNv^BwsIiH-9kLh&j7@;3AZM}1LU2;Db|wHT@TSYv{k6>M!*``o4z
z+*0Jb*e>zs7yRcX{_{L5@uiNsEMfdmCp$B$({q{YajlDXZi2g&(du@)=03MAQU2|nV_=ZiX_9qvD@?U)IvMrT>UusaJ3k~xbEJBz
z+V7|v6cQ#1aVoqCSO5H{O;A|*DpkU;E^X`XXow+W12_isELI)Mz7JHowiWd_vs$8^
zoiRo%A!3j)Ei<;d4f^5vNvY4vGw6L3jQ@q^;yR!HimLN3(V2Lg=`;yguhkd?
zaEOqA|9sGm;h$V`l-895j!?AZI5hyc*b&+Qn3|5zW?b5iP&Y0!kI+^;pI3i~Rv)G9
zM`%Y9&f%a7(LXTX+u+zo)F0Cp2%Ja=iHdPWr;30F3)Z9a>2nw_ICF`=Ov_c^I+T@i
zOAgc4(qr@mNp&SKTWcx7-==K3xuu!s0-Fu0TtojeLT;
z%6aGwVwEAsX-~aUrR8zDn*UsXl=fE!N=nPhBY~rI)7=P9hgaS$*>E`i@3KiYDVc3lo_Z99;AxW
zN9fMI)W4+kVY;)70r{HlAB_Hc-2QuX|9!gOQWe2)FbQi3i@2DM50Zb>8_cqFvBCx0Rzs3
z!0Z6L=Ya|50Os>)wD_Ecxx~!v!CVZOf2miR&m+T#sFTFO9^t7=-|1#eP_X8z78dp&D@j-{;&$r;9uAoy(nc
zhPazHh_6$NxR*M_eY8Uyrt`%SeD)B>Hx5VW3h{tXcz1g=-0jhDwuzWElMu`$q=ojYBy@b=VUl3uQ(Y1kBoHrN>0T
zTyU(GxJ$~zed+S>DCGAs$`y}OL_7gmc$7wn@4>Hq(kBmP9xi2ci(nWCmeClK5k7f9
z;kpaiCdd(6vmAhvDF_A(3{MqDV={k%PZEC#aeP59XKYuFw_J|5T#iS&9G7$%U|t^x
zCpHSvmnOOkAHY4^t_cv4=w9kmQd(FP7ug4Ccu8F30*=EXKN2X7i-B=5xH1T>F5FqP
zGcJZF>0VIYiMR1h**hA@)64=MkQ2lxFj_$$6~6k3
zh+;7YK#hXlm55SM1>lM@7u=mLxPw0qx)CE&U^7Pl1G2=2F!+C`BJmF&OoKg`2753K
zrXP!PZEFV8(`YF`KhT9K3=$?`8tcMzkqc8%8cgGQCzl3EW|AdClq<8S5LLUpxf?PS
zc_0;ulf@~TOhq1$sR)pC>AhimBhmt=Z<;`jaftlNsxro7gL|ILfr
zg|o*FP_8&rtOdA&Ya?7Bn{dwv3@v?}1~V-0v6X*>nm-m6t*CN71!Ns%%0-kX7gK>;
zN<-udAMJ;F>kox7?T^)jST7pfRX4hfJc(D_iWRrI?(ioOA)jrVTuVW@j`C%c2FnHz
zpwYMJN#3F-!8<6@i^kw17>}|Ji!wj5u-=Z+vbfl|GD%@0L9G;$Z9XdcnchSTFcGu5
znHFm*o+UQ9Q%`fLn5n0Zi*3mlr}9E`lKJ^v&GQo4FsY69)glG31=Y
z(!LCB>@f{WyJWlhlV_fhE
z?b%DCx%DvZSy)~V&!(X92))3q7YosPv7|gMzHpERx&F_>@`A2ig{{I*pazfa2UkGvxg^G&)R6vR_o$SBpdI+G~R^?>tZKkl5y*4w1P0W{WP35NQPoq7tSjIC(FY)S02Qd4U|O*
zD8b+C(QVmduo-+APEzk+svu=5i~6Yyil|H)fpek~<_0<;J~D*$MPG+Y%?u^K{UYN!vi
zau2j}aia@bxwy#%&FB&5QSkAW3)(JNE~f4f1`Pq@EBN;YvH_saLCUCuDgTNQG31+o
zR~ShTV|=x!sS?Ui<sP{kz-6|+hMCvMaC0I(P6`av)Tr$ILZ&{czEvjNdu8lq08lhgtlt?D#%
zMiGiV=!#wFhWKDQNWXJo^4sJMadF4P)R1PAmD!}zY%*6;xl@e8m2F%Q=)9Ny@;VKZ
zc{%99B*fPcq8Wqkf4MvT?tE{ZC!UI5vg4u}c5)3G=t?(gO0t?4gc(i;|B9%)_{i=akq7Pa;~0cQhI54Nb?
ztW0`Cn+SIh`x?|t?`w5P?qG9+?dM><{IEETe@Dw65D%^_fnej+rTSIz&|d1R-w_Yh
z9i;5z;vsA+;)0{%;kwdC_-R(@!{VWZ2g%__rRZN+hVAi@lCmS>0_|2pFvSI!GD+Ig
zp)I7YC0l)oveor8RPBSp?x%8f1I<)7(dp`|v`pPfYt`+vN!>{u>MlA*-A!Lq-=K@t
zJ#>Y-m#$WaXrDT)$+AS7;r$+K_QMV1?t
zh$}{35f?vV9{m`Jkc&%3Y`J3O7Vb*YNJm=gQE2I7l%pP}0`-K()!5lW57$B+K{0fN
zUSLz`1~x+cO#F|#I)?}Bafc99J^L_;1*J*&ji^73wSM9g^^m(p27adKIV4JP#=@V8
zxbywN4Kq4m0-xvkw79T{4J_phg_arGb5#5sa&VAx(fO8<9C{l)xSdxoO#ZeME+^C;
zZf6&|8#INFiWiXlExmWaaq%Lemfsu|FV~fUUazby`!*mTq@~XkZvZ1sPoIqBGO1q!
z{+B3My$mb%Dpjc0Axm#ioqChjsNd0<>i3YRKhRm~9cowq>!W3dhvy0x&$W~X%llib
za~7=e?~oQ?8~l4u%~#+F(=wm2)?o|OfLjk!v!AYphkqlfK0xuthtyyF-ACVicU_4z
z_1mr~`9p7JDK6eg%7x}tz@lKl_RZCsS^A@wV4noZW}1C`%o#9Yyb)f{XBO{z;3Q(;
zPng0a!i||sOu=zW!c6{2{25SilHF&oMSfBYEe0}BsL@I{lQ@lYU!DWfYe7cnm;swD
z@{`2TF-l-G1p>uLW{>d^C?U*H0Pz=OFWGLRdflCKsyk=K1LA|yxTJKLCi-T|@Kg_u
zkeNwJ$pmK9mgCCMg^fZyj-(W<-!X|aT@T3!VCxA?2cR=3FHr4UBJ4><9-l^b6Rr
z8{H)~!kyFUHk^X&sV^uj3L{0oKQ2Q_Iv62YNc{qf^t3%wZJdc_k;rjl3bgnO9_{bs
z@RvJKZy_%Hv_<_^-7LBqi>~=k7L|^8#>LbxCl{piB&HWhmlJ%9=Dxhnj`9O-P^)&z4xCK`0-aP4=<+eeZ*t$(+l!EWWM6l+>%bH~S{Mm4fK+5&iRMc<
z7`EaP3CVuR`=c^9$tZ0h0^7(AY{!!4(ulwgy`(u#80m@HNG}K+=`n1i$FPwu!?3&z
zgLNz&BV|5XP$@aUW8&YD&tV{&43Ih=h|7VyE7CC9
z$_Q)|@=`3YIoR(nMT-NWf#PzsETq@R$|^Y(eFB-QgbsZZ_Z$+{7)oRt_Qd6B2kDd~
zrqu>hXxULY>xisoys9;0=};43sNa5I$$4j?Oj3(X4L
zs$F0Q&X=q7YE=8^ym*v)n23)mT+J@_^Uau{Ew
zr3q<(!*VrClYLySg)~Kv$kn>f)0=Q`SJ>JWm+NuRg|R7erE{NwSIG*zMtuXX)1bf`
zG$HUNWa_s*ZK?8TUF88@<?DGRfn~B#$SPJf2K)d14{$ldx9X{wpA-
zQ$7g#2MYjlAwVty$b$j$kpB|M+dYwa7}YT>|5KCle~v5v=Yz@@9Fga+oS)-S*~q_&
z%g<{CIHwn4j|Sw$fP4%fFQJozrBoFx^C`eokJwW^Vo&vmJ=G)jR8Ik>%3ZDkOqCbA
z3Q*xGz$O1FHo;HAW+Jee1Z*mR&8fg~HdFV}s%-N)sgqMN8+Bv`7(?kvN~O8vH1Cs)EXr1i3K~!4t7&sa0?B=b#(9?8Xr8DrUZ9TP4Il5
zs`)s9@{O-*A)BjB2n*R;Mt9%9HVN_LD-O+
zpy>(7;R(2qqtXblqws52+msAgKYepOZbA`zV8*}@=i*BvHipO}cVh~Z>d?Dqa1Uh$
zucF-G)j;eTDhpmqlY*woZiBAOneK_!bPu8F9zxSSgr;ko$a%x*+9tAQOxH+S2o)+c
zLN;QZp*oqL0qc>clldG!@0Q10BrgS$%ti0iBaJ<<2R;mRj2^rV7~BpF?(pflFT(Pm
zMp6qp%xpkXOY1sX@3ED+>t;qP<}&Y&{^qRgo38!l
zfc$PnAMVnvzJ-PSC>voOU;7n?1G+y49lDX55ZSy)UN|e9-MB04g!}1wu5h1S;T#aF
zf4J|ia4s78k-UNZ2j+unoRYw3C)_98mx~z(LWc7qp~%3Laz5{SYmd;l1)lXtC$ASF+@BY2scj
zWg)cp$fwYUk_Os^!_B9l+J$r;jyRu!oQ_isWB+u!0K#J^10Rt
z;W-ivU};7;Gm;gT&nE4J&ZPxSy73(IhDWJ4
ze2-H3S~I!AIbYKZ0?OY_xUiR^pF?=$Q4{7&gJ}gdLrp42xL^hdKLl)EM5(Pgz}%!x
zE8I)P*cf)8Xc_emm2h4T$)DfG&I@XoZ^MZKN(uvr;(7PLAjE|3pcigO?1zWyH0=Dp
zt_+}PwP-K4xeC-GmXvaOi1(W?XF_(wDxlH0mRdvT
zRBI^BwuaMu>m*ueji4pgXj*QKp|dPg$7AA|O&;|(xrY-(o8)g%y~EkeX8Ai^$CFDD
z`4;3NK&Mh)w>6)J!U6a_`WE86`fW%~Fc9D$Pz4bK{DFZ>-IH-;>SmN2mhZ&nAJg(>
zR;7=~i5zA?;#Vu&_hFH>F8Jc2QEpuHuVi|(jkIb(s?({jH6Nr}05a9lL~Ef2zy#U8
zxJdpPC^6uZZ~$&h{Un|3;T?C9&h~JXUm`9FNc<{<3-SRNcvjyD+L_bIsed(PW58Vk
zaF+tyWdL_MIJ<(zTPuCwPVl&As{R;UUrsemT_LFD)A6R=0(bj5paKXL6C8OsAK^zM`AC(K9
z{how&f~@_NY25&Wa-$EL6Lx}hMSK8CYYNA4{L4Rq<3fXsGXBGf<;Ucmb*|pJoBCK^
z*K3<#D{*Rx_dLe+^%&RJV_aXCaTw?2oBO)?X30Oe<3e#ZykmyK92&{@d)7KyM}5ot
z4voC!v%KZAyydgJ<+Hryv)tu{{3~i_^j;~igIwb)9D$6e{9s{OT>iZRh3N95iePy-
zfHXHep1?6B5h_|)lkKv&%GfzMqx_i4LJe~!{BGq`hK{S;dT#dTKjEV)zcPzk11p_~
z1GgsY0aaMpCz2WI6IVkk`(ln!mHlvb9_bfXC6zgmoVXglb3jJxWP5;pMfUYK&=l^P
zRFQj-Mn?LEa|={lO|HleXYU+fpLJP9w&@FJ$JNveb456pM^8WS(Q`cC%zYny&4n%p
zyHs~1rzEcC@P2hn%|%T)K3S3Pgacg#U2#=cnHR}LWCY*snEFhBa0buMT%_Y_WhD2Q
zS}iEK&Fw_!OxB|mv>u}@3-zMb6Exgi`lA9JZZm
zRhw#uYj+J!HrZ*+ghpGlpob{OFo7Xf>YM!p6iISM(dlQdX=X>x2Qglr!H7jAIzbT7S)wlrKtbFzoTX10rmMK@*N%?R~MaTt~-m?
zRiKuhyLRzW5jQTz=@1T!bo-JDI~=UYz?VZs6`2QtWku*998^3DXTmiNVG)++kO+su
z_JNOndts))gTR50etuzwzyRyON8jhsNsna->#dEi3T%YWwoSwB3>sl0@UcTQ0qu$S
zN$9C|ADV0TrNwqOt+D%2%+8?}I}iV-8)4dJ=hMZwUXA-3(0{u(9?1dEc8_g&b~XHXfub-GOFBRzcA^j+^-@H$(ahdAiPsUYg0
zA_4p`2NKyekw8+S4Q*DFZLa}cJ`0+hNrm=0DzT$9*;~$xV|2c~fp*(Xbe(;c
zrp<*gKfq8602*kyrjYh&0brrnrv-q8VxQn|1US2UjXoR=!em{p4@WJOCtjq!q$L(E
zhWavE{0(Wl-a#|*E#!K=gNA4Y)#ykyi@H!3%aN)B(ZUb9x}w#M`FSl}A^ixwwGZD)
zrq=ebTs=&0alH=tDp$1QXm5vToI??N2Mx2&qfxfW!}Tb<)qyd71RPe3)42$e_=ogd
z5E}R%APhM~RdIFQ!*cWje7%@^T#l|ks`f5GZ)sfZ^A$LmrFUWJi$VQMDc`<~itH;i
zg-yXqq7XAgVePr2ii3Zur{{vx^n$Ot3%-g4Z^DApdR_23EO0ZvlgtPbE>iCDH2Ki6>!s=p@SijQtl5jRiW9>|pE%P%0#&6Mr3OJB?6czs(OF|MRFeHJnXJu0&By54OL`i~xKtP2d8OT6L;$*^N)z%eT
zmA2N}587JMR%)#q!XU*3Yl~gKuGU(u*3!MTwOZ|7zW=%R&6_uqp!Vzc!H;?O-FM%;
zXTRs1duI6BzrOGU5luG+ERupIZS5JDx-GmjJT<&4t{O8sr#5cxkH^9t@ujhFUstrF
ze@2ruN#y%iY(O^!CIX1m!d~Zd}#a
zvSN92>rz3YSy1kx-k$z=xF^0Q+&vI60AH4%Kz~=bFS01y(S^xI=vmYntGi;6aOd*g
zj&L_-%U%`T+7pfs#4u|1(4*!o9}3G=?(_}wFi&BBN4Tdu+7kgRJ0r1pB-Srz!M`=|2e@ky{hoCVjT5OHI1ex|usPhZeQT_Dpr3^mImI(Vnf#06NGRO1-`^?GXkSbVmB)
zQE)KY+p{v<54xw(DY_%PH8OQ=EE;F2(gX08Kiu8d6&55nKzy=P>
zSaKm4t3anM0Xm0f*)*H#LGwAz3?nM^8cOB?3CP*d++4XPn*`0V$)YTauuxD>sa7YbQ1a(ji(D^*7
zl~!2P22pfpO6RUk7t%^Vc){ZKjjI>0TfMQdb#-&&^5(`>O7qK7)J}hI!Ud5%4Ltp7
zn=T@dv2;!2@{1N{%(1a)@sh@imam5DdI;6Fd0V6--oOy9v#FiHXQOWb;y%kuPG{8M
z_bLZ>F(4P)bP1y}j8XAo!4Eguw27e{p`mmiCjn$~ZnkL(O=W8cg>N0$u{jcR1h!Ba
zvNhpYlm*!7^mno11jx|L=(4Gbsx8_ksLZAHP!=RWQT@gan~G?7HuchF7C}q%+}D&9
zuqj5Pphat!HLqUG@WpKk(Wq?NNxLoDRy4U#HbdUbmQK(L&zq{NA+_dEEcZOt
zwo<*+wz)qN1A`hW*IV>4;OC;f66%4Sx;qk}{q%8*4tRw_y=&7a=#wyJTO;wc(aw06
zps^m9hFqkXC;OC5ck+wbcyU=Iy0t4Fpxfy#X7}9?nTlrosa(Sp`;1NZ&>1#H9oxTC(RqkpxY$24PqNzzM?0?(zE&4V)YnieMA9)a5X~OH_!H_DJ+NIc#jKL->BV#CL3-Y%AJGf2LSSD@v}c`i(3<(lkJ)Oy
zz^#|r@L|j#Xwvb?hEe;eP2Z;gw|-{RvlQUhe__)vJxjDRRex>MZ|JuOc{+M~IzUsn
zxuC0eUpWg+_~ln^`aS&tBBzC-nZuHPygt?|aznmv(H|j8uEeP^OCvpzSh#ydINlYY
z*XRv4%X_)?Cc6s1wdl{le5g1{iJuBF0`wOBmEZd|@92NGDM-Z@{ZmkF`ckdEJy8`y
zu>`x(&Enl15jfzzJz!@Px@&}cqk>9OOw9z7`Kj3c_E2G1pg+7b(y3s?{-2Uj*DeWa
z86>6udz-}m#8F{Eqy*wrc=}8DJ^(=yS=_QANc^Nag`2hvZ?h!7mv4(wfEyjv*P=c7gM>?6FNZ3ST&G;7v$()_-95IurS|?~jCW?c>)9|aA2haC*
z#D&x$i=fsOG}$xF+X47*;NozA-D?oLi;YKx2c48Zlj4B(&ey~H6^M~1rzG*Bp8kQp
zzFy>aI@|gfW*8*bGG&Pcuph0x@$x;9czF~)X=FzPzFlWP%oPZtXNyJf&xT--l8_jL
z6{P6x(NP3@`RpsWNtPsM*;8=45%mO+0=vKx=cjAT9;8Bc*kZY8f%gu@TovgUKo(?A
zOSlJd0(8RlJhY^wKW?xD0`p?mE;p`Sy&@9Z5$*2>zFFczs2L~Gnxg%E-QhheqPrvA
z{Q=P`76!y>vBnY?CHIe^Cbz{}fgLm-nYoVbsc9J`&4GRgn5n6U3eWZ8VoPjD!&67%
zwzx!Girh!!vVm|n9Pcz5JHdM8dRF31wg}U7kYu2*6Pu}%(ot-LE$INYp=JHZwK*Hh
zQ1C-#v%s3xk7>c2PJi(b0YHagm}{Up+a+j*XTG#Y{VK1aDWt$k
zB8Hf#l|WF7qkiN*usXL?G89XI`DybAn*R1nIJ)Xx11pG_4TyQ;#e~TGI&*kO4e=rb
zB@;#DC0fNUTkK{&_&d5I;TZQ^Zj1MDTyG-X(#V?XWPaWF9#e%oJJV1B1q(9KLtlw^
z$4P$ymb_J5ZHsHfwQ6yso3U{v$9s`s|JBKti5qMxr?D(QH`?O;v=_7nR*R6py0aa&R3z_`}q+9aX-?`9D7H_Cv0(mJ#JI=fc?7B&SSb1O{3zVEk32kaE}_p4fvM-5TCKd
zJ0*OLX%E0<&JH*V
zRG6f`n~Ubj@Z2?WuteT5Za>E5V$p@3e6=@wqaqlkjs6bKU1Kz6^^Q(kS`XLxhotHj
zdDqpQ@KtUXU$Dgq3V_tRIK#m`kK5u2?lHTZ)P)cyZSj;q%vZ!_1>0;hhxxE=+KHW_
z5*jHgr?w%_UYY8FxBj811*i1_#8`^aeh}Gq(7O_$t5$H}x_pXMic|zM&|R#iGfx
zLzJ;G#IQ}JWgk+bE%D#TsJlCXaybTV{sHk#@onDVz9VRY$GYfgGL9+MBbNoep|1tR
z_r(t^@oaLlU@$XX8e2RkehA$H=h_D1e82)Sq;Z8)Vvqz=`+aQuJp@c1H7O4cat9ON
zw!ny5lrwatg5-)Re<`
zm*KsIDXun=ESA|-X2?C
zF5d%F4ScZ2WzZgj6j)b!w^Fr|dXfa`3I^$Y@)}EC4RfDPWi`;2*UIbIm5ju34@>S4
z6$dYxs_+wI;5`$#kxzjDBokE)wi(*NYi|#u`axTMNPZY&`!E;!u;HiB<@wPE)9?|mU3aU#R%3I~_w)_}P=9Tp-
z+_&GB2UOplRNp6Tc{96hIgEufiJ)^lJB-R-A|H|hL1)fXzvrBcRq9S#9+Y=z{bPfw
z#_)r?ZMuy<3cBH3NFA&RnmNQ8@4QO-nZ;n(v=jSIu!1g|w{~csc=0>H@os0FJ>)!m
zX!lOg1mu14eoKBnxl<}Xs0E2;TRtEkgvjrRLIzYc*34rcw&h{@2&)1gviT~SD^bK@
zbg~III@yM!4V^-pKl@dGzv}N-{r%dy^Oo3;Em8Kv@XCHzUfId5PPCfe1v2lBFwFfg
zf&21a5WN%mlHUFZPW|OGw)~3c)IYtxVPjh>kNKJ{zs_R{Gb;nyT6x-U+Va2Ux3KNO
zUs#n{JcMJpv+dTIL*dS17>s4B*JMw;SmNwlMjiVN+yh
zv?HRoV%{#DIL6{WwGksoII?5LHF+MI^@x@-!G-u>^nE^2y!P@UdrFmi#3c
z#i>D0T9DI(Q(!IF_9PhyEY$uJjzJPc))bmc2iW`P;zSRROYzFhak6u!$EF@a
zKYSf(dd~@4CZRAW2mSzuE1Cm&UP*3jgpUXx0Dn?+^2%)k@Cg_}V}xZCdu7`Tw{46x
zLhuNaGMGHrPA6%`p{AZ7eMo~vlg$O?s13y*UUjr>j4{d`%@4=Ji*>RdW~2ggq#^d^
z10Biob_I-a#ste4?-iy@LfXbe1JRH^_lG?7Ak%_1LJpg~)3LL(p_wPGu#HNi3hqKz
zxL=h;VIQkN0vnHNY@?PR4Ug(4D`JryIOU7>bw_c|fB{n(FBqLlCjGlZL%wXxu#Iz!
zb2%7*9ZaLfh@q*$wrvk~&+MLo9XkIHiRs<41-NB}!%1nB9q_2LyHS_vpkcf1W=;wC
z`}pVpSJpMQ;89?@BMhk)+b|y|Nl=7lEV7LzRdBX&dE=rBV7ZJXw)mU)yWab_$RVu)
zlm{SidO>CxbcRp`hfijCi*2+TZLoD(npPlh80k!cTE`}HgI849Jxyj|QaX|$RxnWX
zJb%2*AHU#_ALGNg$TrsSaefZ80|k2v!^jnI|2o@f=cr2^5QO=Nh+Pf@J=vQvq$S+H
zohb;SsyDD3#8go$GEv4x+t`$>5Lms3>%em3$=Y9iU)Y;0QFZgJ802>9q=MW9w@7x)
zK#ixdm2>*n2INEzOXnKfY-76tb{LQXXygzw3XPTDp#|7ISM?6WIwDJuidpKf4f_32m9y>BecG@EKaDhx((#VS;H6lD`{
zT{&n=vT={nRNUvQ`(e08fvS67NIouPRL@Xtpsv_a)fEMc>WV{Wbw#D2x}wfdU6Juu
zSCkW~D|`W5uc1jaSzRlrQuU*>64y~&@2ajS)WkK6S*Ou-Kr#b&hk=8@b;Sufr@e5d
zG0Z+j=RHCVCunZ_F`EAfHM*@uCulMHmOetuPSE*iEx(}ZFtr?}RS84W@^#YMi
zZ3s>}F^3HpXW|e(qA>6w@0o=ED$tSPpH+2?wp96!($=aI6a{eGk5V^a>N!gNxC|Vn
z_u#VZC|!x?t?h>?e2m_El&(p^IgY6<@-W}OC|eAp;i7;_L?Mk6MN}z<(|IE3!h-ea
zI=UX~3Qp7DlWDmQG69vQ!m1;5W%Y5oQBq4)jgg>zsa5iLgea#RF^&qvcr|0We#@B=
z@6)Z|FiVm}A3;l^jUdfgg0nxx&!_
zM{iD%;)agH}`j4r8)2Q3bkK
zmgTxE0LCrUWr6Uys6hS!#`&RDMf4mPX5t-GvpE3Yh3DVVGD+%C)&fcYm1<_d@K<dgL=ct-xa)x|03HnvY2c7ChL)802
zz6AZQ9>V5Z8}gr`B`4^$b|CONGXZ1&bb{V$uMYW-(O>ESx~GFcZ7
zQC@v^RVWKRq3kDh<6*#9PmR<>|DbNV0)Larvj(D1;mvh@Wg0m-|RJRHlEhi4(bKcGVK9EHRWAq&sa1o1poix)id
zP~+lKL!TA7N*-z)Tqbzr0d=+xWZQueTeAXylP3rU3=B^fM{P2Hi?2@o4&wN#T29-p
z0(ZFrcew(WbOjFSvcSAT2q!iQnDTmO;e)tm+cg~`vUNY@R#lglCB*PUG_EQkMgWc@
zq9o+2P6+glulGZ%OK&KmXB=Ikr28HEaYo1=f1#-Hm
z7Bz|{)0H-}UQburY#^EriCQrQKuv<)O%>BX6@V*}``irAFQWUDY4oAjI$Vs3kpn14((K8ahs&9n6<*`OxV);Y(WEJxssho6IJ
z)ykvb)?#dd@M2MZx71nSW0;=znAzB_cOIb7qheW0%_%CVIU!oH;EH2nWkRf~s)jdJ
z4W}w0+7D1pl>x8o5HLI@Hl~zg67S4%FR$yKv8{Q(k?FMl&pbV=Mm@^_~?LrKs{^^2tjn
zTW+Ev8Kx51Nn_+z5ADm{^~(hgPqCU1Td`qj6S~!5?UiHVriJ+wwqu~+mtQ_pp%n60Kxh|3{NdzpaR3y!i1t^<EiMk68Wz!uA^E_jMW}-+(du6Lk44nk4_Mz|%%-vJ2j1
zak~O<1k}%=Ggrzvpd5g?k#WP3MvRg!nHFO=*&HR>%V7^plV^G)#s;Ifjo44U!NFo8GCxr`=m2+%BdoPa;O^AG4H7gbEkB3J1C|9+*B)e{f*(+T`wpxc?+YGiR^W_6WVL_}yanwXd}xxr5COwx5Ib+9TpP{ykRnsCaU16$Bf*+bZ>{
zczQqOsdvQFEr%%ogm@a;in#um_;O42Q~Wfi`lNWe^$^+os2csPHP{|cRn-6h_S`CkMqk$Zt@db(*C+KqH
zak|!cl5R9k(k;eQbgS_+9WcJE$g)zI;g7ql`8eFLu^>zZa!y~P2f*H1XIC-kVlu?n
z#W&Em9hOPAcA@Vp=ribA#3s5W1ip6UaAp?UED$&Eg!rb~R1M!T@vTf2>FrzdH_w$)
ze5=Qq1umpwQEAnLTPEI;5Z|prWcocMLiSZn*m=vuo!ph8k&3j8XQ8D(paSDLYz;qD
zxN19F>f&0eA}EHg)D3J(oxnzj=f#hl)feK*Vje(L^}H%ks
zEc_PBi%4DI$b>7~o%wzbT-Z3qU;=;4^C@v*5gS>}844vcbo(*!k`ly1biSq~hh9ey
zZd==h&fiwU<%HV9?c9UzsG{&O@d}c^)ekK{AxsM=Qo&*GhpFFr!
z{0k&f}by
zmw@z2kP$j&v6(AL5l6)+zFFk+%|5E_JS|mQp<|uSnqE**zVCfdtE(yBcMXm3T}LIp>pe{In%vjb_9A4VEOJ)+7?^^L
zJ57WcKq|7RO7SJ=51I*ygygW){V_Qr#VBnd-cOeA16cBAn&7)dEvb(aCc2_F(G3D8
zx(u7>GHjy5Ff1=efpsh$6Oo|{!0i{v(j}RA68Rhs1Q6yjkog*@ge*Hm=T#k(lOg0{s^BMN}ia80nP+>BE2uzR)^W6(f?gu6h0FwuS
z$wSC&KTL~!k9aU?axrOgIn?BGs7Wq%FlmxY989WQOi&-~2+!FtS@!Q^azQ3fo&+XO
z0h2ESlT*Ot8DR1iVDeR9^7VI*i7RVOj;w_!g-MHx$!8p%I2n0Y!r&j4S0&_y$SUKq
z3Oia-_AUYs(l$61Jo$bEuwMY!F9GbA0rpR*%J&LQ^PTp9Jl!R}&c(Am)46!Iz|&oj
zr@J7JkZTcEu^6p$HTOvlxiG##$qWMaBeI=k#yTM{fy`_?D%(|`s{uj(-k`ZRAvfVj
z3S-lxM`bB}uaoI}gYtZTqEWs#X}a$%&|4=Mw5QtO0^ZjvaIS+7l+sU!)ZzU=xxM8+dP3K>6^@>`VW&!SQOY?|&5;K)>GCjNhriF$-do2!{A
zZQkbCrXFyn@2K3y+Pux>OhR6!GF~@X9GBR0Tm_gTuXhw+j=aH9fI3$J_Wq~X_}>njg}`PJut5UHzZlpo0X8~`
z^Z$d*jq?4@#_-OEMgHYVhIJ(4@w(*)Xfh^&|1EDqiw$Cq#Fr5`5|FpJ3*3);wkq=#
z^Kp)UMDAne`%cJP!Tj5f%6+P@`l$SMX@oD^5j(~qPD0UGjwgwbi
zOXL0PsK(z;GyUsno_~V^SbL=NT{)QV0zBUZc)kO$iMnUr{^60zPyQc+?om1o`euOM
z0nj@EdIX?v0q9!+dKW;C{wJWLO8*Xrt;a!gb{1!9&!vFRtx*vnKgH!Y<;kopN+Hd$``nM~Dcn`#KDWO5J
zg|2p*ugnM|G+&t!Mrgh=Bb*eQugr*&bA_Y{Ke$dIWZ}53TxF`WP-0i4GS%#l-X`yH
zkotQ|!4_B!4+bg#_1^;w4grIE71Y|7_k<5F)X3NXBZe9o8>O3QNgOPJ4cuae
z_yKFGH0U<@SqH9H@FbUUOA
z3%Vx$V*veefc^xC|0IZi62$+aLZgq*vi?KjGivOz&sV5fE*r93He|bO$Wd%y_9CuE
z#fphAfM|cv44RM1&(-Awtzb4cZ1iMxJ}Muo%jGWB$}279NBLzzKVOHH27Ri(03E7P
zn50@!s3@2d%Mwu8CBJg(Fm
z2^lU51wtd!YV}mHr2jb(@`oVg^Hl2p5l!;HK(+oCLChb+j=V%m{Xd}<{#PjM|0!+r
zpQe8Q&*%#O&*>JwJ}3JXib;U1E9v`Pnb|LoI5M*z2a7sR+AkAmvCQn3$IxO)-!C6U
zi;2A-hmQeeZ}!VCpv9a0ejG*yKz?qqlyUn*@-bX-UQc^*Oc{V`m(rCutPDWTCQ(0*
zECX;AYN=brnE5arohrs0h9a2_@+6)X&{CZCJ%v^wt-$#mn~Wml(DYf*aOy{C4W9)S
z(=C{t3(H0-CV$b9=?Abn8
z#V)0aT}ln
z3QV1+5Du6={!vZ`>A!#-dlmZ$DPB!oISW8NVu(+@Ye
z55MX@#Qyz_dLJq=%l5PHg#x>(YR-A!jqV_9)VEV$scfl)j*bGsjSxV#0u{6~j
zM{~`Iw8)%9OU%i1zF9>rW({3xYNu0gCmUT#Z*;Qk0A2n7Whk7MyF@;x3Q`KGK>m={
zKqjYBp3_s1i@}-Q#k2%*v
z&}1^s$KN$~-ro*cXAKBeaSo&82Cn%E`ffNTUrF;+l;Jg(({QszO{hJRWaQ=iU2yO@K(?yOWn%deX88qr%ZfdLf3Ew
zk>S-fTs~9;B}u`%CPRf%x1oamWtl<0O23(Xfax;IGh;Nu?58p_?t#lw?&gLJC~|Wc
zGuoxmXop59d~*pTw8k-+@IQH&Ct(V8w64(bM>VS>;4IA2$veJ@H-*Ndn
zKhhf^G+sv`s|oA*o{$L{euFLVarq~d?xG%9zE~13izg(?lHtSpLvX#0%YXR@C!Kht
zW=a^okagU^PjO@#-V+e=$DnwR(`fSvnqWRj73N8*LHiu@DOzBD5k~iE+F*W(Hk
zUx4qN;Be0Ue>jQbSbBwxNQJ*JH
z8l&p-;dgC<_f=PLh>ipcf@Wu3VRf)@%6=LZ%;m-=_-wg*hZ`mEO>u9ug|dPLrJY77
zFJY9`=fSng3*{RLV{CnXD3CBF@24`pRv(~XC_j|{gs=1BDSJoeY~R;*h-Nt>a?$Va
ztSdT10X3qo$f!dGzA%&@9G)C~-Ea{c9xOU|=2a|_ua=vF<+9zyr(ahf0PwJbXHYaH
zUo3UlT>y4xhYCUkDRwJr48`r+L0vMxPdVnZlyClkiqIZqJ_l|;kFEAcG|PN}8q61I
zp7|0rnlIB*^C#f^E40cyP3z5{QP}(iZ8LvK{pPP|xA_~o!Tc@VYW|MyGGC=5<{#-X
z^L099{)xV6zDeIR-=dds{k8cQdei)?5auf)$NZ-#Hvb_;n*S0L%`;+#CB$q?Dy4b}
zE*OdWq(q^`-#fxyC+d}KL83&x!Kr!db!c&F9_}StEL+%I(c&aMZv*9yL{*4FC2v`9
z_i~I`z&@L132DrRX87>m{Sj8eL(Hbo0=vXz7Xf&jldYvn3RX}@i_Ln)uJ)Cf5yFb4Mo9a-k&Rr|(Pyxe@RYCuzIv5~sudcI#{<H>%0B;#2y
z8}4xcizJM-*9Al{5VQ`S`So?#0uOu#&pdx!mcRh>;2D$v$`@0f)Jk~fWR;NLDka+*
zP2;RFG{GvT8fz>~NBdlBJk7Bt&{At6{vU-&bg?y=B31=;TU8XZYVbq+wR9t{x8nX2
z=)cF(rB*sfyw4$*pYAc%tMkiobR8;;I1e?4wkZ)a!1RrZ)jqI#jdHR4sLnWFIaVgV
zCe~0I&?OF<3{a`H
zi>j>MG|SpUYplyDZe2lFSy$3N>%H_b>uN=t>okT+05BOHPy)b0aX<+G3&jB?0POZ3
z5L|@sgH(P*ol^Q?ylz&fl)Q0XZ*+pD7UJfsj0jp;s4(eMeh5qJvlc!uTbB)!H3G2|%?QBJh=A&AC@DP-YW
zht_R0$@-{5Qy27kDqB@>E^v-*3IS{pyz$R+IUscKJwO<9m>LttmXmVga(q3o@PwS$
ze$41vj^65o5%p9M>80<$(w_qL58|h{@1inGJCKMpc`C;y1Q0rLG8bhM`~xF{7hI$k
z{EoBWcd+0NEVyXM1s}kI4`RWGvEX4Wctqhk)Pm3Rf<_Mjkw&l4hiero`!0iz)bGod
ZSIGAnaTGE4$e6lT$tmi3i461ge*hy3K^y=8
diff --git a/libjava/classpath/lib/gnu/java/awt/java2d/Pixelizer.class b/libjava/classpath/lib/gnu/java/awt/java2d/Pixelizer.class
new file mode 100644
index 0000000000000000000000000000000000000000..b0a86658905720c637d296061db03d244cb33845
GIT binary patch
literal 189
zcmX^0Z`VEs1_nb0PId++Mh4mRyi)zF#Ii*F#PSj_!ze{RAhRMhC$lQGh@F9jkwE|~
zos*cCuJ50em6}|_$iP>WnwOGV6r7xxmy?;7%E+Ll;pv0TB$x{4{Ib-d#Pn2a%`ip=
vuHgLAqU2P!%p9OjKDcFiAbZ#t85kLufevI~Uok!poTk>Ph
zcg{WMeDDAF-TT#dUOWR}wQ32%qp+keJ+$&h`>?&zK9V;?OJZerkDX2>)6T|B`mmGD
zJJ}$73K6p{WvBaAZolD1rzfwVH^=vMZn}O`{HplQZUq%r@NVDM$p?F{-_hB=wz?V45bs?AI>_tOll~f%%l}U{dTIi
zJMRoC1bQ-=tZeY?-^??1Pd<6r=}h!FT)KE#78}Z2$R*@(Z&xOhQn+Z^?OmDFh}_4$
zy0~|%oud_e1IhGW8SG&*B-4A`8HY$w)r}dN((ZE)Tl>;P*Dv(0%0`c(jZn)mXebO?0o;q&B9JG0?QBx!g~dR-
zQ7sHF)@odV1wqgl^(6tO2~^>-P9uy;q28lWgGdk?7+uqyn&S8{)?=-l*`zT8wLvg;
zrsY)hei)tZfw;y@%#x$;)vz!th-(xUPsi>;&xWzpy`oEF9_G_|`TiuGuXN
zw5n`sx?sc9^KBw}QsYLvpBZK+5(WD%yztiZ4()R_8qk<68YyHn21WU5D!;3YT=FQZ
zkplrE$jb#vh)nO|yCT-e<()XJaRjp{)FAO`n=_mj8;)pb;kX|3LNk6}<5v6u_s}y_
z%@`NPAJF(9ZWo6XfH%(g8D`|sA>7c4J2mdY-8@a3iewDOg^f+q$5l}_VSTU0eWH<<
z8i}MI*7%4>s*8+@(*B`FwJYr(X*__BDa@jvPBzCn(w)iXH>49?b`K3t0AY}b&<|-m
zjE^%k5}9HOv0lB4!Aij%-&gR+A8X7J)KM%B3#Qkkbck$oZZbv60pcbLjYO>F9sayz
zgxpn%#%W`W#$bu!{(i|3g}UubBb!)MK5Uqs
z7kb;a46R=AweH(#cuCy=gyt;
zet;c=#N3$1To=erk*VG(_
z-gZhZz$i3W)roIwdJipi#~5?{A&@iuCa%U?C7^*Fy*?OtWkr0
z%cR+9DEw68Ex{CTZ;}Au8Cg|{U*K0k{8C}w`57`bXf^%=|49?{3}tDBe7Dm#z=6Uv
z?q}Z+#@qPsAbwqheA8@R!%WclA90kIotEtRUyc8B=k~D3a!xY|6bqx|gEVm)5-b}b
zablcsK*^L>E1yKCFHQWEg@9H;aU%V?i7JuEqJ)28NPKaH(U`Eb;`4K6&YM5cA
zYBYW(xzMR*XjLl#<{4QXREmb*uCd1pYYIchF*&dz4-k)F)pi1^)2?8xdCnO2Qv>%b7ZVBcXo#b^nd$I^HP=;*w|otM3h^Pa%6NZWk)j-fpo3A_{-Lr3&9*6*Fbm1EdQvXkUh
zW7ranp2U_hT+OAeT-r8wI%U_n*QIKD1Uu
z>ngkx=(mDLF=xdE4}5$ea;GMc7V%rdqliT7!V|cuE_@P0t>L;b*ROv1+)p_S$13@|
zaU3_R)+%zeDkpJEta=n5iCUEtxGknF%?<5mK7}e7E!{$=aBp4JD_B%lHI6%k!A!ZN
zETTU;6Y1-I&dgf
zY1PE4&E%0|=WZ&S{$p57Q$9-5e}b|6Nt*r%T!JUD3ZJ6KpF%tS6mdMwi28Hv!LvAs
z=V0S6(TC@eCVd3Q*}t8n(e?QN^FXC&gY~LpJeNu1W
z8^ptJDnF}M1m9J4_?~LOq*{s}7*{{%y0hSFIu=JMC8LhiCwM#Ko75*sF&|0&2_Bc|
zCG`aJ!*8f3sY3u3LGCH$h`eC>aE$tdsNLJtX_UEo5MRNcG2_D2;u-1~VAejyP<)1z
zrbbUt=jRxd58&hY3$9i3)G|=@vGSHu-k1y`N-=|uV|8Kq
zYl&D*Va7+CMJVXO|^zW)4J3bVNkAs(d~^8t%7h#_uNGd>y7vP_mB0plgZJ
zuk&dolj?T-kd(aI_28dLRWX(JGD;#m|V^THbxsFjBFbTvL??M9I&1jWE6!py?
zUPl{Ct?Gz2)ThR9Kyr#WK8E|n*!AMxar~rg@p-%r>I&lO8fdka`n0kKZby?^XRH!+
zZ!TH|Q3Drj2$MFxy
zw#*4AZj};>{TA=>$Qybg$6B}&=BXBMhd1W)n#3Aa4a=!j$0_{WgILfCKErGH@7L~N
zBp0y0xv(bdKcs!+jCU1{v^VDOD9nBCJP`9mEgv_q^8J^9ivMTB)@QxLV`K^jrAZi7sa*;`qi{+of#!O0lmYKU6
zET3G}z?*!rz$j)IWGJD=@>7c6d->~EIQq_OWxL-lt&VyhzXtDsUv(p-cA`@4LbbXU
z^VA-!SNoY+2l$odI;7P>+@h{$Rvp5F%I52N500q>jw=T*t6qFT_2I1Q$Ezxd*VT=9
zOT8bzQ7OEm(#)@ns^Z)D40RK`X7eHLnM5N9;TW7?AThxNA2Fa
zfYExqCSjm>Z63U2lyrIK|0_eW2`N%*hOO@W59zSUeH5;lLV~Ab*B1yS=O2f
zcw(%}X&QkdKiZhm7ZGA)Ctu?V={Z<{jD-x<`4soSq*@@*Q9r3Jk(3adaBb;xG@0A$
zR`UeZP~Ak_1Qms^r+OT20eya<|Vx#7j2r<>h={#ja0y8gC$%lA00;N4e?ru9r6
z%RjD~Wq}RpS6
zyUnRx##GT%T0$)Wn`@ghnUun`F_$-IQhjnB*XrWhrSTlE?deRWkCq|c%VEbE@m!8D
z(ZJlIWG=osWhaQmN~)OON*I&*M#3_4)(Y-em`T_nOvTQAOjFpQgy_N)57DT`E(((p
zb}pH<6HUcqTk`RIH?PG*RtBN)HI1E6A=0iIUid=T9kcwHNn1vs?TqI;YL_H??Sw`I
zHN>$^9#+It-L`^vW^BoL7$Vb)G3>}*R%yo*?zG;_?2
zO{;VHESYyuHr~~dY|YgzYFIiFOlIp>Jh$7K&f2E7HsZcK8&BujGTF|C*sK*Hnth1I
z*D;xXYE9Yktjrv$u?&YPjLX^i!$(DgXC}AEO~0X`;R~Y$NBFT^Vf^-nXsp1IbaT6%
zZzeTjjOutklT~P(Su%M{lNQbT+=9{j8^pGwHCEyn@;#nN6acIK{Hfb*TIra4oQ5Ur
zRX9OomE3MTZ+Ao~`sLMXjaD$A{5)L3kbH>JG41&g17SLa-F-am{wJZGJyJ<+y35l{2D;%a1JEl8kW-ntRO{8`%
ztr(M7gonAE;C94&?1g5lr;FTVlz(pLcI2TRNyjw2kClaaGhc9>H|e-APz3qQGJ6p=
zhPkJ!JJ%teKE!?M@bIwvG}cC*oMc(arNk|lYg~aV6(*1YOpl||lgY=1DpzYCKKPQG{
zO)0k<3g3#`{kTnGw=vV~7c!T|M%+P$wk1=kB0#LNGh;E6UzE>;SAnVljOP&*u?^fWKek0aVcBWX>UzFPU}(e==Q2O97#a
zlSKk-Q3@gL>fMw6?w!k9WYVn93QuVKO0t8yEy;TC>f1An-{5IKo>G`Rl2;9>M^jVd
zw|It0thGDK`{i5gcDb&^?lG*kAv}i{{CK{Yn#~OkCEqoECoXietB^G>Y5d-Kj`xZ!
zFKhe}udpHs>!o37N-(no#4$03vRL+KjaQ{yc+$*sGV!{`8`4S;i$%N=g(h7B=?2&1~i2H}xJTAln_O~t0oqi-{*L`(8y>h`DYHIAf3D)x-R^UpMfX&l^%
zWDhT4SV=^8S1zsGf|fTc{UWc?6Hn2Re)A}en2#>Z+X?mtDxg(Rg}6p~7~a7^C>S!C
zwq&}qt@e_nbUu@csz(}vIpTD-J2Zd^Vmw09c2NpR^Tg4GKw)H?W1d-N%*dK-MrL_4
zviUJ18yYjRPcb9A6f?3Qnvtm)D65c0kI$OtS7I{tPvO(S)F=O{%he#NHo))chsS*f
zrkDBdz>JNUp*Lfl-!rVw%
z=x*#afO(NJ-&WrM_K9r4en$_XVF2?fHc~ub08Np|CNvFTVM)_8A_C;$K@Th28fxoh
zSKEggoJ_Z$Vl-<<4;EvIn1F+LBXcuX6LB5S3_O80#3Gh=2ut^PsBpiiZ+4}J`kK$Y
z6Nh_H?~hda-9tFa@~ubZ9$$Fn;VUuk*dZJ*R@MjlQ5LBT3?W__*aW*iP#NI-!t00M
z=FkxhMyw!(=EM+AjD{%9A4FQ!>wbKjZ)7rTg*iR%o@+2pMk`!L*tw!oKZNO(dJq}W
zv7>CQ3=ASCYI;P?w&8bVl8!Md`c@6%6f0zfuPokdT%^VdTH`F=5KeWhSQQOg;b_P_
zoN?{&X(fQyVLBoE0RcXXRQn+TJ{L1^9sxd|&ioPf$AyITC+rq4!E&s}k+>Ac;W8vB
zcj8Lqa1~Bty*iV{WgV`=Ik*8A;U<=mn{hjCVK%=NTPQuidhi(KCpq&9XWqqD{2TW%
z+U{3Uw#x9Japt*>!-~#S6YxEJUmQ&7Oxj7RQaXzgLx<8j+UzmX*`&Ca_J2wnDk#su
z+q}zpB+zo!g!35?0a|+nF5tT$ZN7lF^YP9XAj!W~3G>~kA9#ZH
zJV~pb;`vWw8k7BWKF`AQ#Nh?ZV-}aNs&+IM@F-*0ZlJBK8{B;>;9_3;{(b#_MAf^-^eU+hl|JtA;odZ`7FDpT~+T^iU>8jV5
z0bl3$*&EDdZ(tO^?V*E(<(>BxFopd%$Al4Q>33{@nPKWC`tp;eEO&J}dV4tN+3
zQS#Bk2eFOr_S4R-ob}Ox(-;im&LC~R%1|^!i;ut~oD0+LWq6d5rWSsz6-d}dx{I!=
zLSkMJsq#$eO%0$~SlR5Q)K|i(+yn=yuO?!GvM@zW8bzzBk$Y7^!iRkTzi%I-B(&lu
zR6*x~)F?L%MIuv%@b~~aN*Y4)M(vECsx~K2a#oI<9Fo${b6oOK=bWeB;|%K>%U`2A
z>Tw&2_T#M@USOX)@uUk;zvaJ?3i^Yekgj2c~(-Uq+2k_R?urMM#!7=mz!+<
z1b?CAAxl1HoJqP3vwwSwl8*`LCH#$}pG-P{(I@=gfVx7ub;(zE!Tap4OjXa+Y{EPI
z{~ouA?ztLKGe$iYf4r$xo>f!JLaXRE!s=xsQ7_2Pb65J@mS;0Qh*Ywr
zm?u+H>$b5fi?9WIF@Js3;>^|z;^Pw7bqpz}70~J^l&h5tieoWd9mhXC9ghZe0uENI
zuuLWR2aYy=b$1Z(qyg(-$Lu0l$e57jM-DIdFJ9QiAV1F35;t@CY}PjcYi~mH2_-KY
z82+CUa9PRk0S6AICAT4WH3>L{<~DD}e-==#+N_iiS}>8hn@RXl?U%~a{%%ZEJ;t_(
zbH<2m)dqO6ZKCoRjT5ZqlFS5O@(^^*y$U%$Wo0I-HV1tCJVW;JuidP~pgA6ze3uja}X
z-7*bJ6zrC8^qQCp0tFGmsF!Z)RxP)GbSx?^A#(D|}@(wo%$y6_7`cP)fshGzCtDx8G
z!m1KxQpH|=pC}(gil8oQ!5BI$8HusPDGlY2AZaNjQXGq5+yG_3$xme1gWeKNX>WzkIDA*y){f~XwFTu32
z%5-7=&qeshKI12(rMxxfudF7&4#0;gS
zGmeCmpI#zLulSQuMurYNzKIT|&lklaHt`6=LJwifXP)O(GRr|c?mq~59KsXt`4ro{
LN|O-^*v0f81=ks1
literal 0
HcmV?d00001
diff --git a/libjava/classpath/lib/gnu/java/awt/java2d/ScanlineCoverage$Iterator.class b/libjava/classpath/lib/gnu/java/awt/java2d/ScanlineCoverage$Iterator.class
new file mode 100644
index 0000000000000000000000000000000000000000..dd2dc43ea6b70d4c94ecfbd07ca4212b0a98f8f8
GIT binary patch
literal 1853
zcma)6OLN;)6#lLw$Bv^mCT$X$LV#jgTS?>8w6rvCc(}9;m^8$hK)Z?}UlJEZ?#N2W
zjs=f_8750!3zl@#MVX1y4$QFZg5SaKVEB$Kr5;uqk9^KO=bqPhKI!j&|M&~Q1*~R}
zQaHcq?Ue7?yLQ?BJP4Iav)piO&uw|S*51{=y{QX}0cFtkGcXkL;dR&cHp{m+?rA4b
zNc%i#g_(MybSrXuUSZhT@qO(DOuwyAP8J+D#rTmZJ~k<+MTL`Fw%2rZbGfyr-9Fb{
zg~4E})hWy=oJ~}VB?hZ4uN5pPl#0nhN^1&6t=-f^P&i@Y7>?&KfH4yz7*`l5mew+O
zUcpL^R1OmulXRy|q%p|3>s-##&i01(SM3d#z>n73j_t15eoM}g(U55q;~MXnLmQsn
z<5p*jr9?9qdi#_PUo|ldQ?%DiWRM-gIg~OeCM8Iyk@ebal+jbn?3F%Z$Mve%m5=olbvO7y5%4Edd9B$xN
z1~(N7NoXMrFvrKqs?I0eVhjNZkoGk(k*?|{K9pMVuoo0^jrNZ3=o>8|-q`=Y6|?en
zP%sxgPy033?sPP_m5q~AjfuuGA#u1qz8Cx^rI8YTQ%ebVLdhkDlB@#qd3l|9Hu#Jn
z&$#EP-DGr%a?G0UV$^z!lh&V@xbqmNx|sZ(juc+t|M9R$gC&;9jTO8|o5>Um#1vkl
zR9x{ZQPO{STYUT00nYq_ixiW53I{lQh-o<)hbTwZO3!m~{ScQeql+^Suxi~oKxDtV
z-VIerP?0Ooav2PnwtC^$x+wIyM16v{no?$fIpzF_9rdQE2q0J|P!9WVavF^}e2Odh
z47cE-fo*y`{@VBo_wgP4zKQpbCa&RnH1V&@EHExeH%~D_!NIde^#NvjrYR8zxb~C?
z_cV&pCwT8SWCwUHZB$P`JnC?Yy#Zek_b+h*U!#C;a0%byD!%9YwI6n4g{xeMy2%ss
zTDX(TM_QFV^=!cV7>|0b(<<8;7wFi*2Lc^Is)R^A+xcji{|A1Qek5IfB2qv1p)elR
dO<^hQ`Zk#XOtSVlQvV}rigJY{o1kpq)PEb+t-t^P
literal 0
HcmV?d00001
diff --git a/libjava/classpath/lib/gnu/java/awt/java2d/ScanlineCoverage$Range.class b/libjava/classpath/lib/gnu/java/awt/java2d/ScanlineCoverage$Range.class
new file mode 100644
index 0000000000000000000000000000000000000000..17636a75b434860954ab7545135256c5ca8e0863
GIT binary patch
literal 1579
zcmb7DO-~bH5Psf%v#fxX5BX46E!fsV<-;!us1Qv^8Z}}Xy%?AFO(#S&y%=Y9w}mXl;9+;>-S?T9XJ(%L@@MZOfN3np5faE&tww%R-`4Z`
zOUHF)D*3gtZkdK9S8ChR)~ho0NVlpoj)*{?i#6$-f3UtO%Z@-~=V7fbAXWuprnIWg
zhCrh1htjtN!!n#Dfp9ugBJ@hFA{B&jLPZx8f!-ojy5D%QF73zqx+w*c#adZ6OS*0F
z+5Z@EHVmqgD;}S4K_Fh2&J&kjB)ys`bwOZ2MHDgOyF=I2)-{nM{#^twx-BqrR7KoH
znsh@*??yoJqwZQ2fo=+E&547~t4MHAm?l8C1Z~~YRGiwHV;fdgpg)}{?vK*@T8QJ4
zz)a>Fny(oP^lH5}2W`bDFnNx5OMLxGFH&sl-1LT^CSu8qLEM)4axHZmLLOoJOLT%d%ci5wCpu
ze|F33Qr2n>yDaY+teSzKYNvRRRC?92q`hM5^}4Lbaa$mD90>_TUDeZ{Ld&E-CX5gZ
zhrAHW!nL$%vI;#UWx{onH%nHKjb?YDz9lDw9(pTefhHo@Loa!%2SOiC(g{f7l%HUU
zkc^FGN8h7AnBfzV`0QpF^ib^#F$@wNELOd?IH$5*Y~+`O$%hz}a^29MNXN3U@)z$n#)^p9eB1?TMW0+=>=#a=M9G?v4Fx
zp0APL#Em!Yz4fpXMK{KTiZt1MA?3VUeF@B?;Md}so)SAO|CJleItyXJeJ^5(EX!En
I7Vcp9FV$HT$N&HU
literal 0
HcmV?d00001
diff --git a/libjava/classpath/lib/gnu/java/awt/java2d/ScanlineCoverage.class b/libjava/classpath/lib/gnu/java/awt/java2d/ScanlineCoverage.class
new file mode 100644
index 0000000000000000000000000000000000000000..3d774a32384b6fe79a49d0500f4cff0470e8de38
GIT binary patch
literal 3439
zcma)8O>k4!75>iEpOGKJ*g&w2sRPDHLPFRzCfF_s*bWu3f$(EuXj7i$hb@pL@+2G6
zw1jk(McT|{(}u|+nIt%!$#iIoLP|RAqBCTsGwq_A&UDv(Hl0p?*pzd6uwFXS1&
zbKbr8eCO{w_vw%Sd-yv5efUubO3*WxUrb%Km+X{%qhyr++0@yLozG?S&S+uDaqT%L
z1izrgoXXkxxzwqdt4^jQ@XtH;tROYf2uM#AZCDV>EV{0fCq%QSopzli0_N-@7n`*3
zRu;1PR|Jyg=7POUwV9#{#iQ90Lo5~ChQmmE1`MOE$1WBfx0Eg9i(}cMJ(F{oj$9<{
zNQMQ-mW~K~(byE7j}~T~FrGns2-^jlYQ-33utf_U=oD<5b&6TnnLS#CJzKI%i$w!+
zaRUTh7B-`m_7g1c$;E{k$33Ur3R))$89O&+yIKA2Ee1zS5MlVR%R)D{gwP{MHdO9v
zo?+}puQuK*h(#M})o^S|2OG1n2`$XMG@oS-y^Yxlg06ETo1fJX`z-_z)Y<_Hp^DaT
zp$S1jAd_=!SMMFPu%WVd$U+!F-y2V!Jkc9N7MfxCZj-S3^;;G;!eTY;S@tOyO{deb
zsW3N=S~!MLfpvv`Pr2#5?y8_anvOLTbd8%EFplFPyx3@!t4y@;Z5>%trm!^T2
zIbq=?y}0pucG<~QPlhpxQz4ubL~10Ov`h0APUB@JN5-=_OfHtzXU|$VS6R20NlyN&
z88nV77Ur~f|MKZVQ7>dIT-Ckz=bhzJ2sy#_S`k*KX54iPZW!0F
zi-lOQOPP6ETsJp_j|FCkm8s|0^hF!&aCIDp^*od;EMg16U59nic*XIB>!q7)pq
z%NR3ix{GRBhjF;`3ruML)JLeFc`Awy-B?B(VsBdI0lMT1#N;m3Nf;He453cDI=+un49x7W4L&aJE=)N`cAGOoH&`dkNL?2-v>TH
zGhdv}51)LU_zJyMu*rnRNj^eTGEv5SoR3tT{O(KKGiGNz}ChefF&X;IHhhdL(RYE*jFm?YG3IiOC+pn6G0
z)Px*UlX60xk<03wTv6vGucl;4U69w+v|-{AGt{@L(;&CJq3xFm4(&IQ{Lhi@D0j0(f)s7IJtHJ
literal 0
HcmV?d00001
diff --git a/libjava/classpath/lib/gnu/java/awt/java2d/ShapeCache.class b/libjava/classpath/lib/gnu/java/awt/java2d/ShapeCache.class
index d82213949e56f591d240a94085397ec36e011978..4cc1fd2ee244d7efe5919a78ec959c40bed51fc0 100644
GIT binary patch
delta 180
zcmZ3^a)X8I)W2Q(7#J7~8RRx{@i4k`6y)br=49rjGBQZ}WF?j*>L-?$=%=UV=jyws
z=A{-T<^&{`WLPsYu-RnhWtP}6GB9gshA}d*IOnINaxpM7i1RQAGl)z!VXS0ipS+II
z*iVo_2xvYd5CX-4q$rT559Tv4uxf2*5Zee8U}BH}l59X>1_o0GNg&AsX0tL#F-QY>
Mj0`eBl8HeU03J*pssI20
delta 111
zcmcb?vYdtM)W2Q(7#J7~8Dutc@i0!dXOv(Q&9nGeMFA^%1mgez
delta 14
VcmbR5KHq)AOg={E&9nGeMFA^T1l<4t
diff --git a/libjava/classpath/lib/gnu/java/awt/peer/GLightweightPeer.class b/libjava/classpath/lib/gnu/java/awt/peer/GLightweightPeer.class
index 679f4e734734524177260efa9e85b4e0ae7cd136..db76d831f433b5f912e56032107611848c94102e 100644
GIT binary patch
delta 426
zcmaKoyGz4R6vn@kwg#J0Tc=h~6kHriadD{lqUhu
z5eIkc`~CJ`aB>yT&8X<|o!|M+IrrRqKP&Gu>E74j5r9d&?WK1$szhsQp}Xt_PT2_k
za@7btVJ^9~z+2o9jz1n7(-S%&XIu4#9}20}hGm+a@kAK;|C%aZ2!+3T
zczygBjDe7Vf)rH#h`D_|qvX4UEgW+}V{4V8EGfwysmQYSu?Om5fO(cP>F1E=D5-~*
ttTUZpn^n>&QzE7_Y$6%cIWBls!DXCX;hN(h=Qmm0;Q>WF;u){=#cvS#Z!iD=
delta 95
zcmca-`_+o;)W2Q(7#J7~87^+*+Q2*)3NZl^NJ3ya5+NK$3ULX6Kn{=u6e&an
zjNHf|2yF#yEf!HB;v%336hWh44{f!rLTgnj#j0(!tp|O-C4lXx|8$f6y*F>(Z{By_
zHM1Y>cWpl4ifa4j$T0x@=_Li1Ku>eP7iZSX$OGBShjc$B&)D*1@tQz~nqcFkg~5i#
z+4C3HH+tm@vdxyS%Gb=%At}~5TfQ!TW-c)M3tRqDzF}x+Z}Dr>cWAkF!Ir<5e=sdW
z7u$cd&Q$qxil%&ws+9lY{=dC^9Z{F6YcxnOlQlZOqmF5B`W`LWqJtgpT-AZ9E1
znR#hgYQo=a`FHo*0%}fmQ)#fi+Ka{V3tRrfi2NA+sr;8MAC_O5@M*4wJF<~bKEhquDagQ~!dCt8}LHKJ}o
zP0$hM+1OA0%%{U=b}q81*qQgvZ4At+ZfKg@w8V>tsl=vHreQ=@@;IBuiy2oTl~)Dp
zsw;d{MiUg>B9LevNlDDGX(A2?M6l7Ra~o#OZJ0B0Q5}au&?H+ZAsziGHch2l&6gu?
zN}pj1zeseZZ?{Dps+{SWHdP^;H`P#mSCb>CwrRF0FRYPuHr1OK3w!pMZ_@(T=K|4V
zM^;ppPnuXZc4TEySt&E)JeWrdZE7^CsEb@=(_)ielq&DCX^ELo6epM3^j%Y1)M(vf
z)4g<``D4)lYbD*UXq8DS?h@bP?A|lCv8cSVk;CIf39YtijhRr~DS4eu>z%#Xyth#c
ztE(Hv2ODc0jg2;KGWQn8ByP6JI2u0IC=NCSCoNe}t>__vBqty}0}V}H+CtlGdia`F
z>7x3=U_))ABi~`muJk=~xp+$QE*sIb+X?ry;sE~#(x*6a_@PZdqTS~9k-72-oA#L>
zjNBxSnZ6}y;)I!8(oLLt=FXBW`JT_dOlBP_+@I(kbLg|uXlAH5xgF(
zcMxH{i#Y4N$!^JZvu#t~lGyxyMaDtACgmad;r{C{SPm@f!!T?+3^Ae|w&4DBi6w(s
zcOWnC!1rWigyhzc{PTY=@X5Cp@O*25kJ}d*4wtbWh|2iOf4}(m@QZO_m)O@GX3I~^
z@CR~weagZ6D}O%^$$vhJpItTHa$K$*pH)$MGK2S1lNFL*nMWSzUH%oM^)<-4f=C6#
zD;E-!8(ow{I`dh|LXJ`xqC6;OI!^h*mb*F*!}#l#$IDL;%b;@*C%-ZN)rH+6p;Q!N
zRL5^^(SLo5R|w|2t8>PY@L*q7=0Wjc3qLM7kIT;EFD-||Q`a5dokIzg0I3oYr8*-?
zB_WMzmg>R)Q!qkxF;`Z{r;ux8*yW?dN^}gnXB1hSS8hZhiImA+(`}Ltk^LM+9&*3g
zi8_VczX|(?VwvkianAT4_Jt@RJofW57dul;lei?fFT+9s7;O)ru
z%hM>!j13P)hixQXTR+#FSbLi%jKNvjq^|4QJeWP4154$?R(Xh4L)p{AI2{VmT@7cC
z7qZ8T&`%X3SB*lx8jT_qz-ToFTYox)9GrN2&(3Aer-SmAgZqAqo|@GNOclHREc_5sgnpS8)~|(kM#}X2u6zulurd_
z#QIrr!*ium;UOyAfyjh*exy0N-XCaTZ>)w#twATX7Aa~SQq{(=!3^#^K-x8fNTbo*
zjhtdnqd+*{Jm^eg!X3)x?r7GpPx#-4#yW;ZY-2;)+0YI)^gTB8eKxf7|1o49+t4Sn
zR3Jp2V