summaryrefslogtreecommitdiff
path: root/libs/hwui/Layer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/hwui/Layer.cpp')
-rw-r--r--libs/hwui/Layer.cpp23
1 files changed, 16 insertions, 7 deletions
diff --git a/libs/hwui/Layer.cpp b/libs/hwui/Layer.cpp
index b86ae121af55..32aaa54e696c 100644
--- a/libs/hwui/Layer.cpp
+++ b/libs/hwui/Layer.cpp
@@ -17,25 +17,26 @@
#include "Layer.h"
#include "renderstate/RenderState.h"
+#include "utils/Color.h"
#include <SkToSRGBColorFilter.h>
namespace android {
namespace uirenderer {
-Layer::Layer(RenderState& renderState, Api api, sk_sp<SkColorFilter> colorFilter, int alpha,
- SkBlendMode mode)
- : GpuMemoryTracker(GpuObjectType::Layer)
- , mRenderState(renderState)
- , mode(mode)
- , mApi(api)
+Layer::Layer(RenderState& renderState, sk_sp<SkColorFilter> colorFilter, int alpha,
+ SkBlendMode mode)
+ : mRenderState(renderState)
, mColorFilter(colorFilter)
- , alpha(alpha) {
+ , alpha(alpha)
+ , mode(mode) {
// 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();
}
Layer::~Layer() {
@@ -76,5 +77,13 @@ void Layer::postDecStrong() {
mRenderState.postDecStrong(this);
}
+SkBlendMode Layer::getMode() const {
+ if (mBlend || mode != SkBlendMode::kSrcOver) {
+ return mode;
+ } else {
+ return SkBlendMode::kSrc;
+ }
+}
+
}; // namespace uirenderer
}; // namespace android