summaryrefslogtreecommitdiff
path: root/services/surfaceflinger/Layer.cpp
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2016-07-21 05:27:24 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2016-07-21 05:27:24 +0000
commitd16f6ae2bd1083ee29717829a39e93908bba2bf5 (patch)
tree7134883e1e5d0a6eb22e6c35087cbffd526aedf6 /services/surfaceflinger/Layer.cpp
parentf42ca4da5be95b67747055f8d9d96c2323863e60 (diff)
parentc5da271eec001da9e11a2786f2618a45257439c3 (diff)
Merge "HWC2: Add properties to revert latching changes" into nyc-mr1-dev
Diffstat (limited to 'services/surfaceflinger/Layer.cpp')
-rw-r--r--services/surfaceflinger/Layer.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp
index 548b048e29..30a4d79c5b 100644
--- a/services/surfaceflinger/Layer.cpp
+++ b/services/surfaceflinger/Layer.cpp
@@ -51,6 +51,8 @@
#include "RenderEngine/RenderEngine.h"
+#include <mutex>
+
#define DEBUG_RESIZE 0
namespace android {
@@ -1091,6 +1093,20 @@ uint32_t Layer::getProducerStickyTransform() const {
return static_cast<uint32_t>(producerStickyTransform);
}
+bool Layer::latchUnsignaledBuffers() {
+ static bool propertyLoaded = false;
+ static bool latch = false;
+ static std::mutex mutex;
+ std::lock_guard<std::mutex> lock(mutex);
+ if (!propertyLoaded) {
+ char value[PROPERTY_VALUE_MAX] = {};
+ property_get("debug.sf.latch_unsignaled", value, "0");
+ latch = atoi(value);
+ propertyLoaded = true;
+ }
+ return latch;
+}
+
uint64_t Layer::getHeadFrameNumber() const {
Mutex::Autolock lock(mQueueItemLock);
if (!mQueueItems.empty()) {
@@ -1102,6 +1118,10 @@ uint64_t Layer::getHeadFrameNumber() const {
bool Layer::headFenceHasSignaled() const {
#ifdef USE_HWC2
+ if (latchUnsignaledBuffers()) {
+ return true;
+ }
+
Mutex::Autolock lock(mQueueItemLock);
if (mQueueItems.empty()) {
return true;