diff --git a/jdk/src/share/classes/sun/print/PSPrinterJob.java b/jdk/src/share/classes/sun/print/PSPrinterJob.java index c4bcc23aa02..30777b3cefe 100644 --- a/jdk/src/share/classes/sun/print/PSPrinterJob.java +++ b/jdk/src/share/classes/sun/print/PSPrinterJob.java @@ -339,6 +339,8 @@ public class PSPrinterJob extends RasterPrinterJob { */ private static Properties mFontProps = null; + private static boolean isMac; + /* Class static initialiser block */ static { //enable priviledges so initProps can access system properties, @@ -347,6 +349,8 @@ public class PSPrinterJob extends RasterPrinterJob { new java.security.PrivilegedAction() { public Object run() { mFontProps = initProps(); + String osName = System.getProperty("os.name"); + isMac = osName.startsWith("Mac"); return null; } }); @@ -473,6 +477,12 @@ public class PSPrinterJob extends RasterPrinterJob { PrintService pServ = getPrintService(); if (pServ != null) { 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 { PrintService pServ = getPrintService(); if (pServ != null) { mDestination = pServ.getName(); + if (isMac) { + PrintServiceAttributeSet psaSet = pServ.getAttributes(); + if (psaSet != null) { + mDestination = psaSet.get(PrinterName.class).toString() ; + } + } } PrinterSpooler spooler = new PrinterSpooler(); java.security.AccessController.doPrivileged(spooler); diff --git a/jdk/src/share/native/sun/font/sunFont.c b/jdk/src/share/native/sun/font/sunFont.c index 95927b003d7..70bfee8a102 100644 --- a/jdk/src/share/native/sun/font/sunFont.c +++ b/jdk/src/share/native/sun/font/sunFont.c @@ -71,13 +71,17 @@ JNIEXPORT jlong JNICALL Java_sun_font_NullFontScaler_getGlyphImage void initLCDGammaTables(); /* placeholder for extern variable */ +static int initialisedFontIDs = 0; FontManagerNativeIDs sunFontIDs; -JNIEXPORT void JNICALL -Java_sun_font_SunFontManager_initIDs - (JNIEnv *env, jclass cls) { +static void initFontIDs(JNIEnv *env) { - jclass tmpClass = (*env)->FindClass(env, "sun/font/TrueTypeFont"); + jclass tmpClass; + + if (initialisedFontIDs) { + return; + } + tmpClass = (*env)->FindClass(env, "sun/font/TrueTypeFont"); sunFontIDs.ttReadBlockMID = (*env)->GetMethodID(env, tmpClass, "readBlock", "(Ljava/nio/ByteBuffer;II)I"); @@ -173,9 +177,20 @@ Java_sun_font_SunFontManager_initIDs (*env)->GetFieldID(env, tmpClass, "lcdSubPixPos", "Z"); 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; } diff --git a/jdk/src/share/native/sun/font/sunfontids.h b/jdk/src/share/native/sun/font/sunfontids.h index 211ab7a4c72..a7e4290ad40 100644 --- a/jdk/src/share/native/sun/font/sunfontids.h +++ b/jdk/src/share/native/sun/font/sunfontids.h @@ -84,7 +84,7 @@ typedef struct FontManagerNativeIDs { /* Note: we share variable in the context of fontmanager lib but we need access method to use it from separate rasterizer lib */ extern FontManagerNativeIDs sunFontIDs; -JNIEXPORT FontManagerNativeIDs getSunFontIDs(); +JNIEXPORT FontManagerNativeIDs getSunFontIDs(JNIEnv* env); #ifdef __cplusplus } diff --git a/jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java b/jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java index 2c2a6406293..54dc8b666fc 100644 --- a/jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java +++ b/jdk/src/solaris/classes/sun/print/UnixPrintServiceLookup.java @@ -245,7 +245,7 @@ public class UnixPrintServiceLookup extends PrintServiceLookup continue; } if ((defaultPrintService != null) - && printers[p].equals(defaultPrintService.getName())) { + && printers[p].equals(getPrinterDestName(defaultPrintService))) { printerList.add(defaultPrintService); defaultIndex = printerList.size() - 1; } else { @@ -270,11 +270,12 @@ public class UnixPrintServiceLookup extends PrintServiceLookup } else { int j; for (j=0; jprivOps = wglsdo;