diff options
| author | fitzsim <fitzsim@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-06-14 03:38:34 +0000 |
|---|---|---|
| committer | fitzsim <fitzsim@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-06-14 03:38:34 +0000 |
| commit | 9a8abce4ba5d94b8fd01bc953895172af37da756 (patch) | |
| tree | 4ead311615cefc89deebca761f0deb7edf23dcb8 /libjava/classpath/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java | |
| parent | 718a81bbcc48249c65240e8e0eb650e465565d39 (diff) | |
| download | ppe42-gcc-9a8abce4ba5d94b8fd01bc953895172af37da756.tar.gz ppe42-gcc-9a8abce4ba5d94b8fd01bc953895172af37da756.zip | |
2006-06-13 Thomas Fitzsimmons <fitzsim@redhat.com>
* configure: Regenerate.
* Makefile.in: Regenerate.
* configure.ac (--enable-plugin): New option.
(ac_configure_args): Add --enable-tool-wrappers.
(ac_configure_args): Add --disable-plugin unless --enable-plugin
was specified.
* gcj/Makefile.in: Regenerate.
* sources.am (gnu_java_net_source_files): Add
classpath/gnu/java/net/IndexListParser.java.
(property_files): Remove
classpath/resource/gnu/classpath/tools/jarsigner/MessageBundle.properties,
classpath/resource/gnu/classpath/tools/keytool/MessageBundle.properties.
Add
classpath/resource/gnu/classpath/tools/appletviewer/MessagesBundle.properties,
classpath/resource/gnu/classpath/tools/appletviewer/MessagesBundle_de.properties,
classpath/resource/gnu/classpath/tools/getopt/Messages.properties,
classpath/resource/gnu/classpath/tools/jar/messages.properties,
classpath/resource/gnu/classpath/tools/jarsigner/messages.properties,
classpath/resource/gnu/classpath/tools/keytool/messages.properties,
classpath/resource/gnu/classpath/tools/native2ascii/messages.properties,
classpath/resource/gnu/classpath/tools/serialver/messages.properties.
* classpath/Makefile.in: Regenerate.
* classpath/native/jni/gtk-peer/cairographics2d.h,
classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c,
classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkPixbufDecoder.c,
classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c,
classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c,
classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkVolatileImage.c,
classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c,
classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkTextLayout.c:
Merge from GNU Classpath.
* classpath/native/Makefile.in: Regenerate.
* classpath/native/jawt/Makefile.in: Regenerate.
* classpath/native/jawt/Makefile.am: Install libjawt.so in GCJ's
versioned library directory.
* classpath/native/Makefile.am: Add plugin directory if
--enable-plugin was specified.
* classpath/native/plugin/Makefile.in: Regenerate. *
classpath/native/plugin/Makefile.am: Install libgcjwebplugin.so in
GCJ's versioned library directory.
* classpath/resource/gnu/classpath/tools/native2ascii/messages.properties:
New file.
* classpath/resource/gnu/classpath/tools/getopt/Messages.properties:
Likewise.
* classpath/resource/gnu/classpath/tools/jarsigner/messages.properties:
Likewise.
* classpath/resource/gnu/classpath/tools/jarsigner/MessageBundle.properties:
Remove file.
* classpath/resource/gnu/classpath/tools/keytool/messages.properties:
New file.
* classpath/resource/gnu/classpath/tools/keytool/MessageBundle.properties:
Remove file.
* classpath/resource/gnu/classpath/tools/appletviewer/MessagesBundle_de.properties:
New file.
* classpath/resource/gnu/classpath/tools/appletviewer/MessagesBundle.properties:
Likewise.
* classpath/resource/gnu/classpath/tools/jar/messages.properties:
Likewise.
* classpath/resource/gnu/classpath/tools/serialver/messages.properties:
Likewise.
* classpath/gnu/java/net/IndexListParser.java:
Likewise.
* classpath/gnu/java/awt/peer/gtk/VolatileImageGraphics.java,
classpath/gnu/java/awt/peer/gtk/CairoGraphics2D.java,
classpath/gnu/java/awt/peer/gtk/CairoSurface.java,
classpath/gnu/java/awt/peer/gtk/GdkFontPeer.java,
classpath/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java,
classpath/gnu/java/awt/peer/gtk/FreetypeGlyphVector.java,
classpath/gnu/java/awt/peer/gtk/GdkTextLayout.java,
classpath/gnu/java/awt/peer/gtk/ComponentGraphics.java,
classpath/gnu/java/awt/peer/gtk/CairoSurfaceGraphics.java,
classpath/gnu/java/awt/peer/gtk/GtkVolatileImage.java,
classpath/gnu/java/awt/font/opentype/truetype/VirtualMachine.java,
classpath/gnu/java/awt/java2d/PolyEdge.java,
classpath/gnu/java/awt/java2d/AbstractGraphics2D.java: Merge from
GNU Classpath.
* classpath/tools/toolwrapper.c: Replace tools.zip reference with
libgcj-tools-4.2.0.jar.
* classpath/tools/Makefile.in: Regenerate.
* classpath/tools/Makefile.am: Rename tools.zip to
libgcj-tools-4.2.0.jar. Install libgcj-tools-4.2.0.jar in
$(datadir)/java.
* classpath/javax/swing/JTabbedPane.java,
classpath/javax/swing/text/DefaultStyledDocument.java,
classpath/javax/swing/text/html/HTMLDocument.java,
classpath/javax/swing/text/GapContent.java,
classpath/javax/swing/JComponent.java,
classpath/javax/swing/RepaintManager.java,
classpath/javax/swing/plaf/basic/BasicComboBoxRenderer.java,
classpath/javax/swing/plaf/basic/BasicScrollBarUI.java,
classpath/javax/swing/plaf/basic/BasicTabbedPaneUI.java,
classpath/javax/swing/plaf/basic/BasicScrollPaneUI.java,
classpath/javax/swing/plaf/basic/BasicLookAndFeel.java,
classpath/javax/swing/plaf/metal/MetalButtonUI.java,
classpath/java/text/Bidi.java,
classpath/java/awt/image/BufferedImage.java,
classpath/java/awt/datatransfer/DataFlavor.java,
classpath/java/awt/geom/AffineTransform.java,
classpath/java/awt/dnd/DropTargetDropEvent.java,
classpath/java/awt/dnd/DropTargetContext.java,
classpath/java/awt/font/TextLayout.java,
classpath/include/gnu_java_awt_peer_gtk_ComponentGraphics.h,
classpath/include/gnu_java_awt_peer_gtk_CairoGraphics2D.h,
classpath/include/gnu_java_awt_peer_gtk_FreetypeGlyphVector.h,
classpath/include/gnu_java_awt_peer_gtk_GdkTextLayout.h,
classpath/include/gnu_java_awt_peer_gtk_GtkVolatileImage.h,
classpath/include/gnu_java_awt_peer_gtk_CairoSurface.h: Merge from
GNU Classpath.
* classpath/include/gnu_java_awt_peer_gtk_GdkGraphics.h,
classpath/include/gnu_java_awt_peer_gtk_GdkGraphics2D.h,
classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics2D.c,
classpath/native/jni/gtk-peer/gtkcairopeer.h,
classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c:
Remove files.
* classpath/Makefile.am (SUBDIRS, DIST_SUBDIRS): Include tools
directory.
* include/Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@114633 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/classpath/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java')
| -rw-r--r-- | libjava/classpath/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java | 107 |
1 files changed, 103 insertions, 4 deletions
diff --git a/libjava/classpath/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java b/libjava/classpath/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java index 4e6181f0e58..cd047f26715 100644 --- a/libjava/classpath/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java +++ b/libjava/classpath/gnu/java/awt/peer/gtk/GdkPixbufDecoder.java @@ -103,8 +103,15 @@ public class GdkPixbufDecoder extends gnu.java.awt.image.ImageDecoder native void pumpBytes (byte[] bytes, int len) throws IOException; native void pumpDone () throws IOException; native void finish (boolean needsClose); - static native void streamImage(int[] bytes, String format, int width, int height, boolean hasAlpha, DataOutput sink); - + + /** + * Converts given image to bytes. + * Will call the GdkPixbufWriter for each chunk. + */ + static native void streamImage(int[] bytes, String format, + int width, int height, + boolean hasAlpha, GdkPixbufWriter writer); + // gdk-pixbuf provids data in RGBA format static final ColorModel cm = new DirectColorModel (32, 0xff000000, 0x00ff0000, @@ -461,7 +468,7 @@ public class GdkPixbufDecoder extends gnu.java.awt.image.ImageDecoder } private static class GdkPixbufWriter - extends ImageWriter + extends ImageWriter implements Runnable { String ext; public GdkPixbufWriter(GdkPixbufWriterSpi ownerSpi, Object ext) @@ -519,14 +526,106 @@ public class GdkPixbufDecoder extends gnu.java.awt.image.ImageDecoder model = img.getColorModel(); } + Thread workerThread = new Thread(this, "GdkPixbufWriter"); + workerThread.start(); processImageStarted(1); synchronized(pixbufLock) { streamImage(pixels, this.ext, width, height, model.hasAlpha(), - (DataOutput) this.getOutput()); + this); } + synchronized(data) + { + data.add(DATADONE); + data.notifyAll(); + } + + while (workerThread.isAlive()) + { + try + { + workerThread.join(); + } + catch (InterruptedException ioe) + { + // Ignored. + } + } + + if (exception != null) + throw exception; + processImageComplete(); } + + /** + * Object marking end of data from native streamImage code. + */ + private static final Object DATADONE = new Object(); + + /** + * Holds the data gotten from the native streamImage code. + * A worker thread will pull data out. + * Needs to be synchronized for access. + * The special object DATADONE is added when all data has been delivered. + */ + private ArrayList data = new ArrayList(); + + /** + * Holds any IOException thrown by the run method that needs + * to be rethrown by the write method. + */ + private IOException exception; + + /** Callback for streamImage native code. **/ + private void write(byte[] bs) + { + synchronized(data) + { + data.add(bs); + data.notifyAll(); + } + } + + public void run() + { + boolean done = false; + while (!done) + { + synchronized(data) + { + while (data.isEmpty()) + { + try + { + data.wait(); + } + catch (InterruptedException ie) + { + /* ignore */ + } + } + + Object o = data.remove(0); + if (o == DATADONE) + done = true; + else + { + DataOutput out = (DataOutput) getOutput(); + try + { + out.write((byte[]) o); + } + catch (IOException ioe) + { + // We are only interested in the first exception. + if (exception == null) + exception = ioe; + } + } + } + } + } } private static class GdkPixbufReader |

