am 11b7d9fa: Merge "PrintSpooler crash if printer is reported to have only one color mode." into klp-dev
* commit '11b7d9fa6685e742f5b3e3235a8e6e4920dbed02': PrintSpooler crash if printer is reported to have only one color mode.
This commit is contained in:
@@ -475,6 +475,12 @@ public final class PrinterCapabilitiesInfo implements Parcelable {
|
||||
* @param colorModes The color mode bit mask.
|
||||
* @param defaultColorMode The default color mode.
|
||||
* @return This builder.
|
||||
* <p>
|
||||
* <strong>Note:</strong> On platform version 19 (Kitkat) specifying
|
||||
* only PrintAttributes#COLOR_MODE_MONOCHROME leads to a print spooler
|
||||
* crash. Hence, you should declare either both color modes or
|
||||
* PrintAttributes#COLOR_MODE_COLOR.
|
||||
* </p>
|
||||
*
|
||||
* @throws IllegalArgumentException If color modes contains an invalid
|
||||
* mode bit or if the default color mode is invalid.
|
||||
|
||||
@@ -2190,12 +2190,16 @@ public class PrintJobConfigActivity extends Activity {
|
||||
// Select the old color mode - nothing really changed.
|
||||
setColorModeSpinnerSelectionNoCallback(oldColorModeNewIndex);
|
||||
} else {
|
||||
final int selectedColorModeIndex = Integer.numberOfTrailingZeros(
|
||||
(colorModes & defaultAttributes.getColorMode()));
|
||||
setColorModeSpinnerSelectionNoCallback(selectedColorModeIndex);
|
||||
mCurrPrintAttributes.setColorMode(mColorModeSpinnerAdapter
|
||||
.getItem(selectedColorModeIndex).value);
|
||||
someAttributeSelectionChanged = true;
|
||||
final int selectedColorMode = colorModes & defaultAttributes.getColorMode();
|
||||
final int itemCount = mColorModeSpinnerAdapter.getCount();
|
||||
for (int i = 0; i < itemCount; i++) {
|
||||
SpinnerItem<Integer> item = mColorModeSpinnerAdapter.getItem(i);
|
||||
if (selectedColorMode == item.value) {
|
||||
setColorModeSpinnerSelectionNoCallback(i);
|
||||
mCurrPrintAttributes.setColorMode(selectedColorMode);
|
||||
someAttributeSelectionChanged = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
mColorModeSpinner.setEnabled(true);
|
||||
|
||||
Reference in New Issue
Block a user