diff options
| -rw-r--r-- | libs/dumputils/dump_utils.cpp | 2 | ||||
| -rw-r--r-- | services/surfaceflinger/Android.bp | 2 | ||||
| -rw-r--r-- | services/surfaceflinger/FrontEnd/TransactionHandler.cpp (renamed from services/surfaceflinger/TransactionHandler.cpp) | 0 | ||||
| -rw-r--r-- | services/surfaceflinger/FrontEnd/TransactionHandler.h (renamed from services/surfaceflinger/TransactionHandler.h) | 0 | ||||
| -rw-r--r-- | services/surfaceflinger/Layer.cpp | 5 | ||||
| -rw-r--r-- | services/surfaceflinger/Layer.h | 6 | ||||
| -rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 2 | ||||
| -rw-r--r-- | services/surfaceflinger/SurfaceFlinger.h | 2 | ||||
| -rw-r--r-- | services/surfaceflinger/Tracing/tools/main.cpp | 4 | ||||
| -rw-r--r-- | services/surfaceflinger/tests/unittests/TransactionApplicationTest.cpp | 2 |
10 files changed, 18 insertions, 7 deletions
diff --git a/libs/dumputils/dump_utils.cpp b/libs/dumputils/dump_utils.cpp index a6585c5ad2..067ce17c33 100644 --- a/libs/dumputils/dump_utils.cpp +++ b/libs/dumputils/dump_utils.cpp @@ -208,5 +208,5 @@ bool IsZygote(int pid) { cmdline = std::string(cmdline.c_str()); return cmdline == "zygote" || cmdline == "zygote64" || cmdline == "usap32" || - cmdline == "usap64"; + cmdline == "usap64" || cmdline == "webview_zygote"; } diff --git a/services/surfaceflinger/Android.bp b/services/surfaceflinger/Android.bp index 67a226e24c..c9c0143c7d 100644 --- a/services/surfaceflinger/Android.bp +++ b/services/surfaceflinger/Android.bp @@ -155,6 +155,7 @@ filegroup { "DisplayRenderArea.cpp", "Effects/Daltonizer.cpp", "EventLog/EventLog.cpp", + "FrontEnd/TransactionHandler.cpp", "FlagManager.cpp", "FpsReporter.cpp", "FrameTracer/FrameTracer.cpp", @@ -193,7 +194,6 @@ filegroup { "Tracing/TransactionTracing.cpp", "Tracing/TransactionProtoParser.cpp", "TransactionCallbackInvoker.cpp", - "TransactionHandler.cpp", "TunnelModeEnabledReporter.cpp", ], } diff --git a/services/surfaceflinger/TransactionHandler.cpp b/services/surfaceflinger/FrontEnd/TransactionHandler.cpp index 6c6a487b67..6c6a487b67 100644 --- a/services/surfaceflinger/TransactionHandler.cpp +++ b/services/surfaceflinger/FrontEnd/TransactionHandler.cpp diff --git a/services/surfaceflinger/TransactionHandler.h b/services/surfaceflinger/FrontEnd/TransactionHandler.h index 237b48d55f..237b48d55f 100644 --- a/services/surfaceflinger/TransactionHandler.h +++ b/services/surfaceflinger/FrontEnd/TransactionHandler.h diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp index b517568e73..d4660ff132 100644 --- a/services/surfaceflinger/Layer.cpp +++ b/services/surfaceflinger/Layer.cpp @@ -1294,7 +1294,6 @@ std::shared_ptr<frametimeline::SurfaceFrame> Layer::createSurfaceFrameForBuffer( if (fps) { surfaceFrame->setRenderRate(*fps); } - // TODO(b/178542907): Implement onSurfaceFrameCreated for BQLayer as well. onSurfaceFrameCreated(surfaceFrame); return surfaceFrame; } @@ -2703,6 +2702,10 @@ void Layer::onLayerDisplayed(ftl::SharedFuture<FenceResult> futureFenceResult) { void Layer::onSurfaceFrameCreated( const std::shared_ptr<frametimeline::SurfaceFrame>& surfaceFrame) { + if (!hasBufferOrSidebandStreamInDrawing()) { + return; + } + while (mPendingJankClassifications.size() >= kPendingClassificationMaxSurfaceFrames) { // Too many SurfaceFrames pending classification. The front of the deque is probably not // tracked by FrameTimeline and will never be presented. This will only result in a memory diff --git a/services/surfaceflinger/Layer.h b/services/surfaceflinger/Layer.h index 7e46d1c6d5..b2d7cbcea3 100644 --- a/services/surfaceflinger/Layer.h +++ b/services/surfaceflinger/Layer.h @@ -1082,6 +1082,10 @@ private: return ((mSidebandStream != nullptr) || (mBufferInfo.mBuffer != nullptr)); } + bool hasBufferOrSidebandStreamInDrawing() const { + return ((mDrawingState.sidebandStream != nullptr) || (mDrawingState.buffer != nullptr)); + } + bool hasSomethingToDraw() const { return hasEffect() || hasBufferOrSidebandStream(); } void updateChildrenSnapshots(bool updateGeometry); @@ -1157,7 +1161,7 @@ private: std::deque<std::shared_ptr<android::frametimeline::SurfaceFrame>> mPendingJankClassifications; // An upper bound on the number of SurfaceFrames in the pending classifications deque. - static constexpr int kPendingClassificationMaxSurfaceFrames = 25; + static constexpr int kPendingClassificationMaxSurfaceFrames = 50; const std::string mBlastTransactionName{"BufferTX - " + mName}; // This integer is incremented everytime a buffer arrives at the server for this layer, diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index f3148cb3f4..6cd57c4e53 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -7764,7 +7764,7 @@ status_t SurfaceComposerAIDL::checkControlDisplayBrightnessPermission() { IPCThreadState* ipc = IPCThreadState::self(); const int pid = ipc->getCallingPid(); const int uid = ipc->getCallingUid(); - if ((uid != AID_GRAPHICS) && + if ((uid != AID_GRAPHICS) && (uid != AID_SYSTEM) && !PermissionCache::checkPermission(sControlDisplayBrightness, pid, uid)) { ALOGE("Permission Denial: can't control brightness pid=%d, uid=%d", pid, uid); return PERMISSION_DENIED; diff --git a/services/surfaceflinger/SurfaceFlinger.h b/services/surfaceflinger/SurfaceFlinger.h index d403f4754f..674f21f77e 100644 --- a/services/surfaceflinger/SurfaceFlinger.h +++ b/services/surfaceflinger/SurfaceFlinger.h @@ -65,6 +65,7 @@ #include "DisplayIdGenerator.h" #include "Effects/Daltonizer.h" #include "FlagManager.h" +#include "FrontEnd/TransactionHandler.h" #include "LayerVector.h" #include "Scheduler/RefreshRateConfigs.h" #include "Scheduler/RefreshRateStats.h" @@ -75,7 +76,6 @@ #include "Tracing/LayerTracing.h" #include "Tracing/TransactionTracing.h" #include "TransactionCallbackInvoker.h" -#include "TransactionHandler.h" #include "TransactionState.h" #include <atomic> diff --git a/services/surfaceflinger/Tracing/tools/main.cpp b/services/surfaceflinger/Tracing/tools/main.cpp index f3cf42d7ab..9f9ae4815b 100644 --- a/services/surfaceflinger/Tracing/tools/main.cpp +++ b/services/surfaceflinger/Tracing/tools/main.cpp @@ -52,6 +52,10 @@ int main(int argc, char** argv) { ; ALOGD("Generating %s...", outputLayersTracePath); std::cout << "Generating " << outputLayersTracePath << "\n"; + + // sink any log spam from the stubbed surfaceflinger + __android_log_set_logger([](const struct __android_log_message* /* log_message */) {}); + if (!LayerTraceGenerator().generate(transactionTraceFile, outputLayersTracePath)) { std::cout << "Error: Failed to generate layers trace " << outputLayersTracePath; return -1; diff --git a/services/surfaceflinger/tests/unittests/TransactionApplicationTest.cpp b/services/surfaceflinger/tests/unittests/TransactionApplicationTest.cpp index db438b70ab..de84faa5d2 100644 --- a/services/surfaceflinger/tests/unittests/TransactionApplicationTest.cpp +++ b/services/surfaceflinger/tests/unittests/TransactionApplicationTest.cpp @@ -30,8 +30,8 @@ #include <vector> #include <binder/Binder.h> +#include "FrontEnd/TransactionHandler.h" #include "TestableSurfaceFlinger.h" -#include "TransactionHandler.h" #include "mock/MockEventThread.h" #include "mock/MockVsyncController.h" |