Loading core/jni/android/graphics/Shader.cpp +1 −5 Original line number Diff line number Diff line Loading @@ -64,11 +64,10 @@ static jlong BitmapShader_constructor(JNIEnv* env, jobject o, jlong matrixPtr, j jint tileModeX, jint tileModeY) { const SkMatrix* matrix = reinterpret_cast<const SkMatrix*>(matrixPtr); sk_sp<SkImage> image; sk_sp<SkColorFilter> colorFilter; if (jbitmap) { // Only pass a valid SkBitmap object to the constructor if the Bitmap exists. Otherwise, // we'll pass an empty SkBitmap to avoid crashing/excepting for compatibility. image = android::bitmap::toBitmap(env, jbitmap).makeImage(&colorFilter); image = android::bitmap::toBitmap(env, jbitmap).makeImage(); } if (!image.get()) { Loading @@ -81,9 +80,6 @@ static jlong BitmapShader_constructor(JNIEnv* env, jobject o, jlong matrixPtr, j if (matrix) { shader = shader->makeWithLocalMatrix(*matrix); } if(colorFilter) { shader = shader->makeWithColorFilter(colorFilter); } ThrowIAE_IfNull(env, shader.get()); return reinterpret_cast<jlong>(shader.release()); Loading libs/hwui/DeferredLayerUpdater.cpp +3 −5 Original line number Diff line number Diff line Loading @@ -85,19 +85,18 @@ void DeferredLayerUpdater::apply() { mUpdateTexImage = false; sk_sp<SkImage> layerImage; SkMatrix textureTransform; android_dataspace dataSpace; bool queueEmpty = true; // If the SurfaceTexture queue is in synchronous mode, need to discard all // but latest frame. Since we can't tell which mode it is in, // do this unconditionally. do { layerImage = mSurfaceTexture->dequeueImage(textureTransform, dataSpace, &queueEmpty, layerImage = mSurfaceTexture->dequeueImage(textureTransform, &queueEmpty, mRenderState); } while (layerImage.get() && (!queueEmpty)); if (layerImage.get()) { // force filtration if buffer size != layer size bool forceFilter = mWidth != layerImage->width() || mHeight != layerImage->height(); updateLayer(forceFilter, textureTransform, dataSpace, layerImage); updateLayer(forceFilter, textureTransform, layerImage); } } Loading @@ -109,12 +108,11 @@ void DeferredLayerUpdater::apply() { } void DeferredLayerUpdater::updateLayer(bool forceFilter, const SkMatrix& textureTransform, android_dataspace dataspace, const sk_sp<SkImage>& layerImage) { const sk_sp<SkImage>& layerImage) { mLayer->setBlend(mBlend); mLayer->setForceFilter(forceFilter); mLayer->setSize(mWidth, mHeight); mLayer->getTexTransform() = textureTransform; mLayer->setDataSpace(dataspace); mLayer->setImage(layerImage); } Loading libs/hwui/DeferredLayerUpdater.h +1 −1 Original line number Diff line number Diff line Loading @@ -95,7 +95,7 @@ public: void detachSurfaceTexture(); void updateLayer(bool forceFilter, const SkMatrix& textureTransform, android_dataspace dataspace, const sk_sp<SkImage>& layerImage); const sk_sp<SkImage>& layerImage); void destroyLayer(); Loading libs/hwui/Layer.cpp +0 −31 Original line number Diff line number Diff line Loading @@ -33,7 +33,6 @@ Layer::Layer(RenderState& renderState, sk_sp<SkColorFilter> colorFilter, int alp // TODO: This is a violation of Android's typical ref counting, but it // preserves the old inc/dec ref locations. This should be changed... incStrong(nullptr); buildColorSpaceWithFilter(); renderState.registerLayer(this); texTransform.setIdentity(); transform.setIdentity(); Loading @@ -43,36 +42,6 @@ Layer::~Layer() { mRenderState.unregisterLayer(this); } void Layer::setColorFilter(sk_sp<SkColorFilter> filter) { if (filter != mColorFilter) { mColorFilter = filter; buildColorSpaceWithFilter(); } } void Layer::setDataSpace(android_dataspace dataspace) { if (dataspace != mCurrentDataspace) { mCurrentDataspace = dataspace; buildColorSpaceWithFilter(); } } void Layer::buildColorSpaceWithFilter() { sk_sp<SkColorFilter> colorSpaceFilter; sk_sp<SkColorSpace> colorSpace = DataSpaceToColorSpace(mCurrentDataspace); if (colorSpace && !colorSpace->isSRGB()) { colorSpaceFilter = SkToSRGBColorFilter::Make(colorSpace); } if (mColorFilter && colorSpaceFilter) { mColorSpaceWithFilter = mColorFilter->makeComposed(colorSpaceFilter); } else if (colorSpaceFilter) { mColorSpaceWithFilter = colorSpaceFilter; } else { mColorSpaceWithFilter = mColorFilter; } } void Layer::postDecStrong() { mRenderState.postDecStrong(this); } Loading libs/hwui/Layer.h +2 −20 Original line number Diff line number Diff line Loading @@ -69,15 +69,9 @@ public: SkBlendMode getMode() const; inline SkColorFilter* getColorFilter() const { return mColorFilter.get(); } inline sk_sp<SkColorFilter> getColorFilter() const { return mColorFilter; } void setColorFilter(sk_sp<SkColorFilter> filter); void setDataSpace(android_dataspace dataspace); void setColorSpace(sk_sp<SkColorSpace> colorSpace); inline sk_sp<SkColorFilter> getColorSpaceWithFilter() const { return mColorSpaceWithFilter; } void setColorFilter(sk_sp<SkColorFilter> filter) { mColorFilter = filter; }; inline SkMatrix& getTexTransform() { return texTransform; } Loading @@ -98,23 +92,11 @@ protected: RenderState& mRenderState; private: void buildColorSpaceWithFilter(); /** * Color filter used to draw this layer. Optional. */ sk_sp<SkColorFilter> mColorFilter; /** * Colorspace of the contents of the layer. Optional. */ android_dataspace mCurrentDataspace = HAL_DATASPACE_UNKNOWN; /** * A color filter that is the combination of the mColorFilter and mColorSpace. Optional. */ sk_sp<SkColorFilter> mColorSpaceWithFilter; /** * Indicates raster data backing the layer is scaled, requiring filtration. */ Loading Loading
core/jni/android/graphics/Shader.cpp +1 −5 Original line number Diff line number Diff line Loading @@ -64,11 +64,10 @@ static jlong BitmapShader_constructor(JNIEnv* env, jobject o, jlong matrixPtr, j jint tileModeX, jint tileModeY) { const SkMatrix* matrix = reinterpret_cast<const SkMatrix*>(matrixPtr); sk_sp<SkImage> image; sk_sp<SkColorFilter> colorFilter; if (jbitmap) { // Only pass a valid SkBitmap object to the constructor if the Bitmap exists. Otherwise, // we'll pass an empty SkBitmap to avoid crashing/excepting for compatibility. image = android::bitmap::toBitmap(env, jbitmap).makeImage(&colorFilter); image = android::bitmap::toBitmap(env, jbitmap).makeImage(); } if (!image.get()) { Loading @@ -81,9 +80,6 @@ static jlong BitmapShader_constructor(JNIEnv* env, jobject o, jlong matrixPtr, j if (matrix) { shader = shader->makeWithLocalMatrix(*matrix); } if(colorFilter) { shader = shader->makeWithColorFilter(colorFilter); } ThrowIAE_IfNull(env, shader.get()); return reinterpret_cast<jlong>(shader.release()); Loading
libs/hwui/DeferredLayerUpdater.cpp +3 −5 Original line number Diff line number Diff line Loading @@ -85,19 +85,18 @@ void DeferredLayerUpdater::apply() { mUpdateTexImage = false; sk_sp<SkImage> layerImage; SkMatrix textureTransform; android_dataspace dataSpace; bool queueEmpty = true; // If the SurfaceTexture queue is in synchronous mode, need to discard all // but latest frame. Since we can't tell which mode it is in, // do this unconditionally. do { layerImage = mSurfaceTexture->dequeueImage(textureTransform, dataSpace, &queueEmpty, layerImage = mSurfaceTexture->dequeueImage(textureTransform, &queueEmpty, mRenderState); } while (layerImage.get() && (!queueEmpty)); if (layerImage.get()) { // force filtration if buffer size != layer size bool forceFilter = mWidth != layerImage->width() || mHeight != layerImage->height(); updateLayer(forceFilter, textureTransform, dataSpace, layerImage); updateLayer(forceFilter, textureTransform, layerImage); } } Loading @@ -109,12 +108,11 @@ void DeferredLayerUpdater::apply() { } void DeferredLayerUpdater::updateLayer(bool forceFilter, const SkMatrix& textureTransform, android_dataspace dataspace, const sk_sp<SkImage>& layerImage) { const sk_sp<SkImage>& layerImage) { mLayer->setBlend(mBlend); mLayer->setForceFilter(forceFilter); mLayer->setSize(mWidth, mHeight); mLayer->getTexTransform() = textureTransform; mLayer->setDataSpace(dataspace); mLayer->setImage(layerImage); } Loading
libs/hwui/DeferredLayerUpdater.h +1 −1 Original line number Diff line number Diff line Loading @@ -95,7 +95,7 @@ public: void detachSurfaceTexture(); void updateLayer(bool forceFilter, const SkMatrix& textureTransform, android_dataspace dataspace, const sk_sp<SkImage>& layerImage); const sk_sp<SkImage>& layerImage); void destroyLayer(); Loading
libs/hwui/Layer.cpp +0 −31 Original line number Diff line number Diff line Loading @@ -33,7 +33,6 @@ Layer::Layer(RenderState& renderState, sk_sp<SkColorFilter> colorFilter, int alp // TODO: This is a violation of Android's typical ref counting, but it // preserves the old inc/dec ref locations. This should be changed... incStrong(nullptr); buildColorSpaceWithFilter(); renderState.registerLayer(this); texTransform.setIdentity(); transform.setIdentity(); Loading @@ -43,36 +42,6 @@ Layer::~Layer() { mRenderState.unregisterLayer(this); } void Layer::setColorFilter(sk_sp<SkColorFilter> filter) { if (filter != mColorFilter) { mColorFilter = filter; buildColorSpaceWithFilter(); } } void Layer::setDataSpace(android_dataspace dataspace) { if (dataspace != mCurrentDataspace) { mCurrentDataspace = dataspace; buildColorSpaceWithFilter(); } } void Layer::buildColorSpaceWithFilter() { sk_sp<SkColorFilter> colorSpaceFilter; sk_sp<SkColorSpace> colorSpace = DataSpaceToColorSpace(mCurrentDataspace); if (colorSpace && !colorSpace->isSRGB()) { colorSpaceFilter = SkToSRGBColorFilter::Make(colorSpace); } if (mColorFilter && colorSpaceFilter) { mColorSpaceWithFilter = mColorFilter->makeComposed(colorSpaceFilter); } else if (colorSpaceFilter) { mColorSpaceWithFilter = colorSpaceFilter; } else { mColorSpaceWithFilter = mColorFilter; } } void Layer::postDecStrong() { mRenderState.postDecStrong(this); } Loading
libs/hwui/Layer.h +2 −20 Original line number Diff line number Diff line Loading @@ -69,15 +69,9 @@ public: SkBlendMode getMode() const; inline SkColorFilter* getColorFilter() const { return mColorFilter.get(); } inline sk_sp<SkColorFilter> getColorFilter() const { return mColorFilter; } void setColorFilter(sk_sp<SkColorFilter> filter); void setDataSpace(android_dataspace dataspace); void setColorSpace(sk_sp<SkColorSpace> colorSpace); inline sk_sp<SkColorFilter> getColorSpaceWithFilter() const { return mColorSpaceWithFilter; } void setColorFilter(sk_sp<SkColorFilter> filter) { mColorFilter = filter; }; inline SkMatrix& getTexTransform() { return texTransform; } Loading @@ -98,23 +92,11 @@ protected: RenderState& mRenderState; private: void buildColorSpaceWithFilter(); /** * Color filter used to draw this layer. Optional. */ sk_sp<SkColorFilter> mColorFilter; /** * Colorspace of the contents of the layer. Optional. */ android_dataspace mCurrentDataspace = HAL_DATASPACE_UNKNOWN; /** * A color filter that is the combination of the mColorFilter and mColorSpace. Optional. */ sk_sp<SkColorFilter> mColorSpaceWithFilter; /** * Indicates raster data backing the layer is scaled, requiring filtration. */ Loading