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:
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user