--- old/src/solaris/classes/sun/print/IPPPrintService.java 2014-07-10 14:45:23.032232198 -0700 +++ new/src/solaris/classes/sun/print/IPPPrintService.java 2014-07-10 14:45:22.928232202 -0700 @@ -414,6 +414,7 @@ mediaSizeNames = cps.getMediaSizeNames(); mediaTrays = cps.getMediaTrays(); customMediaSizeNames = cps.getCustomMediaSizeNames(); + defaultMediaIndex = cps.getDefaultMediaIndex(); urlConnection.disconnect(); init = true; return; @@ -1432,7 +1433,9 @@ return JobSheets.STANDARD; } } else if (category == Media.class) { - defaultMediaIndex = 0; + if (defaultMediaIndex == -1) { + defaultMediaIndex = 0; + } if (mediaSizeNames.length == 0) { String defaultCountry = Locale.getDefault().getCountry(); if (defaultCountry != null && @@ -1448,17 +1451,7 @@ if (attribClass != null) { String name = attribClass.getStringValue(); if (isCupsPrinter) { - for (int i=0; i< customMediaSizeNames.length; i++) { - //REMIND: get default from PPD. In native _getMedia, - // move default (ppd_option_t->defchoice) to index 0. - // In the meantime, use indexOf because PPD name - // may be different from the IPP attribute name. - if (customMediaSizeNames[i].toString().indexOf(name) - != -1) { - defaultMediaIndex = i; - return mediaSizeNames[defaultMediaIndex]; - } - } + return mediaSizeNames[defaultMediaIndex]; } else { for (int i=0; i< mediaSizeNames.length; i++) { if (mediaSizeNames[i].toString().indexOf(name) != -1) {