提交 8bd348e5 编写于 作者: L lana

Merge

...@@ -339,6 +339,8 @@ public class PSPrinterJob extends RasterPrinterJob { ...@@ -339,6 +339,8 @@ public class PSPrinterJob extends RasterPrinterJob {
*/ */
private static Properties mFontProps = null; private static Properties mFontProps = null;
private static boolean isMac;
/* Class static initialiser block */ /* Class static initialiser block */
static { static {
//enable priviledges so initProps can access system properties, //enable priviledges so initProps can access system properties,
...@@ -347,6 +349,8 @@ public class PSPrinterJob extends RasterPrinterJob { ...@@ -347,6 +349,8 @@ public class PSPrinterJob extends RasterPrinterJob {
new java.security.PrivilegedAction() { new java.security.PrivilegedAction() {
public Object run() { public Object run() {
mFontProps = initProps(); mFontProps = initProps();
String osName = System.getProperty("os.name");
isMac = osName.startsWith("Mac");
return null; return null;
} }
}); });
...@@ -473,6 +477,12 @@ public class PSPrinterJob extends RasterPrinterJob { ...@@ -473,6 +477,12 @@ public class PSPrinterJob extends RasterPrinterJob {
PrintService pServ = getPrintService(); PrintService pServ = getPrintService();
if (pServ != null) { if (pServ != null) {
mDestination = pServ.getName(); mDestination = pServ.getName();
if (isMac) {
PrintServiceAttributeSet psaSet = pServ.getAttributes() ;
if (psaSet != null) {
mDestination = psaSet.get(PrinterName.class).toString();
}
}
} }
} }
} }
...@@ -771,6 +781,12 @@ public class PSPrinterJob extends RasterPrinterJob { ...@@ -771,6 +781,12 @@ public class PSPrinterJob extends RasterPrinterJob {
PrintService pServ = getPrintService(); PrintService pServ = getPrintService();
if (pServ != null) { if (pServ != null) {
mDestination = pServ.getName(); mDestination = pServ.getName();
if (isMac) {
PrintServiceAttributeSet psaSet = pServ.getAttributes();
if (psaSet != null) {
mDestination = psaSet.get(PrinterName.class).toString() ;
}
}
} }
PrinterSpooler spooler = new PrinterSpooler(); PrinterSpooler spooler = new PrinterSpooler();
java.security.AccessController.doPrivileged(spooler); java.security.AccessController.doPrivileged(spooler);
......
...@@ -71,13 +71,17 @@ JNIEXPORT jlong JNICALL Java_sun_font_NullFontScaler_getGlyphImage ...@@ -71,13 +71,17 @@ JNIEXPORT jlong JNICALL Java_sun_font_NullFontScaler_getGlyphImage
void initLCDGammaTables(); void initLCDGammaTables();
/* placeholder for extern variable */ /* placeholder for extern variable */
static int initialisedFontIDs = 0;
FontManagerNativeIDs sunFontIDs; FontManagerNativeIDs sunFontIDs;
JNIEXPORT void JNICALL static void initFontIDs(JNIEnv *env) {
Java_sun_font_SunFontManager_initIDs
(JNIEnv *env, jclass cls) { jclass tmpClass;
jclass tmpClass = (*env)->FindClass(env, "sun/font/TrueTypeFont"); if (initialisedFontIDs) {
return;
}
tmpClass = (*env)->FindClass(env, "sun/font/TrueTypeFont");
sunFontIDs.ttReadBlockMID = sunFontIDs.ttReadBlockMID =
(*env)->GetMethodID(env, tmpClass, "readBlock", (*env)->GetMethodID(env, tmpClass, "readBlock",
"(Ljava/nio/ByteBuffer;II)I"); "(Ljava/nio/ByteBuffer;II)I");
...@@ -173,9 +177,20 @@ Java_sun_font_SunFontManager_initIDs ...@@ -173,9 +177,20 @@ Java_sun_font_SunFontManager_initIDs
(*env)->GetFieldID(env, tmpClass, "lcdSubPixPos", "Z"); (*env)->GetFieldID(env, tmpClass, "lcdSubPixPos", "Z");
initLCDGammaTables(); initLCDGammaTables();
initialisedFontIDs = 1;
} }
JNIEXPORT FontManagerNativeIDs getSunFontIDs() { JNIEXPORT void JNICALL
Java_sun_font_SunFontManager_initIDs
(JNIEnv *env, jclass cls) {
initFontIDs(env);
}
JNIEXPORT FontManagerNativeIDs getSunFontIDs(JNIEnv *env) {
initFontIDs(env);
return sunFontIDs; return sunFontIDs;
} }
......
...@@ -84,7 +84,7 @@ typedef struct FontManagerNativeIDs { ...@@ -84,7 +84,7 @@ typedef struct FontManagerNativeIDs {
/* Note: we share variable in the context of fontmanager lib /* Note: we share variable in the context of fontmanager lib
but we need access method to use it from separate rasterizer lib */ but we need access method to use it from separate rasterizer lib */
extern FontManagerNativeIDs sunFontIDs; extern FontManagerNativeIDs sunFontIDs;
JNIEXPORT FontManagerNativeIDs getSunFontIDs(); JNIEXPORT FontManagerNativeIDs getSunFontIDs(JNIEnv* env);
#ifdef __cplusplus #ifdef __cplusplus
} }
......
...@@ -245,7 +245,7 @@ public class UnixPrintServiceLookup extends PrintServiceLookup ...@@ -245,7 +245,7 @@ public class UnixPrintServiceLookup extends PrintServiceLookup
continue; continue;
} }
if ((defaultPrintService != null) if ((defaultPrintService != null)
&& printers[p].equals(defaultPrintService.getName())) { && printers[p].equals(getPrinterDestName(defaultPrintService))) {
printerList.add(defaultPrintService); printerList.add(defaultPrintService);
defaultIndex = printerList.size() - 1; defaultIndex = printerList.size() - 1;
} else { } else {
...@@ -270,11 +270,12 @@ public class UnixPrintServiceLookup extends PrintServiceLookup ...@@ -270,11 +270,12 @@ public class UnixPrintServiceLookup extends PrintServiceLookup
} else { } else {
int j; int j;
for (j=0; j<printServices.length; j++) { for (j=0; j<printServices.length; j++) {
if ((printServices[j] != null) && if (printServices[j] != null) {
(printers[p].equals(printServices[j].getName()))) { if (printers[p].equals(getPrinterDestName(printServices[j]))) {
printerList.add(printServices[j]); printerList.add(printServices[j]);
printServices[j] = null; printServices[j] = null;
break; break;
}
} }
} }
...@@ -360,6 +361,17 @@ public class UnixPrintServiceLookup extends PrintServiceLookup ...@@ -360,6 +361,17 @@ public class UnixPrintServiceLookup extends PrintServiceLookup
return true; return true;
} }
/*
* Gets the printer name compatible with the list of printers returned by
* the system when we query default or all the available printers.
*/
private String getPrinterDestName(PrintService ps) {
if (isMac()) {
return ((IPPPrintService)ps).getDest();
}
return ps.getName();
}
/* On a network with many (hundreds) of network printers, it /* On a network with many (hundreds) of network printers, it
* can save several seconds if you know all you want is a particular * can save several seconds if you know all you want is a particular
* printer, to ask for that printer rather than retrieving all printers. * printer, to ask for that printer rather than retrieving all printers.
...@@ -369,10 +381,12 @@ public class UnixPrintServiceLookup extends PrintServiceLookup ...@@ -369,10 +381,12 @@ public class UnixPrintServiceLookup extends PrintServiceLookup
if (name == null || name.equals("") || !checkPrinterName(name)) { if (name == null || name.equals("") || !checkPrinterName(name)) {
return null; return null;
} }
/* check is all printers are already available */ /* check if all printers are already available */
if (printServices != null) { if (printServices != null) {
for (PrintService printService : printServices) { for (PrintService printService : printServices) {
if (printService.getName().equals(name)) { PrinterName printerName =
(PrinterName)printService.getAttribute(PrinterName.class);
if (printerName.getValue().equals(name)) {
return printService; return printService;
} }
} }
...@@ -567,7 +581,7 @@ public class UnixPrintServiceLookup extends PrintServiceLookup ...@@ -567,7 +581,7 @@ public class UnixPrintServiceLookup extends PrintServiceLookup
defaultPrintService = null; defaultPrintService = null;
if (printServices != null) { if (printServices != null) {
for (int j=0; j<printServices.length; j++) { for (int j=0; j<printServices.length; j++) {
if (defaultPrinter.equals(printServices[j].getName())) { if (defaultPrinter.equals(getPrinterDestName(printServices[j]))) {
defaultPrintService = printServices[j]; defaultPrintService = printServices[j];
break; break;
} }
......
...@@ -67,14 +67,15 @@ Java_sun_java2d_opengl_WGLSurfaceData_initOps(JNIEnv *env, jobject wglsd, ...@@ -67,14 +67,15 @@ Java_sun_java2d_opengl_WGLSurfaceData_initOps(JNIEnv *env, jobject wglsd,
J2dTraceLn(J2D_TRACE_INFO, "WGLSurfaceData_initOps"); J2dTraceLn(J2D_TRACE_INFO, "WGLSurfaceData_initOps");
if (oglsdo == NULL) {
JNU_ThrowOutOfMemoryError(env, "Initialization of SurfaceData failed.");
return;
}
if (wglsdo == NULL) { if (wglsdo == NULL) {
JNU_ThrowOutOfMemoryError(env, "creating native wgl ops"); JNU_ThrowOutOfMemoryError(env, "creating native wgl ops");
return; return;
} }
if (oglsdo == NULL) {
free(wglsdo);
JNU_ThrowOutOfMemoryError(env, "Initialization of SurfaceData failed.");
return;
}
oglsdo->privOps = wglsdo; oglsdo->privOps = wglsdo;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册