OSDN Git Service

sf: ex-sf: Remove screenshot surface from secondary displays
authorArun Kumar K.R <akumarkr@codeaurora.org>
Thu, 17 Dec 2015 21:36:49 +0000 (13:36 -0800)
committerSteve Kondik <steve@cyngn.com>
Sat, 12 Mar 2016 00:52:02 +0000 (16:52 -0800)
- When rotation animation is disabled on secondary displays, remove
  the screenshot surface from the secondary display list, without
  this it would show up upside down frame on secondary.
- Mark IntOnly layers as invisible on secondary displays.

Change-Id: Ia859ee1c6ac7caa132c95e4f906bd2589e786fac
Crs-fixed: 949263

services/surfaceflinger/ExSurfaceFlinger/ExSurfaceFlinger.cpp

index 3579abb..0014e80 100644 (file)
@@ -138,6 +138,18 @@ bool ExSurfaceFlinger::updateLayerVisibleNonTransparentRegion(
         layer->setVisibleNonTransparentRegion(visibleNonTransRegion);
         return true;
     }
+
+    if (mDisableExtAnimation) {
+        /* Remove screenShotSurface from secondary displays when ext animation disabled */
+        const int screenShotLen = strlen("ScreenshotSurface");
+        if (dpy && !strncmp(layer->getName(), "ScreenshotSurface", screenShotLen) ) {
+            Region visibleNonTransRegion;
+            visibleNonTransRegion.set(Rect(0, 0));
+            layer->setVisibleNonTransparentRegion(visibleNonTransRegion);
+            return true;
+        }
+    }
+
     return false;
 }
 
@@ -181,7 +193,8 @@ bool ExSurfaceFlinger::canDrawLayerinScreenShot(
        && !layer->isProtected()
        && !(!dispType && (layer->isExtOnly() ||
           (isExtendedMode() && layer->isYuvLayer())))
-       && layer->isVisible() ){
+       && !(layer->isIntOnly() && dispType)
+       && layer->isVisible()){
         return true;
     }
     return false;