OSDN Git Service

HWC2: Clear transform for SolidColor layers
authorDan Stoza <stoza@google.com>
Wed, 27 Jul 2016 17:16:52 +0000 (10:16 -0700)
committerSteve Kondik <steve@cyngn.com>
Wed, 5 Oct 2016 01:33:11 +0000 (18:33 -0700)
Clears the transform for SolidColor layers, since it doesn't make sense
to transform layers without a buffer.

Test: Cherry-pick from internal branch
Bug: 30429522
Change-Id: Ib2f4889531556c7ab00e3b270319c321e9f32c84

services/surfaceflinger/Layer.cpp

index f378f30..3301947 100644 (file)
@@ -741,11 +741,22 @@ void Layer::setPerFrameData(const sp<const DisplayDevice>& displayDevice) {
     // SolidColor layers
     if (mActiveBuffer == nullptr) {
         setCompositionType(hwcId, HWC2::Composition::SolidColor);
+
+        // For now, we only support black for DimLayer
         error = hwcLayer->setColor({0, 0, 0, 255});
         if (error != HWC2::Error::None) {
             ALOGE("[%s] Failed to set color: %s (%d)", mName.string(),
                     to_string(error).c_str(), static_cast<int32_t>(error));
         }
+
+        // Clear out the transform, because it doesn't make sense absent a
+        // source buffer
+        error = hwcLayer->setTransform(HWC2::Transform::None);
+        if (error != HWC2::Error::None) {
+            ALOGE("[%s] Failed to clear transform: %s (%d)", mName.string(),
+                    to_string(error).c_str(), static_cast<int32_t>(error));
+        }
+
         return;
     }