mirror of
https://github.com/openjdk/jdk.git
synced 2026-04-21 12:20:29 +00:00
8163889: [macosx] Can't print from browser on Mac OS X
Reviewed-by: prr, psadhukhan
This commit is contained in:
parent
e1eb9b78e1
commit
6a093685ee
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -608,6 +608,13 @@ public class OSXOffScreenSurfaceData extends OSXSurfaceData // implements Raster
|
||||
fImageInfoInt.put(kNeedToSyncFromJavaPixelsIndex, 1); // the pixels will change
|
||||
}
|
||||
|
||||
private void syncFromCustom() {
|
||||
|
||||
}
|
||||
|
||||
private void syncToCustom() {
|
||||
|
||||
}
|
||||
// /**
|
||||
// * Invoked when the raster's contents will be taken (via the Raster.getDataBuffer() method)
|
||||
// */
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -34,9 +34,6 @@
|
||||
#import <JavaNativeFoundation/JavaNativeFoundation.h>
|
||||
|
||||
#import "BufImgSurfaceData.h"
|
||||
#import "ThreadUtilities.h"
|
||||
|
||||
|
||||
|
||||
//#define DEBUG 1
|
||||
#if defined DEBUG
|
||||
@ -195,10 +192,9 @@ IMAGE_SURFACE_INLINE void customPixelsFromJava(JNIEnv *env, ImageSDOps *isdo)
|
||||
PRINT(" customPixelsFromJava")
|
||||
|
||||
SurfaceDataOps *sdo = (SurfaceDataOps*)isdo;
|
||||
JNFCallVoidMethod([ThreadUtilities getJNIEnv], sdo->sdObject, jm_syncFromCustom); // AWT_THREADING Safe (known object)
|
||||
JNFCallVoidMethod(env, sdo->sdObject, jm_syncFromCustom); // AWT_THREADING Safe (known object)
|
||||
}
|
||||
|
||||
|
||||
IMAGE_SURFACE_INLINE void copyBits(jint w, jint h, jint javaPixelsBytesPerRow, Pixel8bit *pixelsSrc, jint dstPixelsBytesPerRow, Pixel8bit *pixelsDst)
|
||||
{
|
||||
PRINT(" copyBits")
|
||||
@ -427,7 +423,7 @@ IMAGE_SURFACE_INLINE void customPixelsToJava(JNIEnv *env, ImageSDOps *isdo)
|
||||
PRINT(" customPixelsToJava")
|
||||
|
||||
SurfaceDataOps *sdo = (SurfaceDataOps*)isdo;
|
||||
JNFCallVoidMethod([ThreadUtilities getJNIEnv], sdo->sdObject, jm_syncToCustom); // AWT_THREADING Safe (known object)
|
||||
JNFCallVoidMethod(env, sdo->sdObject, jm_syncToCustom); // AWT_THREADING Safe (known object)
|
||||
}
|
||||
|
||||
IMAGE_SURFACE_INLINE void removeAlphaPre_32bit(jint w, jint h, jint javaPixelsBytesPerRow, jint javaPixelBytes, Pixel32bit *pixelsSrc)
|
||||
@ -995,9 +991,9 @@ static void imageDataProvider_UnholdJavaPixels(void *info, const void *data, siz
|
||||
{
|
||||
PRINT("imageDataProvider_UnholdJavaPixels")
|
||||
|
||||
ImageSDOps* isdo = (ImageSDOps*)info;
|
||||
unholdJavaPixels([ThreadUtilities getJNIEnv], isdo);
|
||||
// Currently do nothing
|
||||
}
|
||||
|
||||
static void imageDataProvider_FreeTempPixels(void *info, const void *data, size_t size)
|
||||
{
|
||||
PRINT("imageDataProvider_FreeTempPixels")
|
||||
|
||||
77
jdk/test/java/awt/print/PrinterJob/PrintCrashTest.java
Normal file
77
jdk/test/java/awt/print/PrinterJob/PrintCrashTest.java
Normal file
@ -0,0 +1,77 @@
|
||||
/*
|
||||
* Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 8163889
|
||||
* @summary Printing crashes on OSX.
|
||||
* @run main PrintCrashTest
|
||||
*/
|
||||
|
||||
import javax.print.attribute.HashPrintRequestAttributeSet;
|
||||
import javax.print.attribute.standard.Destination;
|
||||
|
||||
import java.awt.GraphicsEnvironment;
|
||||
import java.awt.Rectangle;
|
||||
import java.awt.Shape;
|
||||
import java.awt.Transparency;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.awt.print.Printable;
|
||||
import java.awt.print.PrinterJob;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
public class PrintCrashTest {
|
||||
public static void main(String[] args) throws Exception {
|
||||
PrinterJob printerJob = PrinterJob.getPrinterJob();
|
||||
printerJob.setPrintable((graphics, pageFormat, pageIndex) -> {
|
||||
if (pageIndex != 0) {
|
||||
return Printable.NO_SUCH_PAGE;
|
||||
} else {
|
||||
Shape shape = new Rectangle(110, 110, 10, 10);
|
||||
Rectangle rect = shape.getBounds();
|
||||
|
||||
BufferedImage image = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice()
|
||||
.getDefaultConfiguration().createCompatibleImage(rect.width, rect.height, Transparency.BITMASK);
|
||||
graphics.drawImage(image, rect.x, rect.y, rect.width, rect.height, null);
|
||||
|
||||
return Printable.PAGE_EXISTS;
|
||||
}
|
||||
});
|
||||
|
||||
File file = null;
|
||||
try {
|
||||
HashPrintRequestAttributeSet hashPrintRequestAttributeSet = new HashPrintRequestAttributeSet();
|
||||
file = File.createTempFile("out", "ps");
|
||||
file.deleteOnExit();
|
||||
Destination destination = new Destination(file.toURI());
|
||||
hashPrintRequestAttributeSet.add(destination);
|
||||
printerJob.print(hashPrintRequestAttributeSet);
|
||||
} finally {
|
||||
if (file != null) {
|
||||
file.delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user