am 288471d8: DO NOT MERGE. Load assets in place instead of deferring until draw.

Merge commit '288471d8a57e1c318742cbfc28697877436fdb87' into gingerbread-plus-aosp

* commit '288471d8a57e1c318742cbfc28697877436fdb87':
  DO NOT MERGE. Load assets in place instead of deferring until draw.
This commit is contained in:
Romain Guy
2010-08-19 15:06:50 -07:00
committed by Android Git Automerger
2 changed files with 13 additions and 17 deletions

View File

@@ -218,6 +218,7 @@ static SkPixelRef* installPixelRef(SkBitmap* bitmap, SkStream* stream,
} }
pr->setDitherImage(ditherImage); pr->setDitherImage(ditherImage);
bitmap->setPixelRef(pr)->unref(); bitmap->setPixelRef(pr)->unref();
pr->isOpaque(bitmap);
return pr; return pr;
} }
@@ -464,10 +465,7 @@ static jobject nativeDecodeAsset(JNIEnv* env, jobject clazz,
jobject options) { // BitmapFactory$Options jobject options) { // BitmapFactory$Options
SkStream* stream; SkStream* stream;
Asset* asset = reinterpret_cast<Asset*>(native_asset); Asset* asset = reinterpret_cast<Asset*>(native_asset);
// assets can always be rebuilt, so force this if (optionsPurgeable(env, options)) {
bool forcePurgeable = true;
if (forcePurgeable || optionsPurgeable(env, options)) {
// if we could "ref/reopen" the asset, we may not need to copy it here // if we could "ref/reopen" the asset, we may not need to copy it here
// and we could assume optionsShareable, since assets are always RO // and we could assume optionsShareable, since assets are always RO
stream = copyAssetToStream(asset); stream = copyAssetToStream(asset);

View File

@@ -27,7 +27,6 @@ import java.io.FileDescriptor;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.FileNotFoundException;
/** /**
* Creates Bitmap objects from various sources, including files, streams, * Creates Bitmap objects from various sources, including files, streams,
@@ -40,7 +39,7 @@ public class BitmapFactory {
* the same result from the decoder as if null were passed. * the same result from the decoder as if null were passed.
*/ */
public Options() { public Options() {
inDither = true; inDither = false;
inScaled = true; inScaled = true;
} }
@@ -70,8 +69,11 @@ public class BitmapFactory {
* the decoder will try to pick the best matching config based on the * the decoder will try to pick the best matching config based on the
* system's screen depth, and characteristics of the original image such * system's screen depth, and characteristics of the original image such
* as if it has per-pixel alpha (requiring a config that also does). * as if it has per-pixel alpha (requiring a config that also does).
*
* Image are loaded with the {@link Bitmap.Config#ARGB_8888} config by
* default.
*/ */
public Bitmap.Config inPreferredConfig; public Bitmap.Config inPreferredConfig = Bitmap.Config.ARGB_8888;
/** /**
* If dither is true, the decoder will attempt to dither the decoded * If dither is true, the decoder will attempt to dither the decoded
@@ -453,10 +455,8 @@ public class BitmapFactory {
// into is.read(...) This number is not related to the value passed // into is.read(...) This number is not related to the value passed
// to mark(...) above. // to mark(...) above.
byte [] tempStorage = null; byte [] tempStorage = null;
if (opts != null) if (opts != null) tempStorage = opts.inTempStorage;
tempStorage = opts.inTempStorage; if (tempStorage == null) tempStorage = new byte[16 * 1024];
if (tempStorage == null)
tempStorage = new byte[16 * 1024];
bm = nativeDecodeStream(is, tempStorage, outPadding, opts); bm = nativeDecodeStream(is, tempStorage, outPadding, opts);
} }
@@ -475,8 +475,7 @@ public class BitmapFactory {
bm.setDensity(density); bm.setDensity(density);
final int targetDensity = opts.inTargetDensity; final int targetDensity = opts.inTargetDensity;
if (targetDensity == 0 || density == targetDensity if (targetDensity == 0 || density == targetDensity || density == opts.inScreenDensity) {
|| density == opts.inScreenDensity) {
return bm; return bm;
} }
@@ -673,8 +672,7 @@ public class BitmapFactory {
// pass some temp storage down to the native code. 1024 is made up, // pass some temp storage down to the native code. 1024 is made up,
// but should be large enough to avoid too many small calls back // but should be large enough to avoid too many small calls back
// into is.read(...). // into is.read(...).
byte [] tempStorage = null; byte [] tempStorage = new byte[16 * 1024];
tempStorage = new byte[16 * 1024];
return nativeCreateLargeBitmap(is, tempStorage, isShareable); return nativeCreateLargeBitmap(is, tempStorage, isShareable);
} }
} }
@@ -695,8 +693,8 @@ public class BitmapFactory {
* @throws IOException if the image format is not supported or can not be decoded. * @throws IOException if the image format is not supported or can not be decoded.
* @hide * @hide
*/ */
public static LargeBitmap createLargeBitmap(String pathName, public static LargeBitmap createLargeBitmap(String pathName, boolean isShareable)
boolean isShareable) throws FileNotFoundException, IOException { throws IOException {
LargeBitmap bm = null; LargeBitmap bm = null;
InputStream stream = null; InputStream stream = null;