LayerTraceGenerator: Skip updating transform hint if display is not found
Special case for LayerTraceGenerator where we do not mock a display,
we just ignore updating the transform hint instead.
Test: atest transactiontrace_testsuite
Bug: 235376060
Change-Id: I5313bc26703cd52e36c7eb6f86f139a2752d40d1
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index f6f71ae..3043809 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -3199,7 +3199,7 @@
}
}
- if (!hintDisplay) {
+ if (!hintDisplay && mDisplays.size() > 0) {
// NOTE: TEMPORARY FIX ONLY. Real fix should cause layers to
// redraw after transform hint changes. See bug 8508397.
@@ -3209,7 +3209,11 @@
hintDisplay = getDefaultDisplayDeviceLocked();
}
- layer->updateTransformHint(hintDisplay->getTransformHint());
+ if (hintDisplay) {
+ layer->updateTransformHint(hintDisplay->getTransformHint());
+ } else {
+ ALOGW("Ignoring transform hint update for %s", layer->getDebugName());
+ }
});
}
diff --git a/services/surfaceflinger/tests/tracing/testdata/layers_trace_nodisplayfound.winscope b/services/surfaceflinger/tests/tracing/testdata/layers_trace_nodisplayfound.winscope
new file mode 100644
index 0000000..16a91ee
--- /dev/null
+++ b/services/surfaceflinger/tests/tracing/testdata/layers_trace_nodisplayfound.winscope
Binary files differ
diff --git a/services/surfaceflinger/tests/tracing/testdata/transactions_trace_nodisplayfound.winscope b/services/surfaceflinger/tests/tracing/testdata/transactions_trace_nodisplayfound.winscope
new file mode 100644
index 0000000..cd62ab8
--- /dev/null
+++ b/services/surfaceflinger/tests/tracing/testdata/transactions_trace_nodisplayfound.winscope
Binary files differ